diff --git a/test/mocks/datafilecollector-testharness/mr-sim/.gitignore b/test/mocks/datafilecollector-testharness/mr-sim/.gitignore
new file mode 100644
index 0000000..e4c889b
--- /dev/null
+++ b/test/mocks/datafilecollector-testharness/mr-sim/.gitignore
@@ -0,0 +1,3 @@
+__pycache__
+.env/
+.pydevproject
\ No newline at end of file
diff --git a/test/mocks/datafilecollector-testharness/mr-sim/README.md b/test/mocks/datafilecollector-testharness/mr-sim/README.md
new file mode 100644
index 0000000..b04b9ec
--- /dev/null
+++ b/test/mocks/datafilecollector-testharness/mr-sim/README.md
@@ -0,0 +1,46 @@
+## Developer workflow
+
+1. ```sudo apt install python3-venv```
+2. ```source .env/bin/activate/```
+3. ```pip3 install "anypackage"```      #also include in source code
+4. ```pip3 freeze | grep -v "pkg-resources" > requirements.txt```   #to create a req file
+5. ```FLASK_APP=mr-sim.py flask run```
+
+    or
+
+   ```python3 mr-sim.py ```
+
+6. Check/lint/format the code before commit/amed by ```autopep8 --in-place --aggressive --aggressive mr-sim.py```
+
+
+## User workflow on *NIX
+
+
+When cloning/fetching from the repository first time:
+1. `git clone`
+2. `cd "..." ` 		#navigate to this folder
+3. `source setup.sh `	#setting up virtualenv and install requirements
+
+    you'll get a sourced virtualenv shell here, check prompt
+4. `(env) $ python3 mr-sim.py --help`
+
+    alternatively
+
+    `(env) $ python3 mr-sim.py --tc1`
+
+Every time you run the script, you'll need to step into the virtualenv by following step 3 first.
+
+## User workflow on Windows
+
+When cloning/fetching from the repository first time:
+
+1. 'git clone'
+2. then step into the folder
+3. 'pip3 install virtualenv'
+4. 'pip3 install virtualenvwrapper-win'
+5. 'mkvirtualenv env'
+6. 'workon env'
+7. 'pip3 install -r requirements.txt'   #this will install in the local environment then
+8. 'python3 dfc-sim.py'
+
+Every time you run the script, you'll need to step into the virtualenv by step 2+6.
\ No newline at end of file
diff --git a/test/mocks/datafilecollector-testharness/mr-sim/mr-sim.py b/test/mocks/datafilecollector-testharness/mr-sim/mr-sim.py
new file mode 100644
index 0000000..c37ae69
--- /dev/null
+++ b/test/mocks/datafilecollector-testharness/mr-sim/mr-sim.py
@@ -0,0 +1,289 @@
+import argparse
+import os
+from werkzeug import secure_filename
+from flask import Flask, render_template, request
+from time import sleep
+import sys
+import json
+from flask import Flask
+app = Flask(__name__)
+
+DEFAULT_IP = "localhost"
+
+
+@app.route(
+    "/events/unauthenticated.VES_NOTIFICATION_OUTPUT/OpenDcae-c12/C12",
+    methods=['GET'])
+def MR_reply():
+    global mr_counter
+    global mr_replies
+
+    mr_counter = mr_counter + 1
+    print("MR receiver counter: " + str(mr_counter))
+
+    if mr_replies[mr_counter].sleepMs != 0:
+        sleep(mr_replies[mr_counter].sleepMs / 1000.0)
+        print("Sleeping: " + str(mr_replies[mr_counter].sleepMs) + " ms")
+
+    if mr_replies[mr_counter].replytype == 0:
+        #print (str(mr_replies[mr_counter].jsonreply))
+        print("Regular reply")
+        response = app.response_class(
+            response=mr_replies[mr_counter].jsonreply,
+            status=200,
+            mimetype='application/json')
+
+        return response
+
+    if mr_replies[mr_counter].replytype == 2:
+
+        print("error: 404")
+        response = app.response_class(
+            response="",
+            status=404,
+            mimetype='application/json')
+
+        return response
+
+    if mr_replies[mr_counter].replytype == 1:
+        print("do nothing, sink request")
+        return
+
+
+class Reply:
+    """An instance of the reply event, which can be configured to behave in a certain way
+    (delay, error code, reply body"""
+
+    def to_json(self):
+        return self.jsonreply
+
+    def __init__(
+            self,
+            ip=DEFAULT_IP,
+            file="1MB.tar.gz",
+            sleepMs=0,
+            replyType=0,
+            port=1022,
+            type="ftps"):
+        self.sleepMs = sleepMs
+        self.ip = ip
+        self.file = file
+        self.port = port
+        self.replytype = replyType  # 0 for reply, 1 timeout, 2 deny
+        self.user = "onap"
+        self.passwd = "pano"
+        self.type = type
+        self.jsonreply = str.encode("""
+        [{
+          "event": {
+            "commonEventHeader": {
+              "startEpochMicrosec": 8745745764578,
+              "eventId": "FileReady_1797490e-10ae-4d48-9ea7-3d7d790b25e1",
+              "timeZoneOffset": "UTC+05.30",
+              "internalHeaderFields": {
+                "collectorTimeStamp": "Tue, 09 18 2018 10:56:52 UTC"
+              },
+              "priority": "Normal",
+              "version": "4.0.1",
+              "reportingEntityName": "otenb5309",
+              "sequence": 0,
+              "domain": "notification",
+              "lastEpochMicrosec": 8745745764578,
+              "eventName": "Noti_RnNode-Ericsson_FileReady",
+              "vesEventListenerVersion": "7.0.1",
+              "sourceName": "oteNB5309"
+            },
+            "notificationFields": {
+              "notificationFieldsVersion": "2.0",
+              "changeType": "FileReady",
+              "changeIdentifier": "PM_MEAS_FILES",
+              "arrayOfNamedHashMap": [
+                {
+                  "name": \"""" +
+                                    self.file +
+                                    """",
+                  "hashMap": {
+                    "fileFormatType": "org.3GPP.32.435#measCollec",
+                    "location": \"""" +
+                                    self.type +
+                                    """://""" +
+                                    self.user +
+                                    """:""" +
+                                    self.passwd +
+                                    """@""" +
+                                    self.ip +
+                                    """:""" +
+                                    str(self.port) +
+                                    """/""" +
+                                    self.file +
+                                    """",
+                    "fileFormatVersion": "V10",
+                    "compression": "gzip"
+                  }
+                }
+              ]
+            }
+          }
+        }]
+        """)
+
+
+def replyFactory(
+        ip=DEFAULT_IP,
+        file="1MB.tar.gz",
+        factoryport=1022,
+        count=1,
+        factorytype="ftps"):
+    aggregatedReply = ""
+    # first item does not require .
+    aggregatedReply = Reply(ip, file, port=factoryport).to_json()
+    for i in range(count - 1):
+        aggregatedReply = aggregatedReply + b", " + \
+            Reply(ip, file, port=factoryport, type=factorytype).to_json()
+    #print(b"aggregated reply: " + aggregatedReply)
+    return b"[" + aggregatedReply + b"]"
+
+
+def prepareMrRespArrSftp():
+    global mr_replies
+
+    for i in range(400):  # prepare 400 regular replies
+        mr_replies.append(
+            Reply(
+                port=1022,
+                ip="localhost",
+                type="sftp",
+                file="1MB.tar.gz"))
+    #mr_replies[0] is not used
+
+
+def prepareMrRespArrFtps():
+    global mr_replies
+
+    for i in range(400):
+        mr_replies.append(
+            Reply(
+                port=21,
+                ip="localhost",
+                type="ftps",
+                file="1MB.tar.gz"))
+
+
+def tc1():
+    prepareMrRespArrSftp()
+    # no mutation needed in this TC
+
+
+def tc2():
+    global mr_replies
+
+    for i in range(7):
+        mr_replies.append(
+            Reply(
+                port=1022,
+                ip="localhost",
+                type="sftp",
+                file="1MB.tar.gz"))
+
+    # inserting and empty reply message
+    mr_replies[1].jsonreply = b""
+    mr_replies[2].jsonreply = b""
+
+    # inserting a 404 error and delay
+    mr_replies[3].replytype = 2
+    mr_replies[3].sleepMs = 2000
+
+    # inserting and empty reply message
+    mr_replies[4].jsonreply = b""
+
+    # sink the message
+    mr_replies[5].replytype = 1
+
+    # reply with one proper file finally
+    mr_replies[6] = Reply(
+        port=1022,
+        ip="localhost",
+        type="sftp",
+        file="1MB.tar.gz")
+
+
+def tc3():
+    prepareMrRespArrFtps()
+
+
+def tc4():
+    global mr_replies
+
+    for i in range(7):
+        mr_replies.append(
+            Reply(
+                port=21,
+                ip="localhost",
+                type="ftps",
+                file="1MB.tar.gz"))
+
+    # inserting and empty reply message
+    mr_replies[1].jsonreply = b""
+    mr_replies[2].jsonreply = b""
+
+    # inserting a 404 error and delay
+    mr_replies[3].replytype = 2
+    mr_replies[3].sleepMs = 2000
+
+    # inserting and empty reply message
+    mr_replies[4].jsonreply = b""
+
+    # sink the message
+    mr_replies[5].replytype = 1
+
+    # reply with one proper file finally
+    mr_replies[6] = Reply(
+        port=21,
+        ip="localhost",
+        type="fftp",
+        file="1MB.tar.gz")
+
+
+if __name__ == "__main__":
+    mr_replies = []
+    mr_counter = 0  # counting hits reaching MR instance
+    DR_block_single_req = 0
+
+    parser = argparse.ArgumentParser()
+    parser.add_argument(
+        '--tc1',
+        action='store_true',
+        help='TC1: reply all queries with 1-1 files using SFTP')
+    parser.add_argument(
+        '--tc2',
+        action='store_true',
+        help='TC2: Reply according to error scenarios, then return 1 file finally for SFTP ---NOTE: updated keys required')
+    parser.add_argument(
+        '--tc3',
+        action='store_true',
+        help='TC3: reply all queries with 1-1 files using FTPS')
+    parser.add_argument(
+        '--tc4',
+        action='store_true',
+        help='TC4: Reply according to error scenarios, then return 1 file finally for FTPS ---NOTE: updated keys required')
+
+    args = parser.parse_args()
+
+    if args.tc1:
+        print("TC: #1")
+        tc1()
+    elif args.tc2:
+        print("TC: #2")
+        tc2()
+    elif args.tc3:
+        print("TC: #3")
+        tc3()
+    elif args.tc4:
+        print("TC: #4")
+        tc4()
+
+    else:
+        print("No TC was defined")
+        print("use --help for usage info")
+        sys.exit()
+    app.run(port=2222)
diff --git a/test/mocks/datafilecollector-testharness/mr-sim/requirements.txt b/test/mocks/datafilecollector-testharness/mr-sim/requirements.txt
new file mode 100644
index 0000000..6f02fb6
--- /dev/null
+++ b/test/mocks/datafilecollector-testharness/mr-sim/requirements.txt
@@ -0,0 +1,6 @@
+Click==7.0
+Flask==1.0.2
+itsdangerous==1.1.0
+Jinja2==2.10
+MarkupSafe==1.1.0
+Werkzeug==0.14.1
diff --git a/test/mocks/datafilecollector-testharness/mr-sim/setup.sh b/test/mocks/datafilecollector-testharness/mr-sim/setup.sh
new file mode 100755
index 0000000..6661d0b
--- /dev/null
+++ b/test/mocks/datafilecollector-testharness/mr-sim/setup.sh
@@ -0,0 +1,13 @@
+#!/bin/bash
+
+virtualenv --version > /dev/null || { echo 'Virtualenv command is not available, exiting' ; sleep 10; exit 1; }
+pip3 --version > /dev/null || { echo 'python3-pip package is not available, exiting' ; sleep 10; exit 1; }
+
+
+if [ -d ".env" ]; then
+	echo ".env is prepared"
+else
+	virtualenv --no-site-packages --distribute  -p python3 .env
+fi
+
+source .env/bin/activate && pip3 install -r requirements.txt
