diff --git a/README.md b/README.md
index 6dc314ee1a31f5e9cbc2640c8a26bdc9b20f56d5..59e28d42547d4a28629bebcc57216c88360daa10 100644
--- a/README.md
+++ b/README.md
@@ -242,6 +242,16 @@ REST_FRAMEWORK = {
 }
 ```
  
+## Sources
+To enable sources auto creation for all models, change `djangoldp` by `djangoldp.apps.DjangoldpConfig`, on `INSTALLED_APPS`
+
+```python
+INSTALLED_APPS = [
+    'djangoldp.apps.DjangoldpConfig',
+]
+```
+
+
 ## License
 
 Licence MIT
diff --git a/djangoldp/__init__.py b/djangoldp/__init__.py
index 8169cccc71c380b248ddf6b13d84993ff3e05a5d..cfe28de3e22a9bc8747e9e68b927a0e98ec7cebd 100644
--- a/djangoldp/__init__.py
+++ b/djangoldp/__init__.py
@@ -1,4 +1,7 @@
 from django.db.models import options
 
 __version__ = '0.0.0'
-options.DEFAULT_NAMES += ('lookup_field', 'rdf_type', 'rdf_context', 'auto_author', 'owner_field', 'view_set', 'container_path', 'permission_classes', 'serializer_fields', 'nested_fields', 'depth', 'anonymous_perms', 'authenticated_perms', 'owner_perms')
+options.DEFAULT_NAMES += (
+    'lookup_field', 'rdf_type', 'rdf_context', 'auto_author', 'owner_field', 'view_set', 'container_path',
+    'permission_classes', 'serializer_fields', 'nested_fields', 'depth', 'anonymous_perms', 'authenticated_perms',
+    'owner_perms')
diff --git a/djangoldp/apps.py b/djangoldp/apps.py
index e6a226fcaff4cfdb4c268b2711ca476cf4c85bb3..aac1db2d29b4762799d19e01d606c03d8b7b09cd 100644
--- a/djangoldp/apps.py
+++ b/djangoldp/apps.py
@@ -3,3 +3,21 @@ from django.apps import AppConfig
 
 class DjangoldpConfig(AppConfig):
     name = 'djangoldp'
+
+    def ready(self):
+        self.create_local_source()
+
+    def create_local_source(self):
+        from djangoldp.models import LDPSource, Model
+
+        model_classes = {cls.__name__: cls for cls in Model.__subclasses__()}
+
+        for class_name in model_classes:
+            model_class = model_classes[class_name]
+            if model_class is LDPSource:
+                continue
+            path = model_class.get_container_path().strip("/")
+            try:
+                existing_source = LDPSource.objects.get(federation=path)
+            except LDPSource.DoesNotExist:
+                LDPSource.objects.create(federation=path, urlid=Model.absolute_url(model_class))
diff --git a/djangoldp/models.py b/djangoldp/models.py
index 3340dc4f501d908f997b336064ff2ad0f23dc0fa..76662dc225f40ace69bc8706fd1f597e1004a117 100644
--- a/djangoldp/models.py
+++ b/djangoldp/models.py
@@ -34,10 +34,14 @@ class Model(models.Model):
         return cls.__clean_path(path)
 
     def get_absolute_url(self):
-        if self.urlid is None or self.urlid != '':
-            return '{}{}'.format(settings.BASE_URL, Model.resource_id(self))
+        return Model.absolute_url(self)
+
+    @classonlymethod
+    def absolute_url(cls, instance_or_model):
+        if isinstance(instance_or_model, ModelBase) or instance_or_model.urlid is None or instance_or_model.urlid == '':
+            return '{}{}'.format(settings.BASE_URL, Model.resource(instance_or_model))
         else:
-            return self.urlid
+            return instance_or_model.urlid
 
     def get_container_id(self):
         return Model.container_id(self)