diff --git a/.gitattributes b/.gitattributes
index e2c80a76347bfc58fad1697d8eeffc53b9c51c21..5f8d427bd1f97e48d72e162caef8141d8be41272 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -1779,6 +1779,7 @@ LCU/MaintenanceDB/DBInterface/django_rest/monitoringdb/migrations/__init__.py -t
 LCU/MaintenanceDB/DBInterface/django_rest/monitoringdb/models/__init__.py -text
 LCU/MaintenanceDB/DBInterface/django_rest/monitoringdb/models/stationtest.py -text
 LCU/MaintenanceDB/DBInterface/django_rest/monitoringdb/serializers.py -text
+LCU/MaintenanceDB/DBInterface/django_rest/monitoringdb/station_test_raw_parser.py -text
 LCU/MaintenanceDB/DBInterface/django_rest/monitoringdb/tests.py -text
 LCU/MaintenanceDB/DBInterface/django_rest/monitoringdb/views.py -text
 LCU/MaintenanceDB/DBInterface/django_rest/requirements.txt -text
diff --git a/LCU/MaintenanceDB/DBInterface/django_rest/monitoringdb/models/stationtest.py b/LCU/MaintenanceDB/DBInterface/django_rest/monitoringdb/models/stationtest.py
index df34dbfae4079c3da5c3003a4ab9175c75bac9f8..c4c23fc553e3ad6aab74acea2acf593460da64a2 100644
--- a/LCU/MaintenanceDB/DBInterface/django_rest/monitoringdb/models/stationtest.py
+++ b/LCU/MaintenanceDB/DBInterface/django_rest/monitoringdb/models/stationtest.py
@@ -146,17 +146,6 @@ class TileError(PolymorphicModel):
 
 class TileNoSignalError(TileError):
     polarization = models.CharField(max_length=1)
-    tile_id = models.SmallIntegerField(default=-1)
-    parent_component_error = models.ForeignKey(HBANoSignal,
-                                               related_name='tile_errors',
-                                               on_delete=models.CASCADE)
-
-
-class TileNoSignalError(TileError):
-    polarization = models.CharField(max_length=1)
-    parent_component_error = models.ForeignKey(HBANoSignal,
-                                               related_name='tile_errors',
-                                               on_delete=models.CASCADE)
 
 
 class TileModemError(TileError):
diff --git a/LCU/MaintenanceDB/DBInterface/django_rest/monitoringdb/station_test_raw_parser.py b/LCU/MaintenanceDB/DBInterface/django_rest/monitoringdb/station_test_raw_parser.py
new file mode 100644
index 0000000000000000000000000000000000000000..49d1f4264e0bd7c8a88def714423a866f47cdb64
--- /dev/null
+++ b/LCU/MaintenanceDB/DBInterface/django_rest/monitoringdb/station_test_raw_parser.py
@@ -0,0 +1,86 @@
+"""
+This modules contains all the function needed to parse a raw station test output into the models used to describe it
+"""
+from datetime import datetime
+
+def parse_key_value_pairs(content):
+    """
+    Parse a key value pair returning a dict.
+    es 'key=value' -> {'key': 'value'}
+    :param content: the string to parse
+    :return: dict
+    """
+    assert '=' in content
+    pairs = content.split('=')
+    return {pairs[0]:pairs[1]}
+
+
+def is_component_type(component_type, values):
+    """
+    Receive a list of values that compose a line in the station test output and returns true if
+    the line refers to the component_type type false otherwise
+    :param values: a list of values that compose a line in the station test output
+    :param component_type: component type
+    :return: True or False
+    """
+    return values[1] == component_type
+
+
+def filter_by_component_type(component_type, contents):
+    """
+    Receive a list of rows that compose a line in the station test output and returns a list of rows
+    that are referred to the component type type
+    :param values: a list of values that compose a line in the station test output
+    :param component_type: component type
+    :return: a list of values that refers to the component_type
+    """
+    return filter(lambda content: is_component_type(component_type, content), contents)
+
+
+def parse_datetime(date, date_time):
+    """
+    If the datetime is only the time of the current date it used the data
+    to generate the date time
+    :param date:
+    :param date_time:
+    :return:
+    """
+    if 'T' in date_time:
+        return datetime.strptime(date_time, '%Y-%m-%dT%H:%M:%S')
+    else:
+        return datetime.strptime("T".join([date, date_time]), '%Y%m%dT%H:%M:%S')
+
+
+
+def parse_from_raw_station_test(content):
+    """
+    Expects a string content with the station test output
+    and output a list of Django Models
+    :param content: string content with the station test output
+    :return: a list of Django models
+    """
+    model_list = []
+
+    station_name = ''
+    start_time = ''
+    end_time = ''
+
+    preparsed_content = []
+    for line in content.split('\n'):
+        values = [parse_key_value_pairs(value) if '=' in value else value for value in line.split(',')]
+
+        preparsed_content.append(values)
+
+    for row in filter_by_component_type('NFO', preparsed_content):
+        print('parsing ', row)
+        if row[3] == "STATION":
+            station_name = row[4]['NAME']
+        elif row[3] == "RUNTIME":
+            start_time = parse_datetime(row[0], row[4]['START'])
+            end_time = parse_datetime(row[0], row[5]['STOP'])
+            print('end time', end_time)
+    print(station_name, start_time, end_time)
+
+
+
+    return model_list
\ No newline at end of file
diff --git a/LCU/MaintenanceDB/DBInterface/django_rest/monitoringdb/views.py b/LCU/MaintenanceDB/DBInterface/django_rest/monitoringdb/views.py
index 1c4e17f6c6b256028df460fe229daae36b8a7701..e485e2c051f38206df328cf43f7cda1cc49411ff 100644
--- a/LCU/MaintenanceDB/DBInterface/django_rest/monitoringdb/views.py
+++ b/LCU/MaintenanceDB/DBInterface/django_rest/monitoringdb/views.py
@@ -1,7 +1,14 @@
 from django.shortcuts import render
