diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/submission/controller/SubmissionController.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/submission/controller/SubmissionController.java
index b3b86098e0bdef1e1bccc0bf449db9863e8f44ff..6053a7f44dd257078940e619a536e303126a8b6c 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/submission/controller/SubmissionController.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/submission/controller/SubmissionController.java
@@ -30,8 +30,8 @@ public class SubmissionController implements ISubmission {
         connection.connect();
 
         // build and execute request
-        String request = "INSERT INTO fullsubmissions (`id`, `user`, `text`) VALUES (?,?,?);";
-        connection.issueInsertOrDeleteStatement(request, uuid, fullSubmissionPostRequest.getUser(), fullSubmissionPostRequest.getText());
+        String request = "INSERT INTO fullsubmissions (`id`, `user`, `text`, `projectId`) VALUES (?,?,?,?);";
+        connection.issueInsertOrDeleteStatement(request, uuid, fullSubmissionPostRequest.getUser(), fullSubmissionPostRequest.getText(), fullSubmissionPostRequest.getProjectId());
 
         // get the new submission from database
         FullSubmission fullSubmission = getFullSubmission(uuid);
@@ -283,8 +283,9 @@ public class SubmissionController implements ISubmission {
         long timestamp = rs.getTimestamp("timestamp").getTime();
         String user = rs.getString("user");
         String text = rs.getString("text");
+        String projectId = rs.getString("projectId");
 
-        return new FullSubmission(id, timestamp, user, text);
+        return new FullSubmission(id, timestamp, user, text, projectId);
 
     }
 
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/submission/model/FullSubmission.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/submission/model/FullSubmission.java
index 725db4b265cf24f6d6c99852fdaf451f26205ac9..37b35c9fb9809ee409548f374c3623d73e204170 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/submission/model/FullSubmission.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/submission/model/FullSubmission.java
@@ -11,13 +11,15 @@ public class FullSubmission {
     private long timestamp;
     private String user;
     private String text;
+    private String projectId;
 
     // constructor
-    public FullSubmission(String id, long timestamp, String user, String text) {
+    public FullSubmission(String id, long timestamp, String user, String text, String projectId) {
         this.id = id;
         this.timestamp = timestamp;
         this.user = user;
         this.text = text;
+        this.projectId = projectId;
     }
 
     // methods
@@ -53,6 +55,14 @@ public class FullSubmission {
         this.text = text;
     }
 
+    public String getProjectId() {
+        return projectId;
+    }
+
+    public void setProjectId(String projectId) {
+        this.projectId = projectId;
+    }
+
     @Override
     public String toString() {
         return "FullSubmission{" +
@@ -60,6 +70,7 @@ public class FullSubmission {
                 ", timestamp=" + timestamp +
                 ", user='" + user + '\'' +
                 ", text='" + text + '\'' +
+                ", projectId='" + projectId + '\'' +
                 '}';
     }
 
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/submission/model/FullSubmissionPostRequest.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/submission/model/FullSubmissionPostRequest.java
index a807283adb526caafd7cf8ec197ffb20117e751e..48a2dfe748498fcd1f672ac5eb6ed2bc126af227 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/submission/model/FullSubmissionPostRequest.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/submission/model/FullSubmissionPostRequest.java
@@ -9,11 +9,13 @@ public class FullSubmissionPostRequest {
     // variables
     private String user;
     private String text;
+    private String projectId;
 
     // constructors
-    public FullSubmissionPostRequest(String user, String text) {
+    public FullSubmissionPostRequest(String user, String text, String projectId) {
         this.user = user;
         this.text = text;
+        this.projectId = projectId;
     }
 
     public FullSubmissionPostRequest() {}
@@ -35,11 +37,20 @@ public class FullSubmissionPostRequest {
         this.text = text;
     }
 
+    public String getProjectId() {
+        return projectId;
+    }
+
+    public void setProjectId(String projectId) {
+        this.projectId = projectId;
+    }
+
     @Override
     public String toString() {
         return "FullSubmissionPostRequest{" +
                 "user='" + user + '\'' +
                 ", text='" + text + '\'' +
+                ", projectId='" + projectId + '\'' +
                 '}';
     }
 
diff --git a/gemeinsamforschen/src/main/webapp/assets/js/project-student.js b/gemeinsamforschen/src/main/webapp/assets/js/project-student.js
index b8f739b417098461694312ea541feebd73292769..3a487384323d183de46d1ec44f56294085e29469 100644
--- a/gemeinsamforschen/src/main/webapp/assets/js/project-student.js
+++ b/gemeinsamforschen/src/main/webapp/assets/js/project-student.js
@@ -18,6 +18,6 @@ $(document).ready(function(){
     });
 
     $('#btnUnstructuredUpload').click(function () {
-        location.href="unstructured-upload.jsp?token="+getUserTokenFromUrl();
+        location.href="unstructured-upload.jsp?token="+getUserTokenFromUrl() + "&projectId=" + getProjectIdFromUrl();
     })
 });
\ No newline at end of file
diff --git a/gemeinsamforschen/src/main/webapp/assets/js/unstructuredAnnotation.js b/gemeinsamforschen/src/main/webapp/assets/js/unstructuredAnnotation.js
index 8c770dfd5940506ec1c391b74ef9e063aac16869..6ffb2c1a00c252c8b94e2fa2440b8808198c9e9c 100644
--- a/gemeinsamforschen/src/main/webapp/assets/js/unstructuredAnnotation.js
+++ b/gemeinsamforschen/src/main/webapp/assets/js/unstructuredAnnotation.js
@@ -26,7 +26,7 @@ $(document).ready(function() {
 
     }, function () {
         // jump to upload page on error
-        location.href="unstructured-upload.jsp?token="+getUserTokenFromUrl();
+        location.href="unstructured-upload.jsp?token=" + getUserTokenFromUrl() + "&projectId=" + getProjectIdFromUrl();
     });
 
     // set click listener to save button
@@ -246,6 +246,8 @@ function addSelectionDataToList(startCharacter, endCharacter, category) {
 function saveButtonHandler() {
     // show alert message
     if (window.confirm("Möchten Sie wirklich ihre Annotationen speichern?")) {
+        // declare array of promises
+        let promises = []
         $('#annotations').find('.category-card').each(function () {
             let array = $(this).data('array');
             if (array != null) {
@@ -273,13 +275,21 @@ function saveButtonHandler() {
                     submissionPartPostRequest.body.push(submissionPartBodyElement);
                 }
 
-                // send the post request to the back-end
-                createSubmissionPart(submissionPartPostRequest, function (response) {
+                // send the post request to the back-end and save promise
+                promises.push(createSubmissionPart(submissionPartPostRequest, function (response) {
                     console.log("send " + response.category + "'s post request to back-end")
-                })
+                }));
 
             }
         });
+
+        $.when.apply($, promises).then(function () {
+            // redirect user to project page after saving
+            location.href="project-student.jsp?token=" + getUserTokenFromUrl() + "&projectId=" + getProjectIdFromUrl();
+        });
+
+        // redirect user to project page after saving
+        // location.href="project-student.jsp?token=" + getUserTokenFromUrl() + "&projectId=" + getProjectIdFromUrl();
     }
 }
 
diff --git a/gemeinsamforschen/src/main/webapp/assets/js/unstructuredRest.js b/gemeinsamforschen/src/main/webapp/assets/js/unstructuredRest.js
index 047018efac765464de02fd05353cf2ab1396f6b1..3e678ca612eb7c75f189ddaab92ddc3b8b4c29de 100644
--- a/gemeinsamforschen/src/main/webapp/assets/js/unstructuredRest.js
+++ b/gemeinsamforschen/src/main/webapp/assets/js/unstructuredRest.js
@@ -48,11 +48,12 @@ function getFullSubmission(id, responseHandler, errorHandler) {
  *
  * @param submissionPartPostRequest The post request
  * @param responseHandler The response handler
+ * @returns A promise object
  */
 function createSubmissionPart(submissionPartPostRequest, responseHandler) {
     var url = "../rest/submissions/part/";
     var json = JSON.stringify(submissionPartPostRequest);
-    $.ajax({
+    return $.ajax({
         url: url,
         type: "POST",
         data: json,
diff --git a/gemeinsamforschen/src/main/webapp/assets/js/unstructuredUpload.js b/gemeinsamforschen/src/main/webapp/assets/js/unstructuredUpload.js
index e9beb2f4bca2bf55ea59e3b3687a9a00b6dda7c5..265a0a907ebd8bd020d5a5f8d14328c4240808ed 100644
--- a/gemeinsamforschen/src/main/webapp/assets/js/unstructuredUpload.js
+++ b/gemeinsamforschen/src/main/webapp/assets/js/unstructuredUpload.js
@@ -13,7 +13,8 @@ $(document).ready(function() {
             // build request
             var fullSubmissionPostRequest = {
                 user: user,
-                text: text
+                text: text,
+                projectId: getProjectIdFromUrl()
             };
 
             // save request in database
@@ -22,7 +23,7 @@ $(document).ready(function() {
                 $('#upload-textarea').val("");
 
                 // jump to next page
-                location.href="unstructured-annotation.jsp?token=" + getUserTokenFromUrl() + "&submission=" + response.id;
+                location.href="unstructured-annotation.jsp?token=" + getUserTokenFromUrl() + "&projectId=" + getProjectIdFromUrl() + "&submission=" + response.id;
             });
         }
     });
@@ -36,13 +37,15 @@ $(document).ready(function() {
                 $('#upload-textarea').val("");
 
                 // jump to previous page
-                location.href="project-student.jsp?token="+getUserTokenFromUrl();
+                window.history.back();
+                //location.href="project-student.jsp?token=" + getUserTokenFromUrl() + "&projectId=" + getProjectIdFromUrl();
             }
         }
         // nothing to check
         else {
             // jump to previous page
-            location.href="project-student.jsp?token="+getUserTokenFromUrl();
+            window.history.back();
+            //location.href="project-student.jsp?token=" + getUserTokenFromUrl() + "&projectId=" + getProjectIdFromUrl();
         }
     });
 
@@ -63,6 +66,3 @@ $(document).ready(function() {
     });
 
 });
-
-
-
diff --git a/gemeinsamforschen/src/main/webapp/assets/js/utility.js b/gemeinsamforschen/src/main/webapp/assets/js/utility.js
index 33be09a5afb07442f689e89f4ef61a8c09ebc698..ad821640f2142940cf7424d7219d2ea2452c286f 100644
--- a/gemeinsamforschen/src/main/webapp/assets/js/utility.js
+++ b/gemeinsamforschen/src/main/webapp/assets/js/utility.js
@@ -13,3 +13,14 @@ function getUserTokenFromUrl() {
 
 }
 
+function getProjectIdFromUrl() {
+    var parts = window.location.search.substr(1).split("&");
+    var $_GET = {};
+    for (var i = 0; i < parts.length; i++) {
+        var temp = parts[i].split("=");
+        $_GET[decodeURIComponent(temp[0])] = decodeURIComponent(temp[1]);
+    }
+    return $_GET['projectId'];
+
+}
+
diff --git a/gemeinsamforschen/src/scripts/dbschema/fltrail.sql b/gemeinsamforschen/src/scripts/dbschema/fltrail.sql
index 1a069f1b37b580532de97074911d5d1f2a98184d..978bd4b9bcaa80fc3c20db0201cdf2f07a0b7a27 100644
--- a/gemeinsamforschen/src/scripts/dbschema/fltrail.sql
+++ b/gemeinsamforschen/src/scripts/dbschema/fltrail.sql
@@ -126,6 +126,7 @@ CREATE TABLE if not exists `fullsubmissions` (
   `timestamp` TIMESTAMP on update CURRENT_TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
   `user` VARCHAR(120) NOT NULL,
   `text` MEDIUMTEXT NOT NULL,
+  `projectId` VARCHAR(120) NOT NULL,
   PRIMARY KEY (`id`)
 ) ENGINE = InnoDB DEFAULT CHARSET=utf8;