diff --git a/test/mrstub/app/main.py b/test/mrstub/app/main.py
index 40707d6..90924b1 100644
--- a/test/mrstub/app/main.py
+++ b/test/mrstub/app/main.py
@@ -54,6 +54,8 @@
 cntr_msg_responses_fetched=0
 
 # Request and response constants
+ORU_WRITE_URL="/events/unauthenticated.SEC_FAULT_OUTPUT"
+ORU_READ_URL="/events/unauthenticated.SEC_FAULT_OUTPUT/users/test/"
 AGENT_WRITE_URL="/events/A1-POLICY-AGENT-WRITE"
 AGENT_READ_URL="/events/A1-POLICY-AGENT-READ/users/policy-agent"
 APP_WRITE_URL="/send-request"
@@ -344,6 +346,24 @@
 
         return Response('{}', status=200, mimetype=MIME_JSON)
 
+@app.route(ORU_WRITE_URL,
+    methods=['PUT','POST'])
+def oru_write():
+    global msg_requests
+    msg=json.dumps(request.json)
+    msg_requests.append(msg)
+    return Response('{}', status=200, mimetype=MIME_JSON)
+
+@app.route(ORU_READ_URL,
+    methods=['GET'])
+def oru_read():
+    global msg_requests
+    if(len(msg_requests)>0):
+        rsp=msg_requests.pop(0)
+        res=[]
+        res.append(rsp)
+        return Response(json.dumps(res), status=200, mimetype=MIME_JSON)
+    return Response("[]", status=200, mimetype=MIME_JSON)
 
 ### Functions for metrics read out ###
 
diff --git a/test/mrstub/mrstub-build-start.sh b/test/mrstub/mrstub-build-start.sh
index c9f70a1..1874f97 100755
--- a/test/mrstub/mrstub-build-start.sh
+++ b/test/mrstub/mrstub-build-start.sh
@@ -21,4 +21,4 @@
 
 docker build --build-arg NEXUS_PROXY_REPO=nexus3.onap.org:10001/  -t mrstub .
 
-docker run --rm -it -p 3904:3904 -p 3905:3905 -v "$PWD/cert:/usr/src/app/cert" mrstub
+docker run --rm --name=dmaap-mr -it -p 3904:3904 -p 3905:3905 -v "$PWD/cert:/usr/src/app/cert" mrstub
diff --git a/test/usecases/oruclosedlooprecovery/scriptversion/app/Dockerfile b/test/usecases/oruclosedlooprecovery/scriptversion/app/Dockerfile
index d5d6c2c..4cb03c7 100644
--- a/test/usecases/oruclosedlooprecovery/scriptversion/app/Dockerfile
+++ b/test/usecases/oruclosedlooprecovery/scriptversion/app/Dockerfile
@@ -22,6 +22,11 @@
 
 WORKDIR /usr/src/app
 
+## install curl & ping to help debug
+RUN apt update
+RUN apt install curl -y
+RUN apt-get install iputils-ping -y
+
 RUN pip install -r requirements.txt
 
-CMD [ "python3", "main.py" ]
+CMD [ "python3", "-u", "main.py" ]
diff --git a/test/usecases/oruclosedlooprecovery/scriptversion/docker-compose/start.sh b/test/usecases/oruclosedlooprecovery/scriptversion/docker-compose/start.sh
index 5dba4fe..419bef1 100755
--- a/test/usecases/oruclosedlooprecovery/scriptversion/docker-compose/start.sh
+++ b/test/usecases/oruclosedlooprecovery/scriptversion/docker-compose/start.sh
@@ -30,7 +30,7 @@
 docker build -f Dockerfile-message-generator -t message-generator .
 
 # start up dmaap message router
-cd ${SHELL_FOLDER}/../../../../docker-compose/
+cd ${SHELL_FOLDER}/../../../../../docker-compose/
 docker-compose -f docker-compose.yaml -f mr/docker-compose.yml up -d
 
 # wait until mr up & running
