diff --git a/test/csit/tests/dcaegen2/prh-testcases/prh_tests.robot b/test/csit/tests/dcaegen2/prh-testcases/prh_tests.robot
index 1504895..b7013c4 100644
--- a/test/csit/tests/dcaegen2/prh-testcases/prh_tests.robot
+++ b/test/csit/tests/dcaegen2/prh-testcases/prh_tests.robot
@@ -1,7 +1,7 @@
 *** Settings ***
 Documentation     Integration tests for PRH.
 ...               PRH receive events from DMaaP and produce or not PNF_READY notification depends on required fields in received event.
-Suite Setup       Run keywords    Create headers 
+Suite Setup       Run keywords    Create header 
 ...                               Create sessions
 Library           resources/PrhLibrary.py
 Resource          resources/prh_library.robot
@@ -46,8 +46,8 @@
     [Documentation]    PRH get valid event from DMaaP with all required fields and in AAI record doesn't exist - PRH does not produce PNF_READY notification
     [Tags]    PRH    Missing AAI record
     [Timeout]    30s
-    Set pnf name in AAI    wrong_aai_record
-    Set event in DMAAP    ${EVENT_WITH_ALL_VALID_REQUIRED_FIELDS}
+    Set PNF name in AAI    wrong_aai_record
+    Set event in DMaaP    ${EVENT_WITH_ALL_VALID_REQUIRED_FIELDS}
     Wait Until Keyword Succeeds    100x    300ms    Check PRH log    org.onap.dcaegen2.services.prh.exceptions.AAINotFoundException: Incorrect response code for continuation of tasks workflow
 
 Get valid event from DMaaP and AAI is not responding
@@ -55,5 +55,5 @@
     [Tags]    PRH    AAI
     [Timeout]    180s
     Stop AAI
-    Set event in DMAAP    ${EVENT_WITH_ALL_VALID_REQUIRED_FIELDS}
+    Set event in DMaaP    ${EVENT_WITH_ALL_VALID_REQUIRED_FIELDS}
     Wait Until Keyword Succeeds    100x    300ms    Check PRH log    java.net.NoRouteToHostException: Host is unreachable (Host unreachable)
diff --git a/test/csit/tests/dcaegen2/prh-testcases/resources/docker-compose.yml b/test/csit/tests/dcaegen2/prh-testcases/resources/docker-compose.yml
index 03e84b3..3cac3b4 100644
--- a/test/csit/tests/dcaegen2/prh-testcases/resources/docker-compose.yml
+++ b/test/csit/tests/dcaegen2/prh-testcases/resources/docker-compose.yml
@@ -1,7 +1,7 @@
 version: '3'
 services:
   prh:
-    image: nexus3.onap.org:10003/onap/org.onap.dcaegen2.services.prh.prh-app-server
+    image: nexus3.onap.org:10001/onap/org.onap.dcaegen2.services.prh.prh-app-server
     command: >
           --dmaap.dmaapConsumerConfiguration.dmaapPortNumber=2222
           --dmaap.dmaapProducerConfiguration.dmaapPortNumber=2222
diff --git a/test/csit/tests/dcaegen2/prh-testcases/resources/prh_library.robot b/test/csit/tests/dcaegen2/prh-testcases/resources/prh_library.robot
index 226973b..10bc26c 100644
--- a/test/csit/tests/dcaegen2/prh-testcases/resources/prh_library.robot
+++ b/test/csit/tests/dcaegen2/prh-testcases/resources/prh_library.robot
@@ -3,29 +3,29 @@
 Library           Collections
 
 *** Keywords ***
-Create headers
+Create header
     ${headers}=    Create Dictionary    Accept=application/json    Content-Type=application/json
-    Set Suite Variable    ${global_headers}    ${headers}
+    Set Suite Variable    ${suite_headers}    ${headers}
 
 Create sessions
     Create Session    dmaap_session    ${DMAAP_SIMULATOR_URL}
