diff --git a/Automation/Tests/ConfigurationUpdate/ConfigurationUpdate_prepartations_tests.robot b/Automation/Tests/ConfigurationUpdate/ConfigurationUpdate_prepartations_tests.robot
new file mode 100644
index 0000000..849052d
--- /dev/null
+++ b/Automation/Tests/ConfigurationUpdate/ConfigurationUpdate_prepartations_tests.robot
@@ -0,0 +1,58 @@
+##############################################################################
+#
+#   Copyright (c) 2019 AT&T Intellectual Property.
+#
+#   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 ***
+Suite Setup   Prepare Enviorment
+Resource   ../Resource/resource.robot
+Resource   ../Resource/Keywords.robot
+Library     OperatingSystem
+Library     REST      ${url}
+
+
+*** Variables ***
+${Run_Config}       docker exec gnbe2_simu pkill gnbe2_simu -INT
+${Save_e2_log}      docker logs --tail 300 gnbe2_simu > gnb.log
+${Save_e2mgr_log}   docker logs --tail 300 e2mgr > e2mgr.log
+
+*** Test Cases ***
+X2 - Setup and Get
+    Post Request setup node b x-2
+    Get Request node b enb test1
+
+
+Run Configuration update
+    Run    ${Run_Config}
+    Sleep   1s
+
+Remove log files
+    Remove File  ${EXECDIR}/gnb.log
+    Remove File  ${EXECDIR}/e2mgr.log
+
+Save logs
+    Sleep   1s
+    Run     ${Save_e2_log}
+    Run     ${Save_e2mgr_log}
+
+
+
+
+
+
+
+
diff --git a/Automation/Tests/ENDC-Setup/ENDC_Setup_request_test.robot b/Automation/Tests/ENDC-Setup/ENDC_Setup_request_test.robot
index afe843d..ff7b4f5 100755
--- a/Automation/Tests/ENDC-Setup/ENDC_Setup_request_test.robot
+++ b/Automation/Tests/ENDC-Setup/ENDC_Setup_request_test.robot
@@ -17,6 +17,7 @@
 ##############################################################################
 
 *** Settings ***
+Suite Setup   Prepare Enviorment
 Resource   ../Resource/resource.robot
 Resource   ../Resource/Keywords.robot
 Library     OperatingSystem
diff --git a/Automation/Tests/Get-All-Nodes-Real/Get_all_nodes_run_setup_and_get_all.robot b/Automation/Tests/Get-All-Nodes-Real/Get_all_nodes_run_setup_and_get_all.robot
index b9078b4..0277458 100755
--- a/Automation/Tests/Get-All-Nodes-Real/Get_all_nodes_run_setup_and_get_all.robot
+++ b/Automation/Tests/Get-All-Nodes-Real/Get_all_nodes_run_setup_and_get_all.robot
@@ -17,6 +17,7 @@
 ##############################################################################
 
 *** Settings ***
+Suite Setup  Prepare Enviorment
 Library      Process
 Resource   ../Resource/resource.robot
 Resource   ../Resource/Keywords.robot
@@ -28,6 +29,7 @@
 Run x2 setup
     Post Request setup node b x-2
     Integer     response status       200
+    Sleep  2s
     GET      /v1/nodeb/test1
     Integer  response status  200
     String   response body ranName    test1
@@ -38,6 +40,7 @@
 Run endc setup
     Post Request setup node b endc-setup
     Integer     response status       200
+    Sleep  2s
     GET      /v1/nodeb/test2
     Integer  response status  200
     String   response body ranName    test2
@@ -47,7 +50,7 @@
 
 Get all node ids
     GET     v1/nodeb/ids
-    #Output
+    Sleep  2s
     Integer  response status   200
     String   response body 0 inventoryName  test1
     String   response body 0 globalNbId plmnId   02f829
@@ -55,3 +58,11 @@
     String   response body 1 inventoryName  test2
     String   response body 1 globalNbId plmnId   42f490
     String   response body 1 globalNbId nbId     000004
