diff --git a/.gitattributes b/.gitattributes
index 27dfb3738524b158d852e9d4e3d805b45e7945f5..f3877990fe9ae8d063e7a90298fd41346de0a1b3 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -4245,7 +4245,6 @@ SAS/LSMR/src/lsmr/lsmrapp/__init__.py -text
 SAS/LSMR/src/lsmr/lsmrapp/admin.py -text
 SAS/LSMR/src/lsmr/lsmrapp/apps.py -text
 SAS/LSMR/src/lsmr/lsmrapp/migrations/0001_initial.py -text
-SAS/LSMR/src/lsmr/lsmrapp/migrations/0002_auto_20180712_0931.py -text
 SAS/LSMR/src/lsmr/lsmrapp/migrations/0003_populate.py -text
 SAS/LSMR/src/lsmr/lsmrapp/migrations/CMakeLists.txt -text
 SAS/LSMR/src/lsmr/lsmrapp/migrations/__init__.py -text
diff --git a/SAS/LSMR/src/lsmr/lsmrapp/migrations/0002_auto_20180712_0931.py b/SAS/LSMR/src/lsmr/lsmrapp/migrations/0002_auto_20180712_0931.py
deleted file mode 100644
index 2ffd18001c1a51245d245878042c3cd75f2230b0..0000000000000000000000000000000000000000
--- a/SAS/LSMR/src/lsmr/lsmrapp/migrations/0002_auto_20180712_0931.py
+++ /dev/null
@@ -1,441 +0,0 @@
-# Generated by Django 2.0.6 on 2018-07-12 09:31
-
-import django.contrib.postgres.fields
-import django.contrib.postgres.fields.jsonb
-import django.contrib.postgres.indexes
-from django.db import migrations, models
-import django.db.models.deletion
-
-
-class Migration(migrations.Migration):
-
-    initial = True
-
-    dependencies = [
-        ('lsmrapp', '0001_initial'),
-    ]
-
-    operations = [
-        migrations.CreateModel(
-            name='CopyReasonChoice',
-            fields=[
-                ('value', models.CharField(editable=False, max_length=30, primary_key=True, serialize=False, unique=True)),
-            ],
-            options={
-                'abstract': False,
-            },
-        ),
-        migrations.CreateModel(
-            name='Cycle',
-            fields=[
-                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
-                ('tags', django.contrib.postgres.fields.ArrayField(base_field=models.CharField(max_length=30), blank=True, size=8)),
-                ('created_at', models.DateTimeField(auto_now_add=True)),
-                ('updated_at', models.DateTimeField(auto_now=True)),
-                ('name', models.CharField(max_length=30)),
-                ('start', models.DateTimeField()),
-            ],
-            options={
-                'abstract': False,
-            },
-        ),
-        migrations.CreateModel(
-            name='DataformatChoice',
-            fields=[
-                ('value', models.CharField(editable=False, max_length=30, primary_key=True, serialize=False, unique=True)),
-            ],
-            options={
-                'abstract': False,
-            },
-        ),
-        migrations.CreateModel(
-            name='DatatypeChoice',
-            fields=[
-                ('value', models.CharField(editable=False, max_length=30, primary_key=True, serialize=False, unique=True)),
-            ],
-            options={
-                'abstract': False,
-            },
-        ),
-        migrations.CreateModel(
-            name='DefaultGeneratorTemplate',
-            fields=[
-                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
-                ('tags', django.contrib.postgres.fields.ArrayField(base_field=models.CharField(max_length=30), blank=True, size=8)),
-                ('created_at', models.DateTimeField(auto_now_add=True)),
-                ('updated_at', models.DateTimeField(auto_now=True)),
-                ('name', models.CharField(max_length=30, unique=True)),
-            ],
-            options={
-                'abstract': False,
-            },
-        ),
-        migrations.CreateModel(
-            name='DefaultRunTemplate',
-            fields=[
-                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
-                ('tags', django.contrib.postgres.fields.ArrayField(base_field=models.CharField(max_length=30), blank=True, size=8)),
-                ('created_at', models.DateTimeField(auto_now_add=True)),
-                ('updated_at', models.DateTimeField(auto_now=True)),
-                ('name', models.CharField(max_length=30, unique=True)),
-            ],
-            options={
-                'abstract': False,
-            },
-        ),
-        migrations.CreateModel(
-            name='DefaultWorkRelationSelectionTemplate',
-            fields=[
-                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
-                ('tags', django.contrib.postgres.fields.ArrayField(base_field=models.CharField(max_length=30), blank=True, size=8)),
-                ('created_at', models.DateTimeField(auto_now_add=True)),
-                ('updated_at', models.DateTimeField(auto_now=True)),
-                ('name', models.CharField(max_length=30, unique=True)),
-            ],
-            options={
-                'abstract': False,
-            },
-        ),
-        migrations.CreateModel(
-            name='DefaultWorkRequestTemplate',
-            fields=[
-                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
-                ('tags', django.contrib.postgres.fields.ArrayField(base_field=models.CharField(max_length=30), blank=True, size=8)),
-                ('created_at', models.DateTimeField(auto_now_add=True)),
-                ('updated_at', models.DateTimeField(auto_now=True)),
-                ('name', models.CharField(max_length=30, unique=True)),
-            ],
-            options={
-                'abstract': False,
-            },
-        ),
-        migrations.CreateModel(
-            name='GeneratorTemplate',
-            fields=[
-                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
-                ('tags', django.contrib.postgres.fields.ArrayField(base_field=models.CharField(max_length=30), blank=True, size=8)),
-                ('created_at', models.DateTimeField(auto_now_add=True)),
-                ('updated_at', models.DateTimeField(auto_now=True)),
-                ('name', models.CharField(max_length=30)),
-                ('description', models.CharField(max_length=255)),
-                ('version', models.CharField(max_length=30)),
-                ('schema', django.contrib.postgres.fields.jsonb.JSONField()),
-                ('create_func', models.CharField(max_length=30)),
-            ],
-            options={
-                'abstract': False,
-            },
-        ),
-        migrations.CreateModel(
-            name='Project',
-            fields=[
-                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
-                ('tags', django.contrib.postgres.fields.ArrayField(base_field=models.CharField(max_length=30), blank=True, size=8)),
-                ('created_at', models.DateTimeField(auto_now_add=True)),
-                ('updated_at', models.DateTimeField(auto_now=True)),
-                ('name', models.CharField(max_length=30)),
-                ('priority', models.IntegerField(default=0)),
-                ('can_trigger', models.BooleanField(default=False)),
-                ('private_data', models.BooleanField(default=True)),
-                ('cycle', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='projects', to='lsmrapp.Cycle')),
-            ],
-            options={
-                'abstract': False,
-            },
-        ),
-        migrations.CreateModel(
-            name='RoleChoice',
-            fields=[
-                ('value', models.CharField(editable=False, max_length=30, primary_key=True, serialize=False, unique=True)),
-            ],
-            options={
-                'abstract': False,
-            },
-        ),
-        migrations.CreateModel(
-            name='Run',
-            fields=[
-                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
-                ('tags', django.contrib.postgres.fields.ArrayField(base_field=models.CharField(max_length=30), blank=True, size=8)),
-                ('created_at', models.DateTimeField(auto_now_add=True)),
-                ('updated_at', models.DateTimeField(auto_now=True)),
-                ('requirements_doc', django.contrib.postgres.fields.jsonb.JSONField()),
-                ('do_cancel', models.BooleanField()),
-            ],
-            options={
-                'abstract': False,
-            },
-        ),
-        migrations.CreateModel(
-            name='RunBlueprint',
-            fields=[
-                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
-                ('tags', django.contrib.postgres.fields.ArrayField(base_field=models.CharField(max_length=30), blank=True, size=8)),
-                ('created_at', models.DateTimeField(auto_now_add=True)),
-                ('updated_at', models.DateTimeField(auto_now=True)),
-                ('name', models.CharField(max_length=30)),
-                ('requirements_doc', django.contrib.postgres.fields.jsonb.JSONField()),
-                ('generator_param', models.CharField(max_length=200)),
-                ('copies', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='copied_from', to='lsmrapp.RunBlueprint')),
-                ('copy_reason', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='lsmrapp.CopyReasonChoice')),
-            ],
-            options={
-                'abstract': False,
-            },
-        ),
-        migrations.CreateModel(
-            name='RunSet',
-            fields=[
-                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
-                ('tags', django.contrib.postgres.fields.ArrayField(base_field=models.CharField(max_length=30), blank=True, size=8)),
-                ('created_at', models.DateTimeField(auto_now_add=True)),
-                ('updated_at', models.DateTimeField(auto_now=True)),
-                ('name', models.CharField(max_length=30)),
-                ('generator_parameters_doc', django.contrib.postgres.fields.jsonb.JSONField()),
-                ('generator_template', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, to='lsmrapp.GeneratorTemplate')),
-                ('project', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='run_sets', to='lsmrapp.Project')),
-            ],
-            options={
-                'abstract': False,
-            },
-        ),
-        migrations.CreateModel(
-            name='RunTemplate',
-            fields=[
-                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
-                ('tags', django.contrib.postgres.fields.ArrayField(base_field=models.CharField(max_length=30), blank=True, size=8)),
-                ('created_at', models.DateTimeField(auto_now_add=True)),
-                ('updated_at', models.DateTimeField(auto_now=True)),
-                ('name', models.CharField(max_length=30)),
-                ('description', models.CharField(max_length=255)),
-                ('version', models.CharField(max_length=30)),
-                ('schema', django.contrib.postgres.fields.jsonb.JSONField()),
-            ],
-            options={
-                'abstract': False,
-            },
-        ),
-        migrations.CreateModel(
-            name='Tags',
-            fields=[
-                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
-                ('title', models.CharField(max_length=30)),
-                ('description', models.CharField(max_length=255)),
-            ],
-        ),
-        migrations.CreateModel(
-            name='WorkIORole',
-            fields=[
-                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
-                ('dataformat', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='lsmrapp.DataformatChoice')),
-                ('datatype', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='lsmrapp.DatatypeChoice')),
-            ],
-        ),
-        migrations.CreateModel(
-            name='WorkRelationSelectionTemplate',
-            fields=[
-                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
-                ('tags', django.contrib.postgres.fields.ArrayField(base_field=models.CharField(max_length=30), blank=True, size=8)),
-                ('created_at', models.DateTimeField(auto_now_add=True)),
-                ('updated_at', models.DateTimeField(auto_now=True)),
-                ('name', models.CharField(max_length=30)),
-                ('description', models.CharField(max_length=255)),
-                ('version', models.CharField(max_length=30)),
-                ('schema', django.contrib.postgres.fields.jsonb.JSONField()),
-            ],
-            options={
-                'abstract': False,
-            },
-        ),
-        migrations.CreateModel(
-            name='WorkRequest',
-            fields=[
-                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
-                ('tags', django.contrib.postgres.fields.ArrayField(base_field=models.CharField(max_length=30), blank=True, size=8)),
-                ('created_at', models.DateTimeField(auto_now_add=True)),
-                ('updated_at', models.DateTimeField(auto_now=True)),
-                ('requirements_doc', django.contrib.postgres.fields.jsonb.JSONField()),
-                ('do_cancel', models.BooleanField()),
-            ],
-            options={
-                'abstract': False,
-            },
-        ),
-        migrations.CreateModel(
-            name='WorkRequestBlueprint',
-            fields=[
-                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
-                ('tags', django.contrib.postgres.fields.ArrayField(base_field=models.CharField(max_length=30), blank=True, size=8)),
-                ('created_at', models.DateTimeField(auto_now_add=True)),
-                ('updated_at', models.DateTimeField(auto_now=True)),
-                ('name', models.CharField(max_length=30)),
-                ('requirements_doc', django.contrib.postgres.fields.jsonb.JSONField()),
-                ('copies', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='copied_from', to='lsmrapp.WorkRequestBlueprint')),
-                ('copy_reason', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='lsmrapp.CopyReasonChoice')),
-            ],
-            options={
-                'abstract': False,
-            },
-        ),
-        migrations.CreateModel(
-            name='WorkRequestRelation',
-            fields=[
-                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
-                ('tags', django.contrib.postgres.fields.ArrayField(base_field=models.CharField(max_length=30), blank=True, size=8)),
-                ('created_at', models.DateTimeField(auto_now_add=True)),
-                ('updated_at', models.DateTimeField(auto_now=True)),
-                ('selection_doc', django.contrib.postgres.fields.jsonb.JSONField()),
-            ],
-            options={
-                'abstract': False,
-            },
-        ),
-        migrations.CreateModel(
-            name='WorkRequestRelationBlueprint',
-            fields=[
-                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
-                ('tags', django.contrib.postgres.fields.ArrayField(base_field=models.CharField(max_length=30), blank=True, size=8)),
-                ('created_at', models.DateTimeField(auto_now_add=True)),
-                ('updated_at', models.DateTimeField(auto_now=True)),
-                ('name', models.CharField(max_length=30)),
-                ('selection_doc', django.contrib.postgres.fields.jsonb.JSONField()),
-                ('blueprint', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='lsmrapp.WorkRelationSelectionTemplate')),
-                ('consumer', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='consumed_by', to='lsmrapp.WorkRequestBlueprint')),
-                ('dataformat', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='lsmrapp.DataformatChoice')),
-                ('input_role', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='inputs_work_request_relation_blueprint', to='lsmrapp.WorkIORole')),
-                ('output_role', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='outputs_work_request_relation_blueprint', to='lsmrapp.WorkIORole')),
-                ('producer', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='produced_by', to='lsmrapp.WorkRequestBlueprint')),
-            ],
-            options={
-                'abstract': False,
-            },
-        ),
-        migrations.CreateModel(
-            name='WorkRequestTemplate',
-            fields=[
-                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
-                ('tags', django.contrib.postgres.fields.ArrayField(base_field=models.CharField(max_length=30), blank=True, size=8)),
-                ('created_at', models.DateTimeField(auto_now_add=True)),
-                ('updated_at', models.DateTimeField(auto_now=True)),
-                ('name', models.CharField(max_length=30)),
-                ('description', models.CharField(max_length=255)),
-                ('version', models.CharField(max_length=30)),
-                ('schema', django.contrib.postgres.fields.jsonb.JSONField()),
-                ('validation_code_js', models.CharField(max_length=30)),
-            ],
-            options={
-                'abstract': False,
-            },
-        ),
-        migrations.AddField(
-            model_name='workrequestrelation',
-            name='blueprint',
-            field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='lsmrapp.WorkRequestRelationBlueprint'),
-        ),
-        migrations.AddField(
-            model_name='workrequestrelation',
-            name='consumer',
-            field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='consumed_by', to='lsmrapp.WorkRequest'),
-        ),
-        migrations.AddField(
-            model_name='workrequestrelation',
-            name='dataformat',
-            field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='lsmrapp.DataformatChoice'),
-        ),
-        migrations.AddField(
-            model_name='workrequestrelation',
-            name='input_role',
-            field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='inputs_work_request_relation', to='lsmrapp.WorkIORole'),
-        ),
-        migrations.AddField(
-            model_name='workrequestrelation',
-            name='output_role',
-            field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='outputs_work_request_relation', to='lsmrapp.WorkIORole'),
-        ),
-        migrations.AddField(
-            model_name='workrequestrelation',
-            name='producer',
-            field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='produced_by', to='lsmrapp.WorkRequest'),
-        ),
-        migrations.AddField(
-            model_name='workrequest',
-            name='blueprint',
-            field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='related_work_requests', to='lsmrapp.WorkRequestBlueprint'),
-        ),
-        migrations.AddField(
-            model_name='workrequest',
-            name='template',
-            field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, to='lsmrapp.WorkRequestTemplate'),
-        ),
-        migrations.AddField(
-            model_name='workiorole',
-            name='inputs',
-            field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='role_input', to='lsmrapp.WorkRequestTemplate'),
-        ),
-        migrations.AddField(
-            model_name='workiorole',
-            name='outputs',
-            field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='role_output', to='lsmrapp.WorkRequestTemplate'),
-        ),
-        migrations.AddField(
-            model_name='workiorole',
-            name='role',
-            field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='lsmrapp.RoleChoice'),
-        ),
-        migrations.AddField(
-            model_name='runblueprint',
-            name='generator_source',
-            field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, to='lsmrapp.RunSet'),
-        ),
-        migrations.AddField(
-            model_name='runblueprint',
-            name='run_set',
-            field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='run_blueprints', to='lsmrapp.RunSet'),
-        ),
-        migrations.AddField(
-            model_name='run',
-            name='blueprint',
-            field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='related_runs', to='lsmrapp.RunBlueprint'),
-        ),
-        migrations.AddField(
-            model_name='run',
-            name='template',
-            field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, to='lsmrapp.RunTemplate'),
-        ),
-        migrations.AddField(
-            model_name='defaultworkrequesttemplate',
-            name='template',
-            field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='lsmrapp.WorkRequestTemplate'),
-        ),
-        migrations.AddField(
-            model_name='defaultworkrelationselectiontemplate',
-            name='template',
-            field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='lsmrapp.WorkRelationSelectionTemplate'),
-        ),
-        migrations.AddField(
-            model_name='defaultruntemplate',
-            name='template',
-            field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='lsmrapp.RunTemplate'),
-        ),
-        migrations.AddField(
-            model_name='defaultgeneratortemplate',
-            name='template',
-            field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='lsmrapp.GeneratorTemplate'),
-        ),
-        migrations.AddIndex(
-            model_name='defaultworkrequesttemplate',
-            index=django.contrib.postgres.indexes.GinIndex(fields=['tags'], name='lsmrapp_def_tags_2e8945_gin'),
-        ),
-        migrations.AddIndex(
-            model_name='defaultworkrelationselectiontemplate',
-            index=django.contrib.postgres.indexes.GinIndex(fields=['tags'], name='lsmrapp_def_tags_eef600_gin'),
-        ),
-        migrations.AddIndex(
-            model_name='defaultruntemplate',
-            index=django.contrib.postgres.indexes.GinIndex(fields=['tags'], name='lsmrapp_def_tags_8d5d48_gin'),
-        ),
-        migrations.AddIndex(
-            model_name='defaultgeneratortemplate',
-            index=django.contrib.postgres.indexes.GinIndex(fields=['tags'], name='lsmrapp_def_tags_2b9ef8_gin'),
-        ),
-    ]
diff --git a/SAS/LSMR/src/lsmr/lsmrapp/migrations/0003_populate.py b/SAS/LSMR/src/lsmr/lsmrapp/migrations/0003_populate.py
index f3b9c594eddb4f5d354b3d1733933f9a303d2d80..939f977bbd9504b817dc25eab3ac09437732c168 100644
--- a/SAS/LSMR/src/lsmr/lsmrapp/migrations/0003_populate.py
+++ b/SAS/LSMR/src/lsmr/lsmrapp/migrations/0003_populate.py
@@ -5,7 +5,7 @@ from ..populate import *
 class Migration(migrations.Migration):
 
     dependencies = [
-        ('lsmrapp', '0002_auto_20180712_0931'),
+        ('lsmrapp', '0002_auto_20180712_1621'),
     ]
 
     operations = [ migrations.RunPython(populate_choices) ]