-    Set Suite Variable    ${global_dmaap_session}    dmaap_session
+    Set Suite Variable    ${suite_dmaap_session}    dmaap_session
     Create Session    aai_session    ${AAI_SIMULATOR_URL}
-    Set Suite Variable    ${global_aai_session}    aai_session
+    Set Suite Variable    ${suite_aai_session}    aai_session
 
 Invalid event processing
     [Arguments]    ${input_invalid_event_in_dmaap}
     [Timeout]    30s
-    Set event in DMAAP    ${input_invalid_event_in_dmaap}
+    Set event in DMaaP    ${input_invalid_event_in_dmaap}
     Wait Until Keyword Succeeds    100x    100ms    Check PRH log    INFO 1 --- [pool-2-thread-1] o.o.d.s.prh.tasks.DmaapConsumerTaskImpl \ : Consumed model from DmaaP: ${input_invalid_event_in_dmaap}
 
 Valid event processing
     [Arguments]    ${input_valid_event_in_dmaap}
     [Timeout]    30s
-    ${posted_event_to_dmaap}=    Create pnf ready notification    ${input_valid_event_in_dmaap}
-    ${pnf_name}=    Create pnf name    ${input_valid_event_in_dmaap}
-    Set pnf name in AAI    ${pnf_name}
-    Set event in DMAAP    ${input_valid_event_in_dmaap}
+    ${posted_event_to_dmaap}=    Create PNF_Ready notification    ${input_valid_event_in_dmaap}
+    ${pnf_name}=    Create PNF name    ${input_valid_event_in_dmaap}
+    Set PNF name in AAI    ${pnf_name}
+    Set event in DMaaP    ${input_valid_event_in_dmaap}
     Wait Until Keyword Succeeds    100x    300ms    Check PNF_READY notification    ${posted_event_to_dmaap}
 
 Check PRH log
@@ -35,16 +35,16 @@
 
 Check PNF_READY notification
     [Arguments]    ${posted_event_to_dmaap}
-    ${resp}=    Get Request    ${global_dmaap_session}    /events/pnfReady    headers=${global_headers}
+    ${resp}=    Get Request    ${suite_dmaap_session}    /events/pnfReady    headers=${suite_headers}
     Should Be Equal    ${resp.text}    ${posted_event_to_dmaap}
 
-Set pnf name in AAI
+Set PNF name in AAI
     [Arguments]    ${pnfs_name}
     ${headers}=    Create Dictionary    Accept=application/json    Content-Type=text/html
-    ${resp}=    Put Request    ${global_aai_session}    /set_pnfs    headers=${headers}    data=${pnfs_name}
+    ${resp}=    Put Request    ${suite_aai_session}    /set_pnfs    headers=${headers}    data=${pnfs_name}
     Should Be Equal As Strings    ${resp.status_code}    200
 
-Set event in DMAAP
+Set event in DMaaP
     [Arguments]    ${event_in_dmaap}
-    ${resp}=    Put Request    ${global_dmaap_session}    /set_get_event    headers=${global_headers}    data=${event_in_dmaap}
+    ${resp}=    Put Request    ${suite_dmaap_session}    /set_get_event    headers=${suite_headers}    data=${event_in_dmaap}
     Should Be Equal As Strings    ${resp.status_code}    200
diff --git a/test/csit/tests/dcaegen2/prh-testcases/resources/simulator/AAI.py b/test/csit/tests/dcaegen2/prh-testcases/resources/simulator/AAI.py
index d5deaca..ca8bdd1 100644
--- a/test/csit/tests/dcaegen2/prh-testcases/resources/simulator/AAI.py
+++ b/test/csit/tests/dcaegen2/prh-testcases/resources/simulator/AAI.py
@@ -11,9 +11,7 @@
             global pnfs
             content_length = int(self.headers['Content-Length'])
             pnfs = self.rfile.read(content_length)
-            self.send_response(200)
-            self.send_header('Content-Type', 'application/json')
-            self.end_headers()
+            _header_200_and_json(self)
             
         return
 
@@ -28,14 +26,11 @@
             
         return
 