+
+
+
+
+
+
+
+
diff --git a/Automation/Tests/Get-All-Nodes/Get_nodes_Add_nodes_and_get.robot b/Automation/Tests/Get-All-Nodes/Get_nodes_Add_nodes_and_get.robot
index adbc73d..0f77a7a 100755
--- a/Automation/Tests/Get-All-Nodes/Get_nodes_Add_nodes_and_get.robot
+++ b/Automation/Tests/Get-All-Nodes/Get_nodes_Add_nodes_and_get.robot
@@ -17,11 +17,12 @@
 ##############################################################################
 
 *** Settings ***
-Suite Setup  Flush Redis
+Suite Setup   Prepare Enviorment
 Library      Process
 Resource   ../Resource/resource.robot
+Resource   ../Resource/Keywords.robot
 Library     OperatingSystem
-Library     ${CURDIR}/scripts.py
+Library     ${CURDIR}/getnodes.py
 Library     REST      ${url}
 
 
@@ -29,7 +30,7 @@
 
 *** Test Cases ***
 Add nodes to redis db
-    ${result}   scripts.add
+    ${result}   getnodes.add
     Should Be Equal As Strings  ${result}  True
 
 
@@ -45,7 +46,10 @@
 
 
 
-*** Keywords ***
-Flush Redis
-    ${result}   scripts.flush
-    Should Be Equal As Strings  ${result}  True
+
+
+
+
+
+
+
diff --git a/Automation/Tests/Get-All-Nodes/getnodes.py b/Automation/Tests/Get-All-Nodes/getnodes.py
new file mode 100644
index 0000000..e358fed
--- /dev/null
+++ b/Automation/Tests/Get-All-Nodes/getnodes.py
@@ -0,0 +1,54 @@
+##############################################################################
+#
+#   Copyright (c) 2019 AT&T Intellectual Property.
+#
+#   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.
+#
+##############################################################################
+
+import config
+import redis
+
+
+def add():
+
+    c = config.redis_ip_address
+
+    p = config.redis_ip_port
+
+    r = redis.Redis(host=c, port=p, db=0)
+
+    r.flushall()
+
+    r.set("{e2Manager},ENB:02f829:007a80", "\n\x05test1\x12\t10.0.2.15\x18\xc9+ \x01*\x10\n\x0602f829\x12\x06007a800\x01:3\b\x01\x12/\bc\x12\x0f02f829:0007ab50\x1a\x040102\"\x0602f829*\n\n\b\b\x01\x10\x01\x18\x04 \x040\x01")
+
+    r.set("{e2Manager},RAN:test1","\x12\t10.0.2.15\x18\xc9+ \x03H\x01R\x02\b\t")
+
+    r.set("{e2Manager},PCI:test1:63" , "\b\x01\x12/\bc\x12\x0f02f829:0007ab50\x1a\x040102\"\x0602f829*\n\n\b\b\x01\x10\x01\x18\x04 \x040\x01")
+
+    r.set("{e2Manager},CELL:02f829:0007ab50" ,  "\b\x01\x12/\bc\x12\x0f02f829:0007ab50\x1a\x040102\"\x0602f829*\n\n\b\b\x01\x10\x01\x18\x04 \x040\x01")
+
+    r.sadd("{e2Manager},ENB" , "\n\x05test1\x12\x10\n\x0602f829\x12\x06007a80")
+
+
+    r.set("{e2Manager},GNB:03f829:002234", "\n\x05test2\x12\t10.0.2.16\x18\xc9+ \x01*\x10\n\x0702f829\x12\x070012340\x02BI\nG\nE\bc\x12\x1102f829:0008ab0120*\x0602f8290\x01:$\n\"\n\t\bd\"\x05\b\t\x12\x01\t\x12\t\bd\"\x05\b\t\x12\x01\t\x1a\x04\b\x01\x10\x01\"\x04\b\x01\x10\x01")
+
+    r.set("{e2Manager},RAN:test2", "\n\x05test2\x12\t10.0.2.15\x18\xc9+ \x01*\x10\n\x0702f829\x12\x070012340\x03BI\nG\nE\bc\x12\x1103f829:0008ab0120*\x0602f8290\x01:$\n\"\n\t\bd\"\x05\b\t\x12\x01\t\x12\t\bd\"\x05\b\t\x12\x01\t\x1a\x04\b\x01\x10\x01\"\x04\b\x01\x10\x01")
+
+    r.set("{e2Manager},PCI:test2:63", "\b\x02\x1aG\nE\bc\x12\x1102f829:0008ab0120*\x0702f8290\x01:$\n\"\n\t\bd\"\x05\b\t\x12\x01\t\x12\t\bd\"\x05\b\t\x12\x01\t\x1a\x04\b\x01\x10\x01\"\x04\b\x01\x10\x01")
+
+    r.set("{e2Manager},NRCELL:02f829:0007ab0120", "\b\x02\x1aG\nE\bc\x12\x1102f829:0007ab0120*\x0602f8290\x01:$\n\"\n\t\bd\"\x05\b\t\x12\x01\t\x12\t\bd\"\x05\b\t\x12\x01\t\x1a\x04\b\x01\x10\x01\"\x04\b\x01\x10\x01")
+
+    r.sadd("{e2Manager},GNB","\n\x05test2\x12\x10\n\x0603f829\x12\x06001234")
+
+    return True
diff --git a/Automation/Tests/Health/get_health_check.robot b/Automation/Tests/Health/get_health_check.robot
index 6d05a8c..8cbacab 100755
--- a/Automation/Tests/Health/get_health_check.robot
+++ b/Automation/Tests/Health/get_health_check.robot
@@ -17,6 +17,8 @@
 ##############################################################################
 
 *** Settings ***