-from rest_framework import viewsets
-from .models import StationTest
-from .serializers import *
+from rest_framework import viewsets, status
+from rest_framework.response import Response
+from rest_framework.decorators import api_view
+from .models import StationTest, ComponentError
+from .serializers import StationTestSerializer, ComponentErrorPolimorphicSerializer
+from .station_test_raw_parser import parse_from_raw_station_test
+
+import logging
+
+logger = logging.getLogger(__name__)
 
 # Create your views here.
 class StationTestViewSet(viewsets.ModelViewSet):
@@ -12,3 +19,37 @@ class StationTestViewSet(viewsets.ModelViewSet):
 class ComponentErrorViewSet(viewsets.ModelViewSet):
     queryset = ComponentError.objects.all()
     serializer_class = ComponentErrorPolimorphicSerializer
+
+
+@api_view(['POST'])
+def insert_raw_station_test(request):
+    """
+    This function is meant to parse a request of the form
+    {
+    "content": "[STATION TEST RAW TEXT]"
+    }
+    parse the content field and create all the station_test entity related into the database
+    :param request: HTTP request
+    :return:
+    """
+    if request.method == 'POST':
+        print(request.data['content'])
+
+        if 'content' in request.data:
+            try:
+                for entry in parse_from_raw_station_test(request.data['content']):
+                    entry.save()
+            except Exception as e:   # TODO this response does not work
+                logger.exception("exception occurred while parsing raw station info %s: %s", request.data['content'], e)
+                return Response(exception=True,
+                                data="the post message is not correct." +
+                                " It has to be of the form \{'content':[RAWSTRING]\}: %s" % (e,),
+                                status=status.HTTP_400_BAD_REQUEST)
+        else:
+            return Response(exception=True,
+                            data="the post message is not correct." +
+                            " It has to be of the form \{'content':[RAWSTRING]\}", status=status.HTTP_400_BAD_REQUEST)
+
+        for i in request.data:
+            print(i)
+        return Response(status=status.HTTP_200_OK)
\ No newline at end of file
diff --git a/LCU/MaintenanceDB/DBInterface/django_rest/urls.py b/LCU/MaintenanceDB/DBInterface/django_rest/urls.py
index 39c38b967fc63cd299f2f4e36c8228494bc468e8..5acd6050981e362f35d38c7564abb052d7e562ca 100644
--- a/LCU/MaintenanceDB/DBInterface/django_rest/urls.py
+++ b/LCU/MaintenanceDB/DBInterface/django_rest/urls.py
@@ -14,6 +14,7 @@ Including another URLconf
     2. Add a URL to urlpatterns:  path('blog/', include('blog.urls'))
 """
 from django.contrib import admin
+
 from django.conf.urls import url, include
 from rest_framework import routers
 from .monitoringdb import views
@@ -25,5 +26,6 @@ router.register(r'componenterrors', views.ComponentErrorViewSet)
 
 urlpatterns = [
     url(r'^', include(router.urls)),
-    url(r'^api-auth', include('rest_framework.urls', namespace='rest_framework'))
+    url(r'^api-auth', include('rest_framework.urls', namespace='rest_framework')),
+    url(r'^stationtests/insert_raw', views.insert_raw_station_test)
 ]