diff --git a/flowspec/models.py b/flowspec/models.py
index 2b9a2ba2863910f86edc377a2f450ea9063295e9..e3a1c197ca7c3ee91e5385b1b0b3cf4064d7aa85 100644
--- a/flowspec/models.py
+++ b/flowspec/models.py
@@ -90,6 +90,7 @@ ROUTE_STATES = (
     ("OUTOFSYNC", "OUTOFSYNC"),
     ("INACTIVE", "INACTIVE"),
     ("ADMININACTIVE", "ADMININACTIVE"),
+    ("INACTIVE_TODELETE", "INACTIVE_TODELETE"),
 )
 
 
@@ -310,6 +311,7 @@ class Route(models.Model):
 
     def commit_delete(self, *args, **kwargs):
         logger.info("model::commit_delete(): route="+str(self)+", kwargs="+str(kwargs))
+
         username = None
         reason_text = ''
         reason = ''
@@ -535,7 +537,7 @@ class Route(models.Model):
                     self.status = "ACTIVE"
                     self.save()
                     found = True
-            if self.status == "ADMININACTIVE" or self.status == "INACTIVE" or self.status == "EXPIRED":
+            if self.status == "ADMININACTIVE" or self.status == "INACTIVE" or self.status == "INACTIVE_TODELETE" or self.status == "EXPIRED":
                 found = True
         return found
 
@@ -630,7 +632,7 @@ class Route(models.Model):
 
     @property
     def days_to_expire(self):
-        if self.status not in ['EXPIRED', 'ADMININACTIVE', 'ERROR', 'INACTIVE']:
+        if self.status not in ['EXPIRED', 'ADMININACTIVE', 'ERROR', 'INACTIVE', 'INACTIVE_TODELETE']:
             expiration_days = (self.expires - datetime.date.today()).days
             if expiration_days < settings.EXPIRATION_NOTIFY_DAYS:
                 return "%s" %expiration_days
diff --git a/flowspec/tasks.py b/flowspec/tasks.py
index 8d0ed06d054772b6d6a45d27811d23b20750c107..6e6d4ca0d09bf58570a52331845331f094cb01de 100644
--- a/flowspec/tasks.py
+++ b/flowspec/tasks.py
@@ -138,43 +138,49 @@ def edit(route, callback=None):
 
 @task(ignore_result=True)
 def delete(route, **kwargs):
-    logger.info("tasks::delete(): called")
+    logger.info("tasks::delete(): called route="+str(route))
+    logger.info("tasks::delete(): called route.dir="+str(dir(route)))
     logger.info("tasks::delete(): called kwargs="+str(kwargs))
+    initial_status = route.status
+    logger.info("tasks::delete(): called initial_status="+str(initial_status))
     try:
         applier = PR.Applier(route_object=route)
         commit, response = applier.apply(operation="delete")
         reason_text = ''
+        logger.info("tasks::delete(): called commit="+str(commit))
         if commit:
-            status = "INACTIVE"
-            if "reason" in kwargs and kwargs['reason'] == 'EXPIRED':
-                status = 'EXPIRED'
-                reason_text = " Reason: %s " % status
-            else:
-                status = 'DELETED'
-            route.status = status
-            route.response = response
-            if route.status == "DELETED": # special new case for fully deleting a rule via REST API
+              status = "INACTIVE"
+              if "reason" in kwargs and kwargs['reason'] == 'EXPIRED':
+                  status = 'EXPIRED'
+                  reason_text = " Reason: %s " % status
+        else:
+                  status = "ERROR"
+
+        if commit and initial_status == "INACTIVE_TODELETE": # special new case for fully deleting a rule via REST API
               route.delete()
               msg1 = "[%s] Fully deleted rule : %s%s- Result %s" % (route.applier, route.name, reason_text, response)
               logger.info("tasks::delete(): DELETED msg="+msg1)
               announce(msg1, route.applier, route)
-            else:
+        else:
+              route.status = status
+              route.response = response
+
               route.save()
               msg1 = "[%s] Suspending rule : %s%s- Result %s" % (route.applier, route.name, reason_text, response)
               logger.info("tasks::delete(): msg="+msg1)
               announce(msg1 , route.applier, route)
-            try:
+        try:
               snmp_add_initial_zero_value.delay(str(route.id), False)
-            except Exception as e:
+        except Exception as e:
               logger.error("tasks::delete(): route="+str(route)+", INACTIVE, add_null_value failed: "+str(e))
-        else:
-            status = "ERROR"
-            route.status = status
-            route.response = response
-            route.save()
-            msg1 = "[%s] Suspending rule : %s%s- Result %s" % (route.applier, route.name, reason_text, response)
-            logger.info("tasks::delete(): ERROR msg="+msg1)
-            announce(msg1, route.applier, route)
+#        else:
+#            status = "ERROR"
+#            route.status = status
+#            route.response = response
+#            route.save()
+#            msg1 = "[%s] Suspending rule : %s%s- Result %s" % (route.applier, route.name, reason_text, response)
+#            logger.info("tasks::delete(): ERROR msg="+msg1)
+#            announce(msg1, route.applier, route)
     except TimeLimitExceeded:
         route.status = "ERROR"
         route.response = "Task timeout"