diff --git a/SAS/LSMR/src/lsmr/lsmrapp/models/specification.py b/SAS/LSMR/src/lsmr/lsmrapp/models/specification.py
index b326b5fa5b7e0449f4dcd44bbb15f736aa218bf5..60a8d6b6ee0f37991b2196a61dd30e0c6750288d 100644
--- a/SAS/LSMR/src/lsmr/lsmrapp/models/specification.py
+++ b/SAS/LSMR/src/lsmr/lsmrapp/models/specification.py
@@ -205,12 +205,12 @@ class RunSet(UserDefinedCommon):
     project = ForeignKey('Project', related_name="run_sets", on_delete=CASCADE)
 
 
-class RunBlueprint(UserDefinedCommon):
+class RunDraft(UserDefinedCommon):
     requirements_doc = JSONField()
-    copies = ForeignKey('RunBlueprint', related_name="copied_from", on_delete=SET_NULL, null=True)
+    copies = ForeignKey('RunDraft', related_name="copied_from", on_delete=SET_NULL, null=True)
     copy_reason = ForeignKey('CopyReasonChoice', null=False, on_delete=CASCADE)
     generator_param = CharField(max_length=200)  # todo: check if the field size is good enough
-    run_set = ForeignKey(RunSet, related_name='run_blueprints', on_delete=CASCADE)
+    run_set = ForeignKey(RunSet, related_name='run_drafts', on_delete=CASCADE)
     generator_source = ForeignKey(RunSet, on_delete=SET_NULL, null=True)
 
 
