diff --git a/.gitattributes b/.gitattributes
index fa50c3b9067b2d51bdf9c3d44a7ff8cf93a8f2c9..47ab2464ced602305311ef62339eb7e65227be1b 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -1775,7 +1775,6 @@ LCU/Maintenance/DBInterface/django_postgresql/.pytest_cache/v/cache/lastfailed -
 LCU/Maintenance/DBInterface/django_postgresql/.pytest_cache/v/cache/nodeids -text
 LCU/Maintenance/DBInterface/django_postgresql/__init__.py -text
 LCU/Maintenance/DBInterface/django_postgresql/create_db.sql -text
-LCU/Maintenance/DBInterface/django_postgresql/requirements.txt -text
 LCU/Maintenance/DBInterface/django_postgresql/settings.py -text
 LCU/Maintenance/DBInterface/django_postgresql/urls.py -text
 LCU/Maintenance/DBInterface/django_postgresql/wsgi.py -text
@@ -1823,7 +1822,9 @@ LCU/Maintenance/DBInterface/monitoringdb/views.py -text
 LCU/Maintenance/MDB_tools/CMakeLists.txt -text
 LCU/Maintenance/MDB_tools/cli/mdb_loader.py -text
 LCU/Maintenance/MDB_tools/cli/probe_mdb.py -text
-LCU/Maintenance/MDB_tools/cli/release_code.py -text
+LCU/Maintenance/MDB_tools/deploy.sh -text
+LCU/Maintenance/MDB_tools/fabfile.py -text
+LCU/Maintenance/MDB_tools/requirements.txt -text
 LCU/Maintenance/__init__.py -text
 LCU/PPSTune/CMakeLists.txt -text
 LCU/PPSTune/MANIFEST.in -text