+Suite Setup   Prepare Enviorment
+Resource   ../Resource/Keywords.robot
 Resource   ../Resource/resource.robot
 Library     OperatingSystem
 Library     REST      ${url}
diff --git a/Automation/Tests/LoadInfomation/Loadinformation_adding_data_and_overwrite.robot b/Automation/Tests/LoadInfomation/Loadinformation_adding_data_and_overwrite.robot
new file mode 100644
index 0000000..3aab161
--- /dev/null
+++ b/Automation/Tests/LoadInfomation/Loadinformation_adding_data_and_overwrite.robot
@@ -0,0 +1,53 @@
+##############################################################################
+#
+#   Copyright (c) 2019 AT&T Intellectual Property.
+#
+#   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 ***
+Suite Setup  Prepare Simulator For Load Information
+Resource   ../Resource/resource.robot
+Resource   ../Resource/Keywords.robot
+Library     OperatingSystem
+Library     Collections
+Library     Process
+Library     ${CURDIR}/loadscripts.py
+Library     REST      ${url}
+
+
+
+*** Test Cases ***
+Verify Load information doesn't exist in redis
+    ${result}=     loadscripts.verify
+    Should Be Equal As Strings      ${result}   False
+
+Adding Load information to overwrite on
+   ${result}=   loadscripts.add
+   Should Be Equal As Strings  ${result}    True
+
+
+Trigger X-2 Setup for load information
+    Post Request setup node b x-2
+    Integer     response status       200
+    Sleep  1s
+    GET      /v1/nodeb/test1
+    Integer  response status  200
+    String   response body connectionStatus    CONNECTED
+
+
+Verify Load information does exist in redis
+   ${result}=   loadscripts.verify_value
+   Should Be Equal As Strings  ${result}    True
+
diff --git a/Automation/Tests/LoadInfomation/Loadinformation_verify_saving.robot b/Automation/Tests/LoadInfomation/Loadinformation_verify_saving.robot
new file mode 100644
index 0000000..0422dd1
--- /dev/null
+++ b/Automation/Tests/LoadInfomation/Loadinformation_verify_saving.robot
@@ -0,0 +1,53 @@
+##############################################################################
+#
+#   Copyright (c) 2019 AT&T Intellectual Property.
+#
+#   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 ***
+Suite Setup  Prepare Simulator For Load Information
+Resource   ../Resource/resource.robot
+Resource   ../Resource/Keywords.robot
+Library     OperatingSystem
+Library     Collections
+Library     Process
+Library     ${CURDIR}/loadscripts.py
+Library     REST      ${url}
+
+
+
+
+
+
+*** Test Cases ***
+Verify Load information doesn't exist in redis
+    ${result}=     loadscripts.verify
+    Should Be Equal As Strings      ${result}   False
+
+
+Trigger X-2 Setup for load information
+    Post Request setup node b x-2
+    Integer     response status       200
+    Sleep  1s
+    GET      /v1/nodeb/test1
+    Integer  response status  200
+    String   response body connectionStatus    CONNECTED
+
+
+Verify Load information does exist in redis
+    Sleep  2s
+    ${result}=     loadscripts.verify
+    Should Be Equal As Strings      ${result}   True
+
diff --git a/Automation/Tests/LoadInfomation/__init__.robot b/Automation/Tests/LoadInfomation/__init__.robot
new file mode 100644
index 0000000..427f239
--- /dev/null
+++ b/Automation/Tests/LoadInfomation/__init__.robot
@@ -0,0 +1,20 @@
+##############################################################################
+#
+#   Copyright (c) 2019 AT&T Intellectual Property.
+#
+#   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    ORAN Load Infomration scenarios
diff --git a/Automation/Tests/LoadInfomation/config.py b/Automation/Tests/LoadInfomation/config.py
new file mode 100644
index 0000000..b608bee
--- /dev/null
+++ b/Automation/Tests/LoadInfomation/config.py
@@ -0,0 +1,20 @@
+##############################################################################
+#
+#   Copyright (c) 2019 AT&T Intellectual Property.
+#
+#   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.
+#
+##############################################################################
+
+redis_ip_address = 'localhost'
+redis_ip_port = 6379
diff --git a/Automation/Tests/LoadInfomation/loadscripts.py b/Automation/Tests/LoadInfomation/loadscripts.py
new file mode 100644
index 0000000..8615384
--- /dev/null
+++ b/Automation/Tests/LoadInfomation/loadscripts.py
@@ -0,0 +1,67 @@
+##############################################################################
+#
+#   Copyright (c) 2019 AT&T Intellectual Property.
+#
+#   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.
+#
+##############################################################################
+
+
+import redis
+import config
+
+
+def verify_value():
+
+    c = config.redis_ip_address
+
+    p = config.redis_ip_port
+
+    r = redis.Redis(host=c, port=p, db=0)
+
+    value = "\b\x98\xf7\xdd\xa3\xc7\xb4\x83\xde\x15\x12\x11\n\x0f02f829:0007ab00"
+
+    if r.get("{e2Manager},LOAD:test1") != value:
+        return True
+    else:
+        return False
+
+
+def add():
+
+    c = config.redis_ip_address
+
+    p = config.redis_ip_port
+
+    r = redis.Redis(host=c, port=p, db=0)
+
+    r.set("{e2Manager},LOAD:test1", "\b\x98\xf7\xdd\xa3\xc7\xb4\x83\xde\x15\x12\x11\n\x0f02f829:0007ab00")
+
+    if r.exists("{e2Manager},LOAD:test1"):
+        return True
+    else:
+        return False
+
+
+def verify():
+
+    c = config.redis_ip_address
+
+    p = config.redis_ip_port
+
+    r = redis.Redis(host=c, port=p, db=0)
+
+    if r.exists("{e2Manager},LOAD:test1"):
+        return True
+    else:
+        return False
diff --git a/Automation/Tests/RedButton/RedButton_CONNECTED.robot b/Automation/Tests/RedButton/RedButton_CONNECTED.robot
index 9cf2f39..4887907 100755
--- a/Automation/Tests/RedButton/RedButton_CONNECTED.robot
+++ b/Automation/Tests/RedButton/RedButton_CONNECTED.robot
@@ -17,6 +17,7 @@
 ##############################################################################
 
 *** Settings ***