@@ -218,12 +218,12 @@ class Run(SystemDefinedCommon):
     requirements_doc = JSONField()
     do_cancel = BooleanField()
     template = ForeignKey('RunTemplate', on_delete=SET_NULL, null=True)
-    blueprint = ForeignKey('RunBlueprint', related_name='related_runs', on_delete=CASCADE)
+    draft = ForeignKey('RunDraft', related_name='related_runs', on_delete=CASCADE)
 
 
-class WorkRequestBlueprint(UserDefinedCommon):
+class WorkRequestDraft(UserDefinedCommon):
     requirements_doc = JSONField()
-    copies = ForeignKey('WorkRequestBlueprint', related_name="copied_from", on_delete=SET_NULL, null=True)
+    copies = ForeignKey('WorkRequestDraft', related_name="copied_from", on_delete=SET_NULL, null=True)
     copy_reason = ForeignKey('CopyReasonChoice', null=False, on_delete=CASCADE)
 
 
@@ -231,17 +231,17 @@ class WorkRequest(SystemDefinedCommon):
     requirements_doc = JSONField()
     do_cancel = BooleanField()
     template = ForeignKey('WorkRequestTemplate', on_delete=SET_NULL, null=True)
-    blueprint = ForeignKey('WorkRequestBlueprint', related_name='related_work_requests', on_delete=CASCADE)
+    draft = ForeignKey('WorkRequestDraft', related_name='related_work_requests', on_delete=CASCADE)
 
 
-class WorkRequestRelationBlueprint(UserDefinedCommon):
+class WorkRequestRelationDraft(UserDefinedCommon):
     selection_doc = JSONField()
     dataformat = ForeignKey('DataformatChoice', null=False, on_delete=CASCADE)