diff --git a/LCU/Maintenance/MDB_tools/CMakeLists.txt b/LCU/Maintenance/MDB_tools/CMakeLists.txt
index 8ac31e1d1102216d7fa72bfc7b89ec8d8727c2f1..94e86d1ea104a352659ba1ebd69a37e6f30fcbd5 100644
--- a/LCU/Maintenance/MDB_tools/CMakeLists.txt
+++ b/LCU/Maintenance/MDB_tools/CMakeLists.txt
@@ -3,4 +3,9 @@
 install(DIRECTORY cli
 	DESTINATION ${CMAKE_INSTALL_PREFIX}/bin
   USE_SOURCE_PERMISSIONS
-  PATTERN ".svn" EXCLUDE)
\ No newline at end of file
+  PATTERN ".svn" EXCLUDE)
+
+install(FILES requirements.txt
+    DESTINATION ${CMAKE_INSTALL_PREFIX})
+install(FILES fabfile.py
+    DESTINATION ${CMAKE_INSTALL_PREFIX})
diff --git a/LCU/Maintenance/MDB_tools/cli/release_code.py b/LCU/Maintenance/MDB_tools/cli/release_code.py
deleted file mode 100644
index adbc39c8e0e685e39bdf3f26bfdf3776eccdb5ac..0000000000000000000000000000000000000000
--- a/LCU/Maintenance/MDB_tools/cli/release_code.py
+++ /dev/null
@@ -1,54 +0,0 @@
-import logging
-import argparse
-from fabric.transfer import Transfer
-from fabric.connection import Connection
-import requests
-import sys
-import json
-from glob import glob
-import os
-import re
-
-from datetime import datetime
-
-logger = logging.getLogger('release_code')
-
-"""
-This program is meant to realise the code in the testing/production environment
-"""
-
-def setup_argument_parser():
-    parser = argparse.ArgumentParser(prog='probe_mdb')
-    parser.add_argument('path', help='format and path format of the installed code. es. /where/is/stored/*.dat')
-    parser.add_argument('-u', '--user', help='username', default=False)
-    parser.add_argument('--address', help='address of the server. default [localhost]:8000',
-                        default='lofarmonitortest.control.lofar')
-
-    parser.add_argument('--remote_install_path', help='remote path where to install the code',
-                        default='deploy/test')
-    return parser
-
-
-def installing_files(local_root_path, remote_root_path, address):
-    """
-    Copies the django installation to the remote path
-    :param local_root_path: path to the local directory containing the files
-    :param remote_root_path: remote path where to install the files
-    :return:
-    """
-    with Connection(address) as connection:
-        transfer = Transfer(connection)
-        transfer.put(local_root_path, remote_root_path)
-
-
-
-
-
-def parse_arguments(parser):
-    return parser.parse_args()
-
-if __name__=='__main__':
-    logging.basicConfig(format="%(asctime)s %(levelname)s: %(message)s",level=logging.DEBUG)
-    parser = setup_argument_parser()
-    args = parse_arguments(parser)
-    installing_files(args.path, args.remote_install_path, args.address)
\ No newline at end of file
diff --git a/LCU/Maintenance/MDB_tools/deploy.sh b/LCU/Maintenance/MDB_tools/deploy.sh
new file mode 100644
index 0000000000000000000000000000000000000000..f1f641af19bf623505554b29f35499b5d15f3fd3
--- /dev/null
+++ b/LCU/Maintenance/MDB_tools/deploy.sh
@@ -0,0 +1 @@
+#!/usr/bin/env bash
diff --git a/LCU/Maintenance/MDB_tools/fabfile.py b/LCU/Maintenance/MDB_tools/fabfile.py
new file mode 100644
index 0000000000000000000000000000000000000000..8654a59c39baf6cab2b32f9043ef73bb5190d1b1
--- /dev/null
+++ b/LCU/Maintenance/MDB_tools/fabfile.py
@@ -0,0 +1,65 @@
+
+from invoke import task
+import fabric
+from fabric.connection import Connection
+
+
+import os
+
+BUILD_DIR = '/home/mmancini/svn-tree/MonitoringMaintenance-SW300/build/gnu_debug/'
+LOCAL_DIR = '/home/mmancini/svn-tree/MonitoringMaintenance-SW300/build/gnu_debug/installed'
+REMOTE_DIR = '/data/mancini/deploy/'
+REMOTE_INSTALL_DIR = 'installed'
+PATH_SETTINGS_FILE = 'lib64/python3.6/site-packages/lofar/maintenance/django_postgresql/settings.py'
+BASE_SETTINGS_FILE_PATH = 'settings.py'
+
+users = {
+    'test' : 'mancini'
+}
+
+servers = {
+    'test':'lofarmonitortest'
+}
+
+def rsync_compressed(c, from_path='address', to_path='address'):
+    to_address = '{}@{}:{}'.format(c.user, c.host, to_path)
+    command = 'rsync -avz {} {}'.format(from_path, to_address)
+    c.local(command)
+
+
+def configure_remote_server(c, type):
+    # Copying django settings file
+    from_path = os.path.join(REMOTE_DIR, type, BASE_SETTINGS_FILE_PATH)
+    to_path = os.path.join(REMOTE_DIR, type, REMOTE_INSTALL_DIR, PATH_SETTINGS_FILE)
+    print('copying django settings file {} to {}'.format(from_path, to_path))
+    cp_cmd = 'cp {} {}'.format(from_path, to_path)
+    c.run(cp_cmd)
+    print('file copied')
+
+
+def copy_to_remote_server(c, type):
+    deploy_dir = os.path.join(REMOTE_DIR, type)
+    print('deploying on host {} directory {}'.format(c.host, deploy_dir))
+    rsync_compressed(c, LOCAL_DIR, deploy_dir)
+
+@task
+def deploy_to_server(c, type):
+    if isinstance(c, fabric.Connection):
+        print('To be implemented')
+        raise NotImplementedError
+    else:
+        host = servers[type]
+        user = users[type]
+        with Connection(host, user=user) as c:
+            copy_to_remote_server(c, type)
+            configure_remote_server(c, type)
+
+@task
+def update(c):
+
+    # make
+    with c.cd(BUILD_DIR):
+        c.run('pwd')
+        c.run('make')
+        c.run('make install')
+    print('ALL Updated')
\ No newline at end of file
diff --git a/LCU/Maintenance/DBInterface/django_postgresql/requirements.txt b/LCU/Maintenance/MDB_tools/requirements.txt
similarity index 85%
rename from LCU/Maintenance/DBInterface/django_postgresql/requirements.txt
rename to LCU/Maintenance/MDB_tools/requirements.txt
index 5d7195d1beb4603a740bd1f2398a9e58293883a9..51f068d73014144265067528a9ba1f25bd8d948f 100644
--- a/LCU/Maintenance/DBInterface/django_postgresql/requirements.txt
+++ b/LCU/Maintenance/MDB_tools/requirements.txt
@@ -5,4 +5,5 @@ django-polymorphic
 django-rest-polymorphic
 requests
 pandas
-fabric
\ No newline at end of file
+fabric
+invocations
\ No newline at end of file