diff --git a/services/workflow/src/workflow/server.py b/services/workflow/src/workflow/server.py
index 1dfd6086b9c2f4d21363c6e4befed77d7a9289af..a3a066f0d26353e51f0168e441112ba32957e65c 100644
--- a/services/workflow/src/workflow/server.py
+++ b/services/workflow/src/workflow/server.py
@@ -24,6 +24,10 @@ def lookup_workflow(request):
     return request.info.lookup_workflow_definition(request.matchdict['name'])
 
 
+# def lookup_request(request):
+#     return request.info.lookup_workflow_request(request.matchdict['requests'])
+
+
 def lookup_file(request):
     return lookup_workflow(request)['files'][request.matchdict['filename']]
 
@@ -93,7 +97,7 @@ class WorkflowFilesRestService:
     def __init__(self, request):
         self.request = request
 
-    @view_config(request_method='POST')
+    @view_config(request_method='POST', route_name='add_file')
     def add_file(self):
         """
         Add a file to this workflow request.
@@ -101,6 +105,10 @@ class WorkflowFilesRestService:
         Audience: front-end and CLI
         """
         print('Adding a file')
+        file = self.request.info.save_file(request_id=self.request.GET.get("request"),
+                                           filename=self.request.GET.get("filename"),
+                                           content=self.request.GET.get("content"))
+        return file
 
     @view_config(request_method='GET')
     def get_files(self):
@@ -190,6 +198,7 @@ def main(global_config, **settings):
         config.add_route('workflow', '/workflows/{name}', factory=lookup_workflow)
         config.add_route('create_workflow', '/workflows/{name}/create', factory=lookup_workflow)
         config.add_route('submit_workflow', '/workflows/{name}/submit', factory=lookup_workflow)
+        config.add_route('add_file', '/workflows/file')
         config.add_route('workflow_files', '/workflows/{name}/files', factory=lookup_workflow)
         config.add_route('workflow_file', '/workflows/{name}/files/{filename}', factory=lookup_file)
 
diff --git a/shared/workspaces/src/workspaces/schema.py b/shared/workspaces/src/workspaces/schema.py
index 587bac84d6c2a01348467c3b51d68b8ee2840ff6..5ccca9afdf4ff6803e8198374c0890ddcc1be91e 100644
--- a/shared/workspaces/src/workspaces/schema.py
+++ b/shared/workspaces/src/workspaces/schema.py
@@ -431,7 +431,7 @@ class WorkflowRequest(Base):
 
     @request.setter
     def create_request(self, request: AbstractRequest):
-        self.workflow_name, self.argument = request.workflow_name, request.argument
+        self.workflow_name, self.argument = request.name, request.argument
 
     # TODO: create following fields in table
     def update_status(self, status: str):
diff --git a/shared/workspaces/src/workspaces/services.py b/shared/workspaces/src/workspaces/services.py
index 5aef369afa1889a2cbf40efacf4f08b5f6577339..d3b3959f5fcf651b493d9250c61ae39c570a6a47 100644
--- a/shared/workspaces/src/workspaces/services.py
+++ b/shared/workspaces/src/workspaces/services.py
@@ -48,7 +48,7 @@ from .schema import (
     AbstractFile,
     CapabilityEvent,
     CapabilityVersion,
-    Base,
+    Base, WorkflowRequestFile,
 )
 from channels.amqp_helpers import (
     workflow_events,
@@ -556,12 +556,16 @@ class WorkflowInfo(WorkflowInfoIF):
     def lookup_workflow_definition(self, name: str) -> Workflow:
         return self.session.query(Workflow).get(name)
 
+    def lookup_workflow_request(self, request_id: int) -> Workflow:
+        return self.session.query(WorkflowRequest).get(request_id)
+
     def all_workflows(self) -> List[Workflow]:
         return self.session.query(Workflow).all()
 
     def create_workflow_request(
-        self, workflow_name: str, argument: Dict
-    ) -> WorkflowRequest:
+            self,
+            workflow_name: str,
+            argument: Dict) -> WorkflowRequest:
         """
         Create new workflow request and save to database
         :param workflow_name: name of workflow to run
@@ -575,8 +579,21 @@ class WorkflowInfo(WorkflowInfoIF):
     def save_request(self, request: WorkflowRequest):
         """
         Save a given entity and return an integer identifier for it
-        :param entity:   the entity to save
-        :return:         the entity's identifier
+        :param request: request to save
+        :return:        the entity's identifier
         """
         self.session.add(request)
         self.session.flush()
+
+    def save_file(self, request_id: int, filename: str, content: str):
+        """
+        Save a given List of request files
+        :param request_id:
+        :param content:
+        :param filename:
+        :return:
+        """
+        wrf = WorkflowRequestFile(workflow_request_id=request_id, filename=filename, content=content.encode())
+        self.session.add(wrf)
+        self.session.flush()
+