-    producer = ForeignKey(WorkRequestBlueprint, related_name='produced_by', on_delete=CASCADE)
-    consumer = ForeignKey(WorkRequestBlueprint, related_name='consumed_by', on_delete=CASCADE)
-    input_role = ForeignKey(WorkIORole, related_name='inputs_work_request_relation_blueprint', on_delete=CASCADE)
-    output_role = ForeignKey(WorkIORole, related_name='outputs_work_request_relation_blueprint', on_delete=CASCADE)
-    blueprint = ForeignKey(WorkRelationSelectionTemplate, on_delete=CASCADE) # todo: This differs from the diagram, where there is a One(Blueprint)-to-Many(Template) reference, but I expect that the diagram is not correct
+    producer = ForeignKey(WorkRequestDraft, related_name='produced_by', on_delete=CASCADE)
+    consumer = ForeignKey(WorkRequestDraft, related_name='consumed_by', on_delete=CASCADE)
+    input_role = ForeignKey(WorkIORole, related_name='inputs_work_request_relation_draft', on_delete=CASCADE)
+    output_role = ForeignKey(WorkIORole, related_name='outputs_work_request_relation_draft', on_delete=CASCADE)
+    draft = ForeignKey(WorkRelationSelectionTemplate, on_delete=CASCADE)
 
 
 class WorkRequestRelation(SystemDefinedCommon):