diff --git a/test/usecases/oruclosedlooprecovery/scriptversion/k8s/README.md b/test/usecases/oruclosedlooprecovery/scriptversion/k8s/README.md
new file mode 100644
index 0000000..255e220
--- /dev/null
+++ b/test/usecases/oruclosedlooprecovery/scriptversion/k8s/README.md
@@ -0,0 +1,24 @@
+## Run script
+
+`bash start.sh`
+
+This scripts will build images and start up four components:
+- dmaap-mr
+- oru-app
+- sdnr-simulator
+- message-generator
+
+## License
+
+Copyright (C) 2021 Nordix 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.
diff --git a/test/usecases/oruclosedlooprecovery/scriptversion/k8s/linkfailure.yml b/test/usecases/oruclosedlooprecovery/scriptversion/k8s/linkfailure.yml
new file mode 100644
index 0000000..ede8602
--- /dev/null
+++ b/test/usecases/oruclosedlooprecovery/scriptversion/k8s/linkfailure.yml
@@ -0,0 +1,200 @@
+#  Copyright (C) 2021 Nordix Foundation. All rights reserved.
+#  ========================================================================
+#  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.
+#  ============LICENSE_END=================================================
+#
+apiVersion: v1
+kind: Namespace
+metadata:
+  name: nonrtric
+---
+apiVersion: apps/v1 # for versions before 1.9.0 use apps/v1beta2
+kind: Deployment
+metadata:
+  name: dmaap-mr
+  namespace: nonrtric
+  labels:
+    app: dmaap-mr
+spec:
+  selector:
+    matchLabels:
+      app: dmaap-mr
+  replicas: 1
+  template:
+    metadata:
+      labels:
+        app: dmaap-mr
+    spec:
+      containers:
+      - name: dmaap-mr
+        image: mrstub
+        imagePullPolicy: IfNotPresent
+        ports:
+        - name: http
+          containerPort: 3904
+        - name: https
+          containerPort: 3905
+---
+apiVersion: v1
+kind: Service
+metadata:
+  name: dmaap-mr
+  namespace: nonrtric
+  labels:
+    app: dmaap-mr
+spec:
+  type: ClusterIP
+  ports:
+    - name: http
+      protocol: TCP
+      port: 3904
+    - name: https
+      protocol: TCP
+      port: 3905
+  selector:
+    app: dmaap-mr
+---
+apiVersion: apps/v1 # for versions before 1.9.0 use apps/v1beta2
+kind: Deployment
+metadata:
+  name: message-generator
+  namespace: nonrtric
+  labels:
+    app: message-generator
+spec:
+  selector:
+    matchLabels:
+      app: message-generator
+  replicas: 1
+  template:
+    metadata:
+      labels:
+        app: message-generator
+    spec:
+      containers:
+      - name: message-generator
+        image: message-generator
+        imagePullPolicy: IfNotPresent
+        env:
+        - name: MR-HOST
+          value: http://dmaap-mr
+        - name: MR-PORT
+          value: "3904"
+---
+apiVersion: v1
+kind: Service
+metadata:
+  name: message-generator
+  namespace: nonrtric
+  labels:
+    app: message-generator
+spec:
+  # type: ClusterIP
+  ports:
+    - protocol: TCP
+      port: 80
+  selector:
+    app: message-generator
+---
+apiVersion: apps/v1 # for versions before 1.9.0 use apps/v1beta2
+kind: Deployment
+metadata:
+  name: sdnr-simulator
+  namespace: nonrtric
+  labels:
+    app: sdnr-simulator
+spec:
+  selector:
+    matchLabels:
+      app: sdnr-simulator
+  replicas: 1
+  template:
+    metadata:
+      labels:
+        app: sdnr-simulator
+    spec:
+      containers:
+      - name: sdnr-simulator
+        image: sdnr-simulator
+        imagePullPolicy: IfNotPresent
+        ports:
+        - name: tcp
+          containerPort: 9990
+        env:
+        - name: MR-HOST
+          value: http://dmaap-mr
+        - name: MR-PORT
+          value: "3904"
+---
+apiVersion: v1
+kind: Service
+metadata:
+  name: sdnr-simulator
+  namespace: nonrtric
+  labels:
+    app: sdnr-simulator
+spec:
+  type: ClusterIP
+  ports:
+    - protocol: TCP
+      port: 9990
+  selector:
+    app: sdnr-simulator
+---
+apiVersion: apps/v1 # for versions before 1.9.0 use apps/v1beta2
+kind: Deployment
+metadata:
+  name: oru-app
+  namespace: nonrtric
+  labels:
+    app: oru-app
+spec:
+  selector:
+    matchLabels:
+      app: oru-app
+  replicas: 1
+  template:
+    metadata:
+      labels:
+        app: oru-app
+    spec:
+      containers:
+      - name: oru-app
+        image: oru-app
+        imagePullPolicy: IfNotPresent
+        env:
+        - name: MR-HOST
+          value: http://dmaap-mr
+        - name: MR-PORT
+          value: "3904"
+        - name: SDNR-HOST
+          value: http://sdnr-simulator
+        - name: SDNR-PORT
+          value: "9990"
+        - name: VERBOSE
+          value: "on"
+---
+apiVersion: v1
+kind: Service
+metadata:
+  name: oru-app
+  namespace: nonrtric
+  labels:
+    app: oru-app
+spec:
+  # type: ClusterIP
+  ports:
+    - protocol: TCP
+      port: 80
+  selector:
+    app: oru-app
\ No newline at end of file
diff --git a/test/usecases/oruclosedlooprecovery/scriptversion/k8s/start.sh b/test/usecases/oruclosedlooprecovery/scriptversion/k8s/start.sh
new file mode 100755
index 0000000..0bedbd9
--- /dev/null
+++ b/test/usecases/oruclosedlooprecovery/scriptversion/k8s/start.sh
@@ -0,0 +1,42 @@
+#  Copyright (C) 2021 Nordix Foundation. All rights reserved.
+#  ========================================================================
+#  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.
+#  ============LICENSE_END=================================================
+#
+
+SHELL_FOLDER=$(cd "$(dirname "$0")";pwd)
+cd ${SHELL_FOLDER}
+kubectl delete -f linkfailure.yml
+
+# be careful if other stopped containers are on the same system
+docker stop $(docker ps -aq)
+docker system prune -f
+
+# build o-ru application image
+cd ${SHELL_FOLDER}/../app/
+docker build -t oru-app .
+
+# build simulator image of sdnr
+cd ${SHELL_FOLDER}/../simulators/
+docker build -f Dockerfile-sdnr-sim -t sdnr-simulator .
+
+# build message generator image
+docker build -f Dockerfile-message-generator -t message-generator .
+
+# build dmaap-mr sim
+cd ${SHELL_FOLDER}/../../../../mrstub/
+docker build -t mrstub .
+
+# apply k8s yaml file
+cd ${SHELL_FOLDER}
+kubectl apply -f linkfailure.yml
\ No newline at end of file
diff --git a/test/usecases/oruclosedlooprecovery/scriptversion/simulators/Dockerfile-message-generator b/test/usecases/oruclosedlooprecovery/scriptversion/simulators/Dockerfile-message-generator
index 139b791..841cf7f 100644
--- a/test/usecases/oruclosedlooprecovery/scriptversion/simulators/Dockerfile-message-generator
+++ b/test/usecases/oruclosedlooprecovery/scriptversion/simulators/Dockerfile-message-generator
@@ -22,6 +22,11 @@
 
 WORKDIR /usr/src/app
 
