diff --git a/SAS/TMSS/src/tmss/tmssapp/serializers/specification.py b/SAS/TMSS/src/tmss/tmssapp/serializers/specification.py
index 9cfe925f96aec9c94715c33c6637499433f1bc38..b405a91060cdf1c66cbf96ad1652bdd7b4bb1126 100644
--- a/SAS/TMSS/src/tmss/tmssapp/serializers/specification.py
+++ b/SAS/TMSS/src/tmss/tmssapp/serializers/specification.py
@@ -313,7 +313,9 @@ class SchedulingUnitBlueprintSerializer(RelationalHyperlinkedModelSerializer):
 
 class SchedulingUnitBlueprintCopyToSchedulingUnitDraftSerializer(SchedulingUnitBlueprintSerializer):
     class Meta(SchedulingUnitDraftSerializer.Meta):
-       fields = '__all__'
+       fields = ['copy_reason']
+       extra_fields =['scheduling_set_id']
+       read_only_fields = ['scheduling_unit_blueprints','task_drafts']
        
 
 
diff --git a/SAS/TMSS/src/tmss/tmssapp/tasks.py b/SAS/TMSS/src/tmss/tmssapp/tasks.py
index 1d00aa6fd036edbfb92804c29cda7e775b748384..142ba097c464ad3268647f00b86a47754bb9365d 100644
--- a/SAS/TMSS/src/tmss/tmssapp/tasks.py
+++ b/SAS/TMSS/src/tmss/tmssapp/tasks.py
@@ -59,25 +59,15 @@ def copy_scheduling_unit_draft(scheduling_unit_draft: models.SchedulingUnitDraft
     return scheduling_unit_draft_copy
 
 
-def create_scheduling_unit_draft_from_scheduling_unit_blueprint(scheduling_unit_blueprint: models.SchedulingUnitBlueprint) -> models.SchedulingUnitDraft:
+def create_scheduling_unit_draft_from_scheduling_unit_blueprint(scheduling_unit_blueprint: models.SchedulingUnitBlueprint, copy_reason: str) -> models.SchedulingUnitDraft:
     """
-    Create a SchedulingUnitDraft from the SchedulingUnitBlueprint
+    Create a copy of the SchedulingUnitDraft of the  selected SchedulingUnitBlueprint
     :raises Exception if instantiate fails.
     """
     logger.debug("create_scheduling_unit_draft_from_scheduling_unit_blueprint(scheduling_unit_blueprint.id=%s)", scheduling_unit_blueprint.pk)
 
     original_scheduling_unit_draft = scheduling_unit_blueprint.draft
-
-    # TODO: fix the copy reason
-    scheduling_unit_draft =  SchedulingUnitDraft.objects.create(
-        name="%s (Copied from SchedulingUnitBlueprint)" % (scheduling_unit_blueprint.name,),
-        description="%s (Copied from %s SchedulingUnitBlueprint)" % (scheduling_unit_blueprint.description or "<no description>",scheduling_unit_blueprint.name,),
-        requirements_doc=scheduling_unit_blueprint.requirements_doc,
-        copies=original_scheduling_unit_draft,
-        copy_reason=original_scheduling_unit_draft.copy_reason,
-        generator_instance_doc=original_scheduling_unit_draft.generator_instance_doc,
-        scheduling_set=original_scheduling_unit_draft.scheduling_set,
-        requirements_template=scheduling_unit_blueprint.requirements_template)
+    scheduling_unit_draft = copy_scheduling_unit_draft(original_scheduling_unit_draft,original_scheduling_unit_draft.scheduling_set,copy_reason)
 
     logger.info("create_scheduling_unit_draft_from_scheduling_unit_blueprint(scheduling_unit_blueprint.id=%s) created scheduling_unit_draft id=%s", scheduling_unit_blueprint.pk, scheduling_unit_draft.pk)
     return scheduling_unit_draft
diff --git a/SAS/TMSS/src/tmss/tmssapp/viewsets/specification.py b/SAS/TMSS/src/tmss/tmssapp/viewsets/specification.py
index da1706cc36594aac847121082c3c5f4ac18de680..5644cfeb2eb3b9174aa417695a8b60913a03f809 100644
--- a/SAS/TMSS/src/tmss/tmssapp/viewsets/specification.py
+++ b/SAS/TMSS/src/tmss/tmssapp/viewsets/specification.py
@@ -482,11 +482,29 @@ class SchedulingUnitDraftCopyFromSchedulingSetViewSet(LOFARCopyViewSet):
 class SchedulingUnitBlueprintCopyToSchedulingUnitDraftViewSet(LOFARCopyViewSet):
     queryset = models.SchedulingUnitBlueprint.objects.all()
     serializer_class = serializers.SchedulingUnitBlueprintCopyToSchedulingUnitDraftSerializer
-       
+    
+    @swagger_auto_schema(responses={201: "The copy of the SchedulingUnitDraft",
+                                    403: 'forbidden'},
+                         operation_description="Create a copy of the SchedulingUnitDraft of the selected SchedulingUnitBlueprint")
     def create(self, request, *args, **kwargs):
+        
         if 'scheduling_unit_blueprint_id' in kwargs:
             scheduling_unit_blueprint = get_object_or_404(models.SchedulingUnitBlueprint, pk=kwargs['scheduling_unit_blueprint_id'])
-            scheduling_unit_draft = create_scheduling_unit_draft_from_scheduling_unit_blueprint(scheduling_unit_blueprint)
+
+            body_unicode = request.body.decode('utf-8')
+            body_data = json.loads(body_unicode)
+           
+           
+            copy_reason = body_data.get('copy_reason', None)
+            
+            try:
+                copy_reason_obj = models.CopyReason.objects.get(value=copy_reason)
+            except ObjectDoesNotExist:
+                logger.info("CopyReason matching query does not exist.")
+                #if a non valid copy_reason is specified, set copy_reason to None
+                copy_reason = None
+
+            scheduling_unit_draft = create_scheduling_unit_draft_from_scheduling_unit_blueprint(scheduling_unit_blueprint,copy_reason)
 
             # return a response with the new serialized scheduling_unit_blueprint (with references to the created task_blueprint(s) and (scheduled) subtasks)
             return Response(serializers.SchedulingUnitDraftSerializer(scheduling_unit_draft, context={'request':request}).data,