@@ -251,5 +251,5 @@ class WorkRequestRelation(SystemDefinedCommon):
     consumer = ForeignKey(WorkRequest, related_name='consumed_by', on_delete=CASCADE)
     input_role = ForeignKey(WorkIORole, related_name='inputs_work_request_relation', on_delete=CASCADE)
     output_role = ForeignKey(WorkIORole, related_name='outputs_work_request_relation', on_delete=CASCADE)
-    blueprint = ForeignKey(WorkRequestRelationBlueprint, on_delete=CASCADE)
+    draft = ForeignKey(WorkRequestRelationDraft, on_delete=CASCADE)
 
diff --git a/SAS/LSMR/src/lsmr/lsmrapp/serializers/specification.py b/SAS/LSMR/src/lsmr/lsmrapp/serializers/specification.py
index d2c016f7366a179f26813690bf5b31fe0b6486fe..6de707e23809da7dfa8a6323156c3c3d0d1690d7 100644
--- a/SAS/LSMR/src/lsmr/lsmrapp/serializers/specification.py
+++ b/SAS/LSMR/src/lsmr/lsmrapp/serializers/specification.py
@@ -108,9 +108,9 @@ class RunSetSerializer(serializers.HyperlinkedModelSerializer):
         fields = '__all__'
 
 
