diff --git a/xos/attic/monitoringpublisher_model.py b/xos/attic/monitoringpublisher_model.py
new file mode 100644
index 0000000..9769591
--- /dev/null
+++ b/xos/attic/monitoringpublisher_model.py
@@ -0,0 +1,33 @@
+default_attributes = {}
+def __init__(self, *args, **kwargs):
+    ceilometer_services = CeilometerService.get_service_objects().all()
+    if ceilometer_services:
+        self._meta.get_field("provider_service").default = ceilometer_services[0].id
+    super(MonitoringPublisher, self).__init__(*args, **kwargs)
+
+def can_update(self, user):
+    #Allow creation of this model instances for non-admin users also
+    return True
+
+@property
+def creator(self):
+    from core.models import User
+    if getattr(self, "cached_creator", None):
+        return self.cached_creator
+    creator_id=self.get_attribute("creator_id")
+    if not creator_id:
+        return None
+    users=User.objects.filter(id=creator_id)
+    if not users:
+        return None
+    user=users[0]
+    self.cached_creator = users[0]
+    return user
+
+@creator.setter
+def creator(self, value):
+    if value:
+        value = value.id
+    if (value != self.get_attribute("creator_id", None)):
+        self.cached_creator=None
+    self.set_attribute("creator_id", value)
\ No newline at end of file