-    def do_GET(self):
-        self.send_response(200)
-        self.send_header('Content-Type', 'application/json')
-        self.end_headers()
-        self.wfile.write('GET')
-        self.wfile.close()
-        
-        return
+
+def _header_200_and_json(self):
+    self.send_response(200)
+    self.send_header('Content-Type', 'application/json')
+    self.end_headers()
 
 
 def _main_(handler_class=AAIHandler, server_class=BaseHTTPServer.HTTPServer, protocol="HTTP/1.0"):
diff --git a/test/csit/tests/dcaegen2/prh-testcases/resources/simulator/AAI_simulator b/test/csit/tests/dcaegen2/prh-testcases/resources/simulator/AAI_simulator
index d647207..9566c47 100644
--- a/test/csit/tests/dcaegen2/prh-testcases/resources/simulator/AAI_simulator
+++ b/test/csit/tests/dcaegen2/prh-testcases/resources/simulator/AAI_simulator
@@ -1,7 +1,5 @@
 FROM python:2
 
-ENV https_proxy "$https_proxy"
-
 ADD AAI.py /
 
 RUN pip install robotframework
diff --git a/test/csit/tests/dcaegen2/prh-testcases/resources/simulator/DMaaP.py b/test/csit/tests/dcaegen2/prh-testcases/resources/simulator/DMaaP.py
index b538282..dd2d194 100644
--- a/test/csit/tests/dcaegen2/prh-testcases/resources/simulator/DMaaP.py
+++ b/test/csit/tests/dcaegen2/prh-testcases/resources/simulator/DMaaP.py
@@ -12,9 +12,7 @@
             global received_event_to_get_method
             content_length = int(self.headers['Content-Length'])
             received_event_to_get_method = self.rfile.read(content_length)
-            self.send_response(200)
-            self.send_header('Content-Type', 'application/json')
-            self.end_headers()
+            _header_200_and_json(self)
             
         return
 
@@ -23,35 +21,29 @@
             global posted_event_from_prh
             content_length = int(self.headers['Content-Length'])
             posted_event_from_prh = self.rfile.read(content_length)
-            self.send_response(200)
-            self.send_header('Content-Type', 'application/json')
-            self.end_headers()
+            _header_200_and_json(self)
             
         return
 
     def do_GET(self):
         if re.search('/events/unauthenticated.SEC_OTHER_OUTPUT/OpenDcae-c12/c12', self.path):
-            self.send_response(200)
-            self.send_header('Content-Type', 'application/json')
-            self.end_headers()
+            _header_200_and_json(self)
             self.wfile.write(received_event_to_get_method)
             self.wfile.close()
         elif re.search('/events/pnfReady', self.path):
-            self.send_response(200)
-            self.send_header('Content-Type', 'application/json')
-            self.end_headers()
+            _header_200_and_json(self)
             self.wfile.write(posted_event_from_prh)
             self.wfile.close()
-        else:
-            self.send_response(200)
-            self.send_header('Content-Type', 'application/json')
-            self.end_headers()
-            self.wfile.write('GET else')
-            self.wfile.close()
-            
+
         return
 
 
+def _header_200_and_json(self):
+    self.send_response(200)
+    self.send_header('Content-Type', 'application/json')
+    self.end_headers()
+
+
 def _main_(handler_class=DMaaPHandler, server_class=BaseHTTPServer.HTTPServer, protocol="HTTP/1.0"):
 
     if sys.argv[1:]:
diff --git a/test/csit/tests/dcaegen2/prh-testcases/resources/simulator/DMaaP_simulator b/test/csit/tests/dcaegen2/prh-testcases/resources/simulator/DMaaP_simulator
index 37da1c7..20761e7 100644
--- a/test/csit/tests/dcaegen2/prh-testcases/resources/simulator/DMaaP_simulator
+++ b/test/csit/tests/dcaegen2/prh-testcases/resources/simulator/DMaaP_simulator
@@ -1,7 +1,5 @@
 FROM python:2
 
-ENV https_proxy "$https_proxy"
-
 ADD DMaaP.py /
 
 RUN pip install robotframework
