diff --git a/beat/web/backend/migrations/0002_auto_20160330_0005.py b/beat/web/backend/migrations/0002_auto_20160330_0005.py
index 6ab1f84015350aaf58accdc9c456eb21e5ed6583..6b8005e4ead446e018d7c8d9b5451c72f3be4927 100644
--- a/beat/web/backend/migrations/0002_auto_20160330_0005.py
+++ b/beat/web/backend/migrations/0002_auto_20160330_0005.py
@@ -46,6 +46,11 @@ class Migration(migrations.Migration):
             name='memory',
             field=models.PositiveIntegerField(default=0, help_text=b'In megabytes'),
         ),
+        migrations.AlterField(
+            model_name='queue',
+            name='name',
+            field=models.CharField(help_text=b'The name for this object (space-like characters will be automatically replaced by dashes)', unique=True, max_length=100),
+        ),
         migrations.AlterField(
             model_name='queue',
             name='cores_per_slot',
diff --git a/beat/web/backend/models.py b/beat/web/backend/models.py
index 747c477a7fd6afb74b13d0571cfb7b4bec2a8353..dbda3dcca177e40697975c55c78160b98e4bcea1 100644
--- a/beat/web/backend/models.py
+++ b/beat/web/backend/models.py
@@ -38,6 +38,15 @@ from ..common.texts import Messages
 #----------------------------------------------------------
 
 
+class EnvironmentManager(models.Manager):
+
+    def get_by_natural_key(self, name, version):
+        return self.get(
+                name=name,
+                version=version,
+                )
+
+
 class Environment(Shareable):
     """Defines a software environment to run algorithms"""
 
@@ -81,6 +90,8 @@ class Environment(Shareable):
         on_delete=models.SET_NULL,
         )
 
+    objects = EnvironmentManager()
+
     #_____ Meta parameters __________
 
     class Meta:
@@ -92,6 +103,10 @@ class Environment(Shareable):
         return self.fullname()
 
 
+    def natural_key(self):
+        return (self.name, self.version)
+
+
     #_____ Utilities __________
 
     def fullname(self):
@@ -119,6 +134,12 @@ class Environment(Shareable):
 #----------------------------------------------------------
 
 
+class WorkerManager(models.Manager):
+
+    def get_by_natural_key(self, name):
+        return self.get(name=name)
+
+
 class Worker(models.Model):
 
     name = models.CharField(
@@ -139,6 +160,8 @@ class Worker(models.Model):
     info = models.TextField(null=True, blank=True,
         help_text='Informative message from the worker in case it is inactive')
 
+    objects = WorkerManager()
+
 
     #_____ Overrides __________
 
@@ -149,6 +172,10 @@ class Worker(models.Model):
         return retval
 
 
+    def natural_key(self):
+        return self.name
+
+
     def load(self):
         '''Calculates the number of cores being used currently'''
         return sum([j.block.queue.cores_per_slot for j in self.jobs])
@@ -177,9 +204,16 @@ class Worker(models.Model):
 #----------------------------------------------------------
 
 
+class QueueManager(models.Manager):
+
+    def get_by_natural_key(self, name):
+        return self.get(name=name)
+
+
 class Queue(models.Model):
 
-    name = models.CharField(max_length=100, help_text=Messages['name'])
+    name = models.CharField(max_length=100, help_text=Messages['name'],
+        unique=True)
 
     memory_limit = models.PositiveIntegerField(help_text='In megabytes')
 
@@ -213,6 +247,11 @@ class Queue(models.Model):
             self.max_slots_per_user
             )
 
+
+    def natural_key(self):
+        return self.name
+
+
     #_____ Utilities __________
 
     def number_of_slots(self):
@@ -264,6 +303,12 @@ class Queue(models.Model):
         return [w[0] for w in workers]
 
 
+class SlotManager(models.Manager):
+
+    def get_by_natural_key(self, queue_name, worker_name):
+        return self.get(queue__name=queue_name, worker__name=worker_name)
+
+
 class Slot(models.Model):
 
     queue = models.ForeignKey(Queue, related_name='slots',
@@ -282,6 +327,8 @@ class Slot(models.Model):
         help_text='Priority of these slots on the defined queue'
         )
 
+    objects = SlotManager()
+
     #_____ Meta parameters __________
 
     class Meta:
@@ -291,3 +338,7 @@ class Slot(models.Model):
 
     def __str__(self):
         return '%s - %s (slots: %d, priority: %d)' % (self.queue, self.worker, self.quantity, self.priority)
+
+
+    def natural_key(self):
+        return (self.queue.name, self.worker.name)