diff --git a/src/monitoring/service/ManagementDBTools.py b/src/monitoring/service/ManagementDBTools.py
index 28ce875c9a7f062bd377b9abe270e525906826aa..53430780e843526cdad2ddbfb030f75287d93154 100644
--- a/src/monitoring/service/ManagementDBTools.py
+++ b/src/monitoring/service/ManagementDBTools.py
@@ -17,8 +17,12 @@ import sqlite3 as sl
 class ManagementDB():
     def __init__(self, database):
         self.client = sl.connect(database, check_same_thread=False)
+        self.create_monitoring_table()
+        self.create_subscription_table()
+        
+    def create_monitoring_table(self):
         self.client.execute("""
-            CREATE TABLE IF NOT EXISTS KPI(
+            CREATE TABLE IF NOT EXISTS kpi(
                 kpi_id INTEGER PRIMARY KEY AUTOINCREMENT,
                 kpi_description TEXT,
                 kpi_sample_type INTEGER,
@@ -27,46 +31,93 @@ class ManagementDB():
                 service_id INTEGER
             );
         """)
+    
+    def create_subscription_table(self):
+        self.client.execute("""
+            CREATE TABLE IF NOT EXISTS subscription(
+                subs_id INTEGER PRIMARY KEY AUTOINCREMENT,
+                kpi_id INTEGER,
+                subscriber TEXT,
+                sampling_duration_s REAL,
+                sampling_interval_s REAL,
+                start_timestamp REAL,
+                end_timestamp REAL
+            );
+        """)
 
-    def insert_KPI(self,kpi_description,kpi_sample_type,device_id,endpoint_id,service_id ):
+    def insert_KPI(self,kpi_description,kpi_sample_type,device_id,endpoint_id,service_id):
         c = self.client.cursor()
-        c.execute("SELECT kpi_id FROM KPI WHERE device_id is ? AND kpi_sample_type is ? AND endpoint_id is ?",(device_id,kpi_sample_type,endpoint_id))
+        c.execute("SELECT kpi_id FROM kpi WHERE device_id is ? AND kpi_sample_type is ? AND endpoint_id is ?",(device_id,kpi_sample_type,endpoint_id))
         data=c.fetchone()
         if data is None:
-            c.execute("INSERT INTO KPI (kpi_description,kpi_sample_type,device_id,endpoint_id,service_id) VALUES (?,?,?,?,?)", (kpi_description,kpi_sample_type,device_id,endpoint_id,service_id))
+            c.execute("INSERT INTO kpi (kpi_description,kpi_sample_type,device_id,endpoint_id,service_id) VALUES (?,?,?,?,?)", (kpi_description,kpi_sample_type,device_id,endpoint_id,service_id))
             self.client.commit()
             return c.lastrowid
         else:
             return data[0]
+            
+    def insert_subscription(self,kpi_id,subscriber,sampling_duration_s,sampling_interval_s,start_timestamp, end_timestamp):
+        c = self.client.cursor()
+        c.execute("SELECT subs_id FROM subscription WHERE kpi_id is ? AND subscriber is ? AND sampling_duration_s is ? AND sampling_interval_s is ? AND start_timestamp is ? AND end_timestamp is ?",(kpi_id,subscriber,sampling_duration_s,sampling_interval_s,start_timestamp, end_timestamp))
+        data=c.fetchone()
+        if data is None:
+            c.execute("INSERT INTO subscription (kpi_id,subscriber,sampling_duration_s,sampling_interval_s,start_timestamp, end_timestamp) VALUES (?,?,?,?,?,?)", (kpi_id,subscriber,sampling_duration_s,sampling_interval_s,start_timestamp, end_timestamp))
+            self.client.commit()
+            return c.lastrowid
+        else:
+            print("already exists")
+            return data[0]
 
     def delete_KPI(self,device_id,kpi_sample_type):
         c = self.client.cursor()
-        c.execute("SELECT kpi_id FROM KPI WHERE device_id is ? AND kpi_sample_type is ?",(device_id,kpi_sample_type))       
+        c.execute("SELECT kpi_id FROM kpi WHERE device_id is ? AND kpi_sample_type is ?",(device_id,kpi_sample_type))       
         data=c.fetchone()
         if data is None:
             return False
         else:
-            c.execute("DELETE FROM KPI WHERE device_id is ? AND kpi_sample_type is ?",(device_id,kpi_sample_type))
+            c.execute("DELETE FROM kpi WHERE device_id is ? AND kpi_sample_type is ?",(device_id,kpi_sample_type))
+            self.client.commit()
+            return True
+
+    def delete_subscription(self,subs_id):
+        c = self.client.cursor()
+        c.execute("SELECT * FROM subscription WHERE subs_id is ?",(subs_id,))       
+        data=c.fetchone()
+        if data is None:
+            return False
+        else:
+            c.execute("DELETE FROM subscription WHERE subs_id is ?",(subs_id,))
             self.client.commit()
             return True
 
     def delete_kpid_id(self,kpi_id):
         c = self.client.cursor()
-        c.execute("SELECT * FROM KPI WHERE kpi_id is ?",(kpi_id,))       
+        c.execute("SELECT * FROM kpi WHERE kpi_id is ?",(kpi_id,))       
         data=c.fetchone()
         if data is None:
             return False
         else:
-            c.execute("DELETE FROM KPI WHERE kpi_id is ?",(kpi_id,))
+            c.execute("DELETE FROM kpi WHERE kpi_id is ?",(kpi_id,))
             self.client.commit()
             return True
 
     def get_KPI(self,kpi_id):
-        data = self.client.execute("SELECT * FROM KPI WHERE kpi_id is ?",(kpi_id,))
+        data = self.client.execute("SELECT * FROM kpi WHERE kpi_id is ?",(kpi_id,))
+        return data.fetchone()
+
+    def get_subscription(self,subs_id):
+        data = self.client.execute("SELECT * FROM subscription WHERE subs_id is ?",(subs_id,))
         return data.fetchone()
         
     def get_KPIS(self):
-        data = self.client.execute("SELECT * FROM KPI")
+        data = self.client.execute("SELECT * FROM kpi")
+        #print("\n")
+        #for row in data:
+        #    print(row)
+        return data.fetchall()
+
+    def get_subscriptions(self):
+        data = self.client.execute("SELECT * FROM subscription")
         #print("\n")
         #for row in data:
         #    print(row)