diff --git a/ldvspec/lofardata/forms.py b/ldvspec/lofardata/forms.py
index 8542d95ab7e91267e7212f160110a686ecda0ba1..faa5152bbb8f74145d54a9e5a9c728ff61583aa7 100644
--- a/ldvspec/lofardata/forms.py
+++ b/ldvspec/lofardata/forms.py
@@ -1,3 +1,5 @@
+from django.core.exceptions import ValidationError
+
 from .models import WorkSpecification, DataProductFilter
 
 from django.forms import ModelForm
@@ -20,6 +22,9 @@ class WorkSpecificationForm(ModelForm):
     def clean(self):
         self.cleaned_data = super().clean()
         self.cleaned_data["filters"] = self._extract_filters()
+        if not 'obs_id' in self.cleaned_data["filters"]:
+            raise ValidationError(["obs_id: This field is required."])
+
         return self.cleaned_data
 
     class Meta:
diff --git a/ldvspec/lofardata/templates/lofardata/workspecification/create_update.html b/ldvspec/lofardata/templates/lofardata/workspecification/create_update.html
index 4eb6bb9e117d5af056fa8fb525694acbd8df0368..c2952bd73d3e16a089553d1701ee490bdada469c 100644
--- a/ldvspec/lofardata/templates/lofardata/workspecification/create_update.html
+++ b/ldvspec/lofardata/templates/lofardata/workspecification/create_update.html
@@ -204,7 +204,11 @@
                             The input is invalid:
                             {% for field, errors in form.errors.items %}
                                 {% for error in errors %}
-                                    <li class="text text--red text--faded">{{ field }}: {{ error }}</li>
+                                    {% if field == '__all__' %}
+                                        <li class="text text--red text--faded">{{ error }}</li>
+                                    {% else %}
+                                        <li class="text text--red text--faded">{{ field }}: {{ error }}</li>
+                                    {% endif %}
                                 {% endfor %}
                             {% endfor %}
                         </div>