diff --git a/xos/attic/monitoringchannel_model.py b/xos/attic/monitoringchannel_model.py
index 458759a..250d6c1 100644
--- a/xos/attic/monitoringchannel_model.py
+++ b/xos/attic/monitoringchannel_model.py
@@ -30,7 +30,7 @@
     #Allow creation of this model instances for non-admin users also
     return True
 
-def save(self, *args, **kwargs):
+def __xos_save_base(self, *args, **kwargs):
     if not self.creator:
         if not getattr(self, "caller", None):
             # caller must be set when creating a monitoring channel since it creates a slice
@@ -45,8 +45,8 @@
         if channel_count > 0:
             raise XOSValidationError("Already %s channels exist for user Can only create max 1 MonitoringChannel instance per user" % str(channel_count))
 
-    super(MonitoringChannel, self).save(*args, **kwargs)
     model_policy_monitoring_channel(self.pk)
+    return False
 
 def delete(self, *args, **kwargs):
     self.cleanup_container()
@@ -183,4 +183,4 @@
     ceilometer_services = CeilometerService.get_service_objects().all()
     if not ceilometer_services:
         return None
-    return ceilometer_services[0].kafka_url
\ No newline at end of file
+    return ceilometer_services[0].kafka_url
diff --git a/xos/attic/onosservicemonitoringpublisher_model.py b/xos/attic/onosservicemonitoringpublisher_model.py
index 1f6137f..037227e 100644
--- a/xos/attic/onosservicemonitoringpublisher_model.py
+++ b/xos/attic/onosservicemonitoringpublisher_model.py
@@ -21,7 +21,7 @@
     #Don't allow creation of this model instances for non-admin users also
     return False
 
-def save(self, *args, **kwargs):
+def __xos_save_base(self, *args, **kwargs):
     if not self.creator:
         if not getattr(self, "caller", None):
             # caller must be set when creating a monitoring channel since it creates a slice
@@ -36,4 +36,4 @@
         if publisher_count > 0:
             raise XOSValidationError("Already %s openstack publishers exist for user Can only create max 1 ONOSServiceMonitoringPublisher instance per user" % str(publisher_count))
 
-    super(ONOSServiceMonitoringPublisher, self).save(*args, **kwargs)
\ No newline at end of file
+    return False
diff --git a/xos/attic/openstackservicemonitoringpublisher_model.py b/xos/attic/openstackservicemonitoringpublisher_model.py
index 23102f5..c6dfa7e 100644
--- a/xos/attic/openstackservicemonitoringpublisher_model.py
+++ b/xos/attic/openstackservicemonitoringpublisher_model.py
@@ -21,7 +21,7 @@
     #Don't allow creation of this model instances for non-admin users also
     return False
 
-def save(self, *args, **kwargs):
+def __xos_save_base(self, *args, **kwargs):
     if not self.creator:
         if not getattr(self, "caller", None):
             # caller must be set when creating a monitoring channel since it creates a slice
@@ -36,4 +36,5 @@
         if publisher_count > 0:
             raise XOSValidationError("Already %s openstack publishers exist for user Can only create max 1 OpenStackServiceMonitoringPublisher instance per user" % str(publisher_count))
 
-    super(OpenStackServiceMonitoringPublisher, self).save(*args, **kwargs)
\ No newline at end of file
+    return False
+
diff --git a/xos/attic/sflowtenant_model.py b/xos/attic/sflowtenant_model.py
index 3132df1..2c0227c 100644
--- a/xos/attic/sflowtenant_model.py
+++ b/xos/attic/sflowtenant_model.py
@@ -56,7 +56,7 @@
         raise XOSProgrammingError("SFlowTenant: Only UDP listening endpoint URLs are accepted...valid syntax is: udp://ip:port")
     self.set_attribute("listening_endpoint", value)
 
-def save(self, *args, **kwargs):
+def __xos_save_base(self, *args, **kwargs):
     if not self.creator:
         if not getattr(self, "caller", None):
             # caller must be set when creating a SFlow tenant since it creates a slice
@@ -74,7 +74,7 @@
         if channel_count > 0:
             raise XOSValidationError("Already %s sflow channels exist for user Can only create max 1 tenant per user and listening endpoint" % str(channel_count))
 
-    super(SFlowTenant, self).save(*args, **kwargs)
+    return False
 
 def delete(self, *args, **kwargs):
     super(MonitoringChannel, self).delete(*args, **kwargs)
diff --git a/xos/attic/userservicemonitoringpublisher_model.py b/xos/attic/userservicemonitoringpublisher_model.py
index 9bee3eb..5ac3335 100644
--- a/xos/attic/userservicemonitoringpublisher_model.py
+++ b/xos/attic/userservicemonitoringpublisher_model.py
@@ -90,7 +90,7 @@
         self.cached_service_monitoring_agent = None
     self.set_attribute("service_monitoring_agent", value)
 
-def save(self, *args, **kwargs):
+def __xos_save_base(self, *args, **kwargs):
     if not self.creator:
         if not getattr(self, "caller", None):
             # caller must be set when creating a monitoring channel since it creates a slice
@@ -128,4 +128,6 @@
             tenancy_from_target_service.delete()
         if service_monitoring_agent:
             service_monitoring_agent.delete()
-        raise
\ No newline at end of file
+        raise
+
+    return True     # Indicate that we called super.save()
