diff --git a/SAS/TMSS/src/tmss/tmssapp/models/specification.py b/SAS/TMSS/src/tmss/tmssapp/models/specification.py
index e340f10ecec6ea2cefdd5483af7f0483309f96b1..62637ef366e31597b47d230a16c5549304c6a0b0 100644
--- a/SAS/TMSS/src/tmss/tmssapp/models/specification.py
+++ b/SAS/TMSS/src/tmss/tmssapp/models/specification.py
@@ -8,13 +8,9 @@ from django.contrib.postgres.indexes import GinIndex
 from enum import Enum
 from django.db.models.expressions import RawSQL
 from django.db.models.deletion import ProtectedError
-from lofar.common.json_utils import validate_json_against_schema
+from lofar.common.json_utils import validate_json_against_schema, validate_json_against_its_schema
 from django.core.exceptions import ValidationError
-from django.urls import reverse as reverse_path
-from rest_framework import status
 import datetime
-import json
-from lofar.common import json_utils
 
 #
 # Common
@@ -220,6 +216,24 @@ class Template(NamedCommon):
         # TODO: remove all <class>_unique_name_version UniqueConstraint's from the subclasses and replace by this line below when we start using django 3.0
         # constraints = [UniqueConstraint(fields=['name', 'version'], name='%(class)s_unique_name_version')]
 
+    def save(self, force_insert=False, force_update=False, using=None, update_fields=None):
+        # if not self.schema.get('$id', '').startswith('http'):
+        #     raise ValidationError("No valid $id to http URL given")
+
+        if 'title' not in self.schema:
+            self.schema['title'] = self.name
+
+        if 'description' not in self.schema:
+            self.schema['description'] = self.description
+
+        if 'version' not in self.schema:
+            self.schema['version'] = self.version
+
+        if '$schema' in self.schema:
+            validate_json_against_its_schema(self.schema)
+
+        super().save(force_insert, force_update, using, update_fields)
+
 
 # concrete models