+## install curl & ping to help debug
+RUN apt update
+RUN apt install curl -y
+RUN apt-get install iputils-ping -y
+
 RUN pip install -r requirements.txt
 
-CMD [ "python3", "message_generator.py" ]
+CMD [ "python3", "-u", "message_generator.py" ]
diff --git a/test/usecases/oruclosedlooprecovery/scriptversion/simulators/Dockerfile-sdnr-sim b/test/usecases/oruclosedlooprecovery/scriptversion/simulators/Dockerfile-sdnr-sim
index 103c97c..4275b17 100644
--- a/test/usecases/oruclosedlooprecovery/scriptversion/simulators/Dockerfile-sdnr-sim
+++ b/test/usecases/oruclosedlooprecovery/scriptversion/simulators/Dockerfile-sdnr-sim
@@ -22,6 +22,11 @@
 
 WORKDIR /usr/src/app
 
+## install curl & ping to help debug
+RUN apt update
+RUN apt install curl -y
+RUN apt-get install iputils-ping -y
+
 RUN pip install -r requirements.txt
 
-CMD [ "python3", "sdnr_simulator.py" ]
+CMD [ "python3", "-u", "sdnr_simulator.py" ]
diff --git a/test/usecases/oruclosedlooprecovery/scriptversion/simulators/message_generator.py b/test/usecases/oruclosedlooprecovery/scriptversion/simulators/message_generator.py
index 1b0676c..9c2ee08 100644
--- a/test/usecases/oruclosedlooprecovery/scriptversion/simulators/message_generator.py
+++ b/test/usecases/oruclosedlooprecovery/scriptversion/simulators/message_generator.py
@@ -90,6 +90,14 @@
    }
  }
 
+def sendPostRequest(url ,msg):
+    try:
+        requests.post(url, json=msg)
+    except Exception as e:
+        print(type(e))
+        print(e.args)
+        print(e)
+
 if __name__ == "__main__":
     if os.getenv("MR-HOST") is not None:
         mr_host = os.getenv("MR-HOST")
@@ -104,13 +112,13 @@
         random_time = int(10 * random.random())
         if (random_time % 3 == 1):
             print("Sent heart beat")
-            requests.post(mr_url, json=heartBeatMessage);
+            sendPostRequest(mr_url, heartBeatMessage)
 
         o_ru_id = "ERICSSON-O-RU-1122" + str(random_time)
         print("Sent link failure for O-RAN-RU: " + o_ru_id)
         msg_as_json = json.loads(json.dumps(linkFailureMessage))
         msg_as_json["event"]["commonEventHeader"]["sourceName"] = o_ru_id
-        requests.post(mr_url, json=msg_as_json);
+        sendPostRequest(mr_url, msg_as_json)
 
         time.sleep(random_time)
 
