diff --git a/SAS/TMSS/CMakeLists.txt b/SAS/TMSS/CMakeLists.txt
index 69ad4348c9afa07ccdea058b278c9e9caca995c1..80565a8d773c0e393b6078376fc35d3c9da81261 100644
--- a/SAS/TMSS/CMakeLists.txt
+++ b/SAS/TMSS/CMakeLists.txt
@@ -6,7 +6,7 @@ lofar_add_package(TMSSClient client)
 add_subdirectory(src)
 add_subdirectory(bin)
 add_subdirectory(test)
-add_subdirectory(frontend)
+#add_subdirectory(frontend)
 add_subdirectory(services)
 
 lofar_add_docker_files(docker-compose-tmss.yml)
diff --git a/SAS/TMSS/src/tmss/tmssapp/migrations/0001_initial.py b/SAS/TMSS/src/tmss/tmssapp/migrations/0001_initial.py
index 7faae82d9b3a694ab79ebddd5b3d0c5676d8ffac..47b1e1b14978b87776e7d3a2912ce84ac0c8359e 100644
--- a/SAS/TMSS/src/tmss/tmssapp/migrations/0001_initial.py
+++ b/SAS/TMSS/src/tmss/tmssapp/migrations/0001_initial.py
@@ -1,4 +1,4 @@
-# Generated by Django 3.0.7 on 2020-10-29 16:37
+# Generated by Django 3.0.9 on 2020-11-24 11:24
 
 from django.conf import settings
 import django.contrib.postgres.fields
@@ -397,6 +397,7 @@ class Migration(migrations.Migration):
                 ('name', models.CharField(help_text='Human-readable name of this object.', max_length=128, primary_key=True, serialize=False)),
                 ('priority_rank', models.FloatField(help_text='Priority of this project w.r.t. other projects. Projects can interrupt observations of lower-priority projects.')),
                 ('trigger_priority', models.IntegerField(default=1000, help_text='Priority of this project w.r.t. triggers.')),
+                ('auto_ingest', models.BooleanField(default=False, help_text='True if The data is ingested when the other scheduling unit tasks are finished. False if The data is ingested after approval in the QA validation workflow. At the end of this a flag is set that the data can be ingested.')),
                 ('can_trigger', models.BooleanField(default=False, help_text='True if this project is allowed to supply observation requests on the fly, possibly interrupting currently running observations (responsive telescope).')),
                 ('private_data', models.BooleanField(default=True, help_text='True if data of this project is sensitive. Sensitive data is not made public.')),
                 ('expert', models.BooleanField(default=False, help_text='Expert projects put more responsibility on the PI.')),
@@ -543,6 +544,8 @@ class Migration(migrations.Migration):
                 ('description', models.CharField(blank=True, default='', help_text='A longer description of this object.', max_length=255)),
                 ('requirements_doc', django.contrib.postgres.fields.jsonb.JSONField(help_text='Scheduling and/or quality requirements for this scheduling unit (IMMUTABLE).')),
                 ('do_cancel', models.BooleanField()),