+Suite Setup   Prepare Enviorment
 Resource   ../Resource/resource.robot
 Resource   ../Resource/Keywords.robot
 Library     OperatingSystem
diff --git a/Automation/Tests/RedButton/RedButton_CONNECTED_SHUTDOWN_CONNECTED.robot b/Automation/Tests/RedButton/RedButton_CONNECTED_SHUTDOWN_CONNECTED.robot
index 23221d7..d546377 100755
--- a/Automation/Tests/RedButton/RedButton_CONNECTED_SHUTDOWN_CONNECTED.robot
+++ b/Automation/Tests/RedButton/RedButton_CONNECTED_SHUTDOWN_CONNECTED.robot
@@ -17,6 +17,7 @@
 ##############################################################################
 
 *** Settings ***
+Suite Setup   Prepare Enviorment
 Resource   ../Resource/resource.robot
 Resource   ../Resource/Keywords.robot
 Library     OperatingSystem
diff --git a/Automation/Tests/RedButton/RedButton_CONNECTING.robot b/Automation/Tests/RedButton/RedButton_CONNECTING.robot
index 7d317c1..bf38ec0 100755
--- a/Automation/Tests/RedButton/RedButton_CONNECTING.robot
+++ b/Automation/Tests/RedButton/RedButton_CONNECTING.robot
@@ -16,14 +16,13 @@
 #
 ##############################################################################
 *** Settings ***