diff --git a/flowspec/validators.py b/flowspec/validators.py
index fce7796f6ab0e5cd85de42c14ec2b626d695928f..c20aa0facf073fe7afb75cbbfc457adf1a459fa4 100644
--- a/flowspec/validators.py
+++ b/flowspec/validators.py
@@ -41,7 +41,7 @@ def clean_status(status):
     :rtype: str
     """
 
-    allowed_states = ['ACTIVE', 'INACTIVE']
+    allowed_states = ['ACTIVE', 'INACTIVE', 'INACTIVE_TODELETE']
 
     if status not in allowed_states:
         return _('Invalid status value. You are allowed to use "{}".'.format(
diff --git a/flowspec/viewsets.py b/flowspec/viewsets.py
index 4d040da0cf353e766af3acacd855dfdce6e4d8d0..d74297bc52f81d21ba15d65499234cf7276a851f 100644
--- a/flowspec/viewsets.py
+++ b/flowspec/viewsets.py
@@ -170,6 +170,16 @@ class RouteViewSet(viewsets.ModelViewSet):
         if serializer.is_valid():
             new_status = serializer.object.status
             super(RouteViewSet, self).update(request, pk, partial=partial)
+
+            logger.info("RouteViewSet::update(): called request="+str(request))
+            if request.META.has_key('HTTP_X_METHODOVERRIDE'):
+              method_overriden = request.META['HTTP_X_METHODOVERRIDE']
+              logger.info("RouteViewSet::update(): HTTP_X_METHODOVERRIDE="+str(method_overriden))
+              if method_overriden == "DELETE":
+                logger.info("RouteViewSet::update(): redirecting to delete with full delete on")
+                obj.status = "INACTIVE_TODELETE"
+                return self.delete(obj)
+
             if old_status == 'ACTIVE':
                 work_on_active_object(obj, new_status)
             elif old_status in ['INACTIVE', 'ERROR']:
@@ -198,13 +208,17 @@ class RouteViewSet(viewsets.ModelViewSet):
     def helper_override_user(self, obj):
         #if self.request.user.is_superuser and obj.applier!=None:
         from django.contrib.auth.models import User
-        if self.request.user.is_superuser and self.request.POST["applier"]!=None:
-          os.write(4, "debug requesta1 "+str(self.request.POST["applier"])+"\n")
-          obj.applier = User.objects.get(username=self.request.POST["applier"])
+        applier_speced = None
+        if "applier" in self.request.POST:
+          applier_speced = self.request.POST["applier"]
+        if self.request.user.is_superuser and applier_speced!=None:
+          os.write(4, "debug requesta1 "+str(applier_speced)+"\n")
+          obj.applier = User.objects.get(username=applier_speced)
         elif self.request.user.is_superuser:
-          os.write(4, "debug requesta2 "+str(self.request.POST["applier"])+"\n")
+          os.write(4, "debug requesta2 "+str(applier_speced)+"\n")
           #obj.applier = self.request.user
-          obj.applier = User.objects.get(username='tomas.jra2t6')
+          #obj.applier = User.objects.get(username='tomas.jra2t6')
+          obj.applier = User.objects.get(username='david.jra2t6')
           #raise PermissionDenied('Is superuser')
           #obj.applier = User.objects.get(id='tomas.jra2t6')
           #logger.info("debug request "+str(self.request))
@@ -216,7 +230,7 @@ class RouteViewSet(viewsets.ModelViewSet):
           #os.write(4, "debug requestd "+str(dir(self.request))+"\n")
           #os.write(4, "debug requestd "+str(type(self.request.POST))+"\n")
           #os.write(4, "debug requestd "+str(dir(self.request.POST))+"\n")
-          #os.write(4, "debug requesta "+str(self.request.POST["applier"])+"\n")
+          #os.write(4, "debug requesta "+str(applier_speced)+"\n")
           #obj.comments = obj.comments+" "+str(os.getpid())
         else:
           #raise PermissionDenied('Is not superuser')
@@ -227,8 +241,9 @@ class RouteViewSet(viewsets.ModelViewSet):
             obj.commit_add()
 
     def pre_delete(self, obj):
+        logger.info("RouteViewSet::pre_delete(): called "+str(self)+", obj="+str(obj))
         obj.commit_delete()
-
+        logger.info("RouteViewSet::pre_delete(): returning "+str(self)+", obj="+str(obj))
 
 class PortViewSet(viewsets.ModelViewSet):
     queryset = MatchPort.objects.all()