-class RunBlueprintSerializer(serializers.HyperlinkedModelSerializer):
+class RunDraftSerializer(serializers.HyperlinkedModelSerializer):
     class Meta:
-        model = models.RunBlueprint
+        model = models.RunDraft
         fields = '__all__'
 
 
@@ -120,9 +120,9 @@ class RunSerializer(serializers.HyperlinkedModelSerializer):
         fields = '__all__'
 
 
-class WorkRequestBlueprintSerializer(serializers.HyperlinkedModelSerializer):
+class WorkRequestDraftSerializer(serializers.HyperlinkedModelSerializer):
     class Meta:
-        model = models.WorkRequestBlueprint
+        model = models.WorkRequestDraft
         fields = '__all__'
 
 
@@ -132,9 +132,9 @@ class WorkRequestSerializer(serializers.HyperlinkedModelSerializer):
         fields = '__all__'
 
 
-class WorkRequestRelationBlueprintSerializer(serializers.HyperlinkedModelSerializer):
+class WorkRequestRelationDraftSerializer(serializers.HyperlinkedModelSerializer):
     class Meta:
-        model = models.WorkRequestRelationBlueprint
+        model = models.WorkRequestRelationDraft
         fields = '__all__'
 
 
diff --git a/SAS/LSMR/src/lsmr/lsmrapp/viewsets/specification.py b/SAS/LSMR/src/lsmr/lsmrapp/viewsets/specification.py
index ef0c7390e15fe4533b21ebe5fb226e735fca1cbf..e3f5081dd0155aab4d2990d7702b43305bf66fb9 100644
--- a/SAS/LSMR/src/lsmr/lsmrapp/viewsets/specification.py
+++ b/SAS/LSMR/src/lsmr/lsmrapp/viewsets/specification.py
@@ -91,9 +91,9 @@ class RunSetViewSet(viewsets.ModelViewSet):
     serializer_class = serializers.RunSetSerializer
 
 