+Suite Setup   Prepare Enviorment
 Resource   ../Resource/resource.robot
 Resource   ../Resource/Keywords.robot
 Library     OperatingSystem
 Library    Collections
 Library     REST      ${url}
-
-*** Variables ***
-${stop_docker_e2}      docker stop e2
+Suite Teardown   Start E2
 
 
 
@@ -47,7 +46,7 @@
 
 Disconnect Ran
    PUT    /v1/nodeb/shutdown
-   Integer   response status   204
+   Integer   response status   500
 
 
 Verfiy Shutdown ConnectionStatus
@@ -55,5 +54,5 @@
     GET      /v1/nodeb/test1
     Integer  response status  200
     String   response body ranName    test1
-    String   response body connectionStatus    SHUT_DOWN
+    String   response body connectionStatus    SHUTTING_DOWN
 
diff --git a/Automation/Tests/RedButton/RedButton_CONNECTION_FAILURE.robot b/Automation/Tests/RedButton/RedButton_CONNECTION_FAILURE.robot
index 581aa81..0516030 100755
--- a/Automation/Tests/RedButton/RedButton_CONNECTION_FAILURE.robot
+++ b/Automation/Tests/RedButton/RedButton_CONNECTION_FAILURE.robot
@@ -17,6 +17,7 @@
 ##############################################################################
 
 *** Settings ***
+Suite Setup   Prepare Enviorment
 Resource   ../Resource/resource.robot
 Resource   ../Resource/Keywords.robot
 Library     OperatingSystem
diff --git a/Automation/Tests/RedButton/RedButton_DISCONNECTED.robot b/Automation/Tests/RedButton/RedButton_DISCONNECTED.robot
index 575fbad..b9a021f 100755
--- a/Automation/Tests/RedButton/RedButton_DISCONNECTED.robot
+++ b/Automation/Tests/RedButton/RedButton_DISCONNECTED.robot
@@ -16,6 +16,7 @@
 #
 ##############################################################################
 *** Settings ***
+Suite Setup   Prepare Enviorment
 Resource   ../Resource/resource.robot
 Resource   ../Resource/Keywords.robot
 Library     OperatingSystem
diff --git a/Automation/Tests/RedButton/RedButton_SHUTDOWN_SHUTDOWN.robot b/Automation/Tests/RedButton/RedButton_SHUTDOWN_SHUTDOWN.robot
index 187d56a..1bbe20f 100755
--- a/Automation/Tests/RedButton/RedButton_SHUTDOWN_SHUTDOWN.robot
+++ b/Automation/Tests/RedButton/RedButton_SHUTDOWN_SHUTDOWN.robot
@@ -17,6 +17,7 @@
 ##############################################################################
 
 *** Settings ***
+Suite Setup   Prepare Enviorment
 Resource   ../Resource/resource.robot
 Resource   ../Resource/Keywords.robot
 Library     OperatingSystem
diff --git a/Automation/Tests/Reset_RIC_TO_RAN/Reset_Happy_no_cause.robot b/Automation/Tests/Reset_RIC_TO_RAN/Reset_Happy_no_cause.robot
index 13eeafd..e5de9ce 100755
--- a/Automation/Tests/Reset_RIC_TO_RAN/Reset_Happy_no_cause.robot
+++ b/Automation/Tests/Reset_RIC_TO_RAN/Reset_Happy_no_cause.robot
@@ -17,6 +17,7 @@
 ##############################################################################
 
 *** Settings ***
+Suite Setup   Prepare Enviorment
 Resource   ../Resource/resource.robot
 Resource   ../Resource/Keywords.robot
 Library     OperatingSystem
diff --git a/Automation/Tests/Reset_RIC_TO_RAN/Reset_Happy_with_cause.robot b/Automation/Tests/Reset_RIC_TO_RAN/Reset_Happy_with_cause.robot
index 651b218..2a64b09 100755
--- a/Automation/Tests/Reset_RIC_TO_RAN/Reset_Happy_with_cause.robot
+++ b/Automation/Tests/Reset_RIC_TO_RAN/Reset_Happy_with_cause.robot
@@ -17,6 +17,7 @@
 ##############################################################################
 
 *** Settings ***
+Suite Setup   Prepare Enviorment
 Resource   ../Resource/resource.robot
 Resource   ../Resource/Keywords.robot
 Library     OperatingSystem
diff --git a/Automation/Tests/Reset_RIC_TO_RAN/Reset_unhappy.robot b/Automation/Tests/Reset_RIC_TO_RAN/Reset_unhappy.robot
index 546a92d..587ded7 100755
--- a/Automation/Tests/Reset_RIC_TO_RAN/Reset_unhappy.robot
+++ b/Automation/Tests/Reset_RIC_TO_RAN/Reset_unhappy.robot
@@ -16,6 +16,7 @@
 #
 ##############################################################################
 *** Settings ***
+Suite Setup   Prepare Enviorment
 Resource   ../Resource/resource.robot
 Resource   ../Resource/Keywords.robot
 Library     OperatingSystem
diff --git a/Automation/Tests/Resource/Keywords.robot b/Automation/Tests/Resource/Keywords.robot
index e5af3d3..20b4e3a 100755
--- a/Automation/Tests/Resource/Keywords.robot
+++ b/Automation/Tests/Resource/Keywords.robot
@@ -18,20 +18,17 @@
 
 *** Settings ***
 Documentation   Keywords file
+Library     ${CURDIR}/scripts.py
 Resource   ../Resource/resource.robot
 Library     OperatingSystem
 
 
-
-
-
 *** Keywords ***
 Post Request setup node b x-2
     Set Headers     ${header}
     POST        /v1/nodeb/x2-setup    ${json}
 
 
-
 Get Request node b enb test1
     Sleep    1s
     GET      /v1/nodeb/test1
@@ -41,8 +38,6 @@
     Sleep    1s
     GET      /v1/nodeb/test2
 
-
-
 Post Request setup node b endc-setup
     Set Headers     ${header}
     POST        /v1/nodeb/endc-setup    ${endcjson}
@@ -51,8 +46,35 @@
 Prepare Simulator For Load Information
      Run And Return Rc And Output    ${stop_simu}
      Run And Return Rc And Output    ${docker_Remove}
-     Run And Return Rc And Output    ${run_simu}
+     ${flush}  scripts.flush
+     Should Be Equal As Strings  ${flush}  True
+     Run And Return Rc And Output    ${run_simu_load}
      ${result}=  Run And Return Rc And Output     ${docker_command}
      Should Be Equal As Integers    ${result[1]}    5
 
+Prepare Enviorment
+     ${flush}  scripts.flush
+     Should Be Equal As Strings  ${flush}  True
+     Run And Return Rc And Output    ${stop_simu}
+     Run And Return Rc And Output    ${docker_Remove}
+     Run And Return Rc And Output    ${run_simu_regular}
+     Run And Return Rc And Output    ${restart_e2adapter}
+     ${result}=  Run And Return Rc And Output     ${docker_command}
+     Should Be Equal As Integers    ${result[1]}    5
+
+Start E2
+     Run And Return Rc And Output    ${start_e2}
+     ${result}=  Run And Return Rc And Output     ${docker_command}
+     Should Be Equal As Integers    ${result[1]}    5
+     Sleep  2s
+
+Start Redis
+     Run And Return Rc And Output    ${redis_remove}
+     Run And Return Rc And Output    ${start_redis}
+     ${result}=  Run And Return Rc And Output     ${docker_command}
+     Should Be Equal As Integers    ${result[1]}    5
+
+
+
+
 
diff --git a/Automation/Tests/Resource/config.py b/Automation/Tests/Resource/config.py
new file mode 100644
index 0000000..b608bee
--- /dev/null
+++ b/Automation/Tests/Resource/config.py
@@ -0,0 +1,20 @@
+##############################################################################
+#
+#   Copyright (c) 2019 AT&T Intellectual Property.
+#
+#   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.
+#
+##############################################################################
+
+redis_ip_address = 'localhost'
+redis_ip_port = 6379
diff --git a/Automation/Tests/Resource/configuration.yaml b/Automation/Tests/Resource/configuration.yaml
new file mode 100644
index 0000000..676daf3
--- /dev/null
+++ b/Automation/Tests/Resource/configuration.yaml
@@ -0,0 +1,10 @@
+logging:
+  logLevel: info
+http:
+  port: 3800
+rmr:
+  port: 3801
+  maxMsgSize: 4096
+notificationResponseBuffer: 100
+bigRedButtonTimeoutSec: 5
+maxConnectionAttempts: 300
diff --git a/Automation/Tests/Resource/resource.robot b/Automation/Tests/Resource/resource.robot
index 2110d8d..9382db5 100755
--- a/Automation/Tests/Resource/resource.robot
+++ b/Automation/Tests/Resource/resource.robot
@@ -27,6 +27,18 @@
 ${resetcausejson}   {"cause": "misc:not-enough-user-plane-processing-resources"}
 ${header}  {"Content-Type": "application/json"}
 ${docker_command}  docker ps | grep 1.0 | wc --lines
-${run_simu}   docker run -d --name gnbe2_simu --env gNBipv4=localhost  --env gNBport=36422  --env duration=600000000000 --env indicationReportRate=1000000000 --env indicationInsertRate=0 -p 5577:36422/sctp snapshot.docker.ranco-dev-tools.eastus.cloudapp.azure.com:10001/gnbe2_sim:1.0.5
+${run_simu_load}   docker run -d --name gnbe2_simu --env gNBipv4=localhost  --env gNBport=36422  --env duration=600000000000 --env indicationReportRate=1000000000 --env indicationInsertRate=0 -p 5577:36422/sctp snapshot.docker.ranco-dev-tools.eastus.cloudapp.azure.com:10001/gnbe2_sim:1.0.5
 ${stop_simu}  docker stop gnbe2_simu
+${run_simu_regular}  docker run -d --name gnbe2_simu --env gNBipv4=localhost  --env gNBport=36422 --env duration=600000000000 --env indicationReportRate=0 --env indicationInsertRate=0 -p 5577:36422/sctp snapshot.docker.ranco-dev-tools.eastus.cloudapp.azure.com:10001/gnbe2_sim:1.0.5
 ${docker_Remove}    docker rm gnbe2_simu
+${docker_cp}        docker cp ../Resource/configuration.yaml e2mgr:/opt/E2Manager/resources/configuration.yaml
+${docker_restart}   docker restart e2mgr
+${restart_simu}  docker restart gnbe2_simu
+${restart_e2adapter}  docker restart e2adapter
+${start_e2}  docker start e2
+${stop_docker_e2}      docker stop e2
+${start_redis}   docker run -d --name redis -p 6379:6379 --env DBAAS_SERVICE_HOST=10.0.2.15  snapshot.docker.ranco-dev-tools.eastus.cloudapp.azure.com:10001/dbass:1.0.0
+${redis_remove}    docker rm redis
+
+
+
diff --git a/Automation/Tests/Resource/scripts.py b/Automation/Tests/Resource/scripts.py
new file mode 100644
index 0000000..49ebca5
--- /dev/null
+++ b/Automation/Tests/Resource/scripts.py
@@ -0,0 +1,33 @@
+##############################################################################
+#
+#   Copyright (c) 2019 AT&T Intellectual Property.
+#
+#   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.
+#
+##############################################################################
+import config
+import redis
+
+
+def flush():
+
+    c = config.redis_ip_address
+
+    p = config.redis_ip_port
+
+    r = redis.Redis(host=c, port=p, db=0)
+
+    r.flushall()
+
+    return True
+
diff --git a/Automation/Tests/Unhappy/Resource_not_found.robot b/Automation/Tests/Unhappy/Resource_not_found.robot
index a026317..50fbf3f 100755
--- a/Automation/Tests/Unhappy/Resource_not_found.robot
+++ b/Automation/Tests/Unhappy/Resource_not_found.robot
@@ -17,6 +17,8 @@
 ##############################################################################
 
 *** Settings ***
+Suite Setup   Prepare Enviorment
+Resource   ../Resource/Keywords.robot
 Resource   ../Resource/resource.robot
 Library     OperatingSystem
 Library     REST      ${url}
diff --git a/Automation/Tests/Unhappy/Response400.robot b/Automation/Tests/Unhappy/Response400.robot
index 088792d..e4262e4 100755
--- a/Automation/Tests/Unhappy/Response400.robot
+++ b/Automation/Tests/Unhappy/Response400.robot
@@ -17,6 +17,8 @@
 ##############################################################################
 
 *** Settings ***
+Suite Setup   Prepare Enviorment
+Resource   ../Resource/Keywords.robot
 Resource   ../Resource/resource.robot
 Library     OperatingSystem
 Library     REST      ${url}
diff --git a/Automation/Tests/Unhappy/Response500.robot b/Automation/Tests/Unhappy/Response500.robot
index 2ae4897..1e99b83 100755
--- a/Automation/Tests/Unhappy/Response500.robot
+++ b/Automation/Tests/Unhappy/Response500.robot
@@ -17,9 +17,12 @@
 ##############################################################################
 
 *** Settings ***
+Suite Setup   Prepare Enviorment
+Resource   ../Resource/Keywords.robot
 Resource   ../Resource/resource.robot
 Library     OperatingSystem
 Library     REST      ${url}
+Suite Teardown   Start Redis
 
 *** Test Cases ***
 Get Request node b gnb - DB down - 500
@@ -27,9 +30,3 @@
     GET      /v1/nodeb/test5
     Integer  response status   500
 
-
-*** Keywords ***
-Start dockers
-     Run And Return Rc And Output    ${run_script}
-     ${result}=  Run And Return Rc And Output     ${docker_command}
-     Should Be Equal As Integers    ${result[1]}    5
\ No newline at end of file
diff --git a/Automation/Tests/Unhappy/Setup_failure.robot b/Automation/Tests/Unhappy/Setup_failure.robot
index 8e5d7c4..a53abd1 100755
--- a/Automation/Tests/Unhappy/Setup_failure.robot
+++ b/Automation/Tests/Unhappy/Setup_failure.robot
@@ -17,6 +17,8 @@
 ##############################################################################
 
 *** Settings ***
+Suite Setup   Prepare Enviorment
+Resource   ../Resource/Keywords.robot
 Resource   ../Resource/resource.robot
 Library     OperatingSystem
 Library     REST        ${url}
diff --git a/Automation/Tests/X2-Setup/X2_Setup_reuqest_test.robot b/Automation/Tests/X2-Setup/X2_Setup_reuqest_test.robot
index cec8e84..08ed01b 100755
--- a/Automation/Tests/X2-Setup/X2_Setup_reuqest_test.robot
+++ b/Automation/Tests/X2-Setup/X2_Setup_reuqest_test.robot
@@ -17,7 +17,7 @@
 ##############################################################################
 
 *** Settings ***
-
+Suite Setup   Prepare Enviorment
 Resource   ../Resource/resource.robot
 Resource   ../Resource/Keywords.robot
 Library     OperatingSystem