+                ('ingest_permission_required', models.BooleanField(default=False, help_text='Explicit permission is needed before the task.')),
+                ('ingest_permission_granted_since', models.DateTimeField(help_text='Moment of object creation.', null=True)),
             ],
             options={
                 'abstract': False,
@@ -560,6 +563,7 @@ class Migration(migrations.Migration):
                 ('requirements_doc', django.contrib.postgres.fields.jsonb.JSONField(help_text='Scheduling and/or quality requirements for this run.')),
                 ('generator_instance_doc', django.contrib.postgres.fields.jsonb.JSONField(help_text='Parameter value that generated this run draft (NULLable).', null=True)),
                 ('scheduling_constraints_doc', django.contrib.postgres.fields.jsonb.JSONField(help_text='Scheduling Constraints for this run.', null=True)),
+                ('ingest_permission_required', models.BooleanField(default=False, help_text='Explicit permission is needed before the task.')),
             ],
             options={
                 'abstract': False,
diff --git a/SAS/TMSS/src/tmss/tmssapp/models/specification.py b/SAS/TMSS/src/tmss/tmssapp/models/specification.py
index 7ec6f980a09fb9dd3d765efb164611a5d898b8a6..2879c2059daabe4d050898906c48808c81df4d55 100644
--- a/SAS/TMSS/src/tmss/tmssapp/models/specification.py
+++ b/SAS/TMSS/src/tmss/tmssapp/models/specification.py
@@ -440,6 +440,7 @@ class Project(NamedCommonPK):
     cycles = ManyToManyField('Cycle', related_name='projects', null=True, help_text='Cycles to which this project belongs (NULLable).')
     priority_rank = FloatField(null=False, help_text='Priority of this project w.r.t. other projects. Projects can interrupt observations of lower-priority projects.') # todo: add if needed: validators=[MinValueValidator(0.0), MaxValueValidator(1.0)]
     trigger_priority = IntegerField(default=1000, help_text='Priority of this project w.r.t. triggers.') # todo: verify meaning and add to help_text: "Triggers with higher priority than this threshold can interrupt observations of projects."
+    auto_ingest = BooleanField(default=False, help_text='True if The data is ingested when the other scheduling unit tasks are finished. False if The data is ingested after approval in the QA validation workflow. At the end of this a flag is set that the data can be ingested.')
     can_trigger = BooleanField(default=False, help_text='True if this project is allowed to supply observation requests on the fly, possibly interrupting currently running observations (responsive telescope).')
     private_data = BooleanField(default=True, help_text='True if data of this project is sensitive. Sensitive data is not made public.')
     expert = BooleanField(default=False, help_text='Expert projects put more responsibility on the PI.')
@@ -545,6 +546,7 @@ class SchedulingUnitDraft(NamedCommon):
     observation_strategy_template = ForeignKey('SchedulingUnitObservingStrategyTemplate', on_delete=PROTECT, null=True, help_text='Observation Strategy Template used to create the requirements_doc.')
     scheduling_constraints_doc = JSONField(help_text='Scheduling Constraints for this run.', null=True)
     scheduling_constraints_template = ForeignKey('SchedulingConstraintsTemplate', on_delete=CASCADE, null=True, help_text='Schema used for scheduling_constraints_doc.')
+    ingest_permission_required = BooleanField(default=False, help_text='Explicit permission is needed before the task.')
 
     def save(self, force_insert=False, force_update=False, using=None, update_fields=None):
         if self.requirements_doc is not None and self.requirements_template_id and self.requirements_template.schema is not None:
@@ -556,6 +558,11 @@ class SchedulingUnitDraft(NamedCommon):
         if self.scheduling_constraints_doc is not None and self.scheduling_constraints_template_id and self.scheduling_constraints_template.schema is not None:
             validate_json_against_schema(self.scheduling_constraints_doc, self.scheduling_constraints_template.schema)
 
+        if self.scheduling_set.project.auto_ingest is False:
+            #When auto_ingest=False, the scheduling units will be created with ingest_permission_required = True
+            self.ingest_permission_required=True
+
+
         annotate_validate_add_defaults_to_doc_using_template(self, 'requirements_doc', 'requirements_template')
         annotate_validate_add_defaults_to_doc_using_template(self, 'scheduling_constraints_doc', 'scheduling_constraints_template')
         super().save(force_insert, force_update, using, update_fields)
@@ -603,11 +610,17 @@ class SchedulingUnitBlueprint(NamedCommon):
 
     requirements_doc = JSONField(help_text='Scheduling and/or quality requirements for this scheduling unit (IMMUTABLE).')
     do_cancel = BooleanField()
+    ingest_permission_required = BooleanField(default=False, help_text='Explicit permission is needed before the task.')
+    ingest_permission_granted_since = DateTimeField(auto_now_add=False, null=True, help_text='Moment of object creation.')
     requirements_template = ForeignKey('SchedulingUnitTemplate', on_delete=CASCADE, help_text='Schema used for requirements_doc (IMMUTABLE).')
     draft = ForeignKey('SchedulingUnitDraft', related_name='scheduling_unit_blueprints', on_delete=CASCADE, help_text='Scheduling Unit Draft which this run instantiates.')
 
     def save(self, force_insert=False, force_update=False, using=None, update_fields=None):
         annotate_validate_add_defaults_to_doc_using_template(self, 'requirements_doc', 'requirements_template')
+       
+        if self.draft.scheduling_set.project.auto_ingest is False:
+            #When auto_ingest=False, the scheduling units will be created with ingest_permission_required = True
+            self.ingest_permission_required=True
 
         super().save(force_insert, force_update, using, update_fields)
 
diff --git a/SAS/TMSS/src/tmss/workflowapp/migrations/0001_initial.py b/SAS/TMSS/src/tmss/workflowapp/migrations/0001_initial.py
index 1da372c3f5a8ea06e95f13d9861676f8bcdf8636..cdea4f733fe87cb65a93715ce9fe5f4ebf25f750 100644
--- a/SAS/TMSS/src/tmss/workflowapp/migrations/0001_initial.py
+++ b/SAS/TMSS/src/tmss/workflowapp/migrations/0001_initial.py
@@ -1,4 +1,4 @@
-# Generated by Django 3.0.9 on 2020-11-02 14:31
+# Generated by Django 3.0.9 on 2020-11-24 11:24
 
 from django.db import migrations, models
 import django.db.models.deletion