-class RunBlueprintViewSet(viewsets.ModelViewSet):
-    queryset = models.RunBlueprint.objects.all()
-    serializer_class = serializers.RunBlueprintSerializer
+class RunDraftViewSet(viewsets.ModelViewSet):
+    queryset = models.RunDraft.objects.all()
+    serializer_class = serializers.RunDraftSerializer
 
 
 class RunViewSet(viewsets.ModelViewSet):
@@ -101,9 +101,9 @@ class RunViewSet(viewsets.ModelViewSet):
     serializer_class = serializers.RunSerializer
 
 
-class WorkRequestBlueprintViewSet(viewsets.ModelViewSet):
-    queryset = models.WorkRequestBlueprint.objects.all()
-    serializer_class = serializers.WorkRequestBlueprintSerializer
+class WorkRequestDraftViewSet(viewsets.ModelViewSet):
+    queryset = models.WorkRequestDraft.objects.all()
+    serializer_class = serializers.WorkRequestDraftSerializer
 
 
 class WorkRequestViewSet(viewsets.ModelViewSet):
@@ -111,9 +111,9 @@ class WorkRequestViewSet(viewsets.ModelViewSet):
     serializer_class = serializers.WorkRequestSerializer
 
 
-class WorkRequestRelationBlueprintViewSet(viewsets.ModelViewSet):
-    queryset = models.WorkRequestRelationBlueprint.objects.all()
-    serializer_class = serializers.WorkRequestRelationBlueprintSerializer
+class WorkRequestRelationDraftViewSet(viewsets.ModelViewSet):
+    queryset = models.WorkRequestRelationDraft.objects.all()
+    serializer_class = serializers.WorkRequestRelationDraftSerializer
 
 
 class WorkRequestRelationViewSet(viewsets.ModelViewSet):
diff --git a/SAS/LSMR/src/lsmr/urls.py b/SAS/LSMR/src/lsmr/urls.py
index e435cb9b6e129a8084ae38e080c75b8b5577ea0d..ae774736685a213ec95a441d1f7a81f143656b8e 100644
--- a/SAS/LSMR/src/lsmr/urls.py
+++ b/SAS/LSMR/src/lsmr/urls.py
@@ -57,9 +57,9 @@ router.register(r'default_work_relation_selection_template', viewsets.DefaultWor
 router.register(r'cycle', viewsets.CycleViewSet)
 router.register(r'project', viewsets.ProjectViewSet)
 router.register(r'run_set', viewsets.RunSetViewSet)
-router.register(r'work_request_blueprint', viewsets.WorkRequestBlueprintViewSet)
+router.register(r'work_request_draft', viewsets.WorkRequestDraftViewSet)
 router.register(r'work_request', viewsets.WorkRequestViewSet)
-router.register(r'work_request_relation_blueprint', viewsets.WorkRequestRelationBlueprintViewSet)
+router.register(r'work_request_relation_draft', viewsets.WorkRequestRelationDraftViewSet)
 router.register(r'work_request_relation', viewsets.WorkRequestRelationViewSet)