diff --git a/opentech/apply/funds/files.py b/opentech/apply/funds/files.py
index 5c05b703476bb54f6b361c7d49d40b8d0754ede5..72e2420fa71dfc6c76ea77291ac159a9f51ed618 100644
--- a/opentech/apply/funds/files.py
+++ b/opentech/apply/funds/files.py
@@ -14,7 +14,13 @@ def generate_submission_file_path(submission_id, field_id, file_name):
 
 class SubmissionStreamFieldFile(StreamFieldFile):
     def generate_filename(self):
-        return generate_submission_file_path(self.instance.pk, self.field.id, self.name)
+        from opentech.apply.funds.models.submissions import ApplicationRevision
+        submission_id = self.instance.pk
+
+        if isinstance(self.instance, ApplicationRevision):
+            submission_id = self.instance.submission.pk
+
+        return generate_submission_file_path(submission_id, self.field.id, self.name)
 
     @property
     def url(self):
diff --git a/opentech/apply/funds/models/submissions.py b/opentech/apply/funds/models/submissions.py
index 21294bec82d6626a115c65487debe19224ce00b8..11f98e2b1060877ab5916f40be05a02f0be7ec47 100644
--- a/opentech/apply/funds/models/submissions.py
+++ b/opentech/apply/funds/models/submissions.py
@@ -562,9 +562,10 @@ class ApplicationSubmission(
                 self.form_data = current_submission.form_data
             else:
                 self.live_revision = revision
+                self.search_data = ' '.join(self.prepare_search_values())
 
             self.draft_revision = revision
-            self.save()
+            self.save(skip_custom=True)
             return revision
         return None
 
diff --git a/opentech/apply/funds/tests/test_models.py b/opentech/apply/funds/tests/test_models.py
index 3e7f9e7ba7b4c3314cd49464448aeba4e7f8783a..7921ee67fd2baab066eff1b0b233e3cdc02f3819 100644
--- a/opentech/apply/funds/tests/test_models.py
+++ b/opentech/apply/funds/tests/test_models.py
@@ -402,6 +402,24 @@ class TestApplicationSubmission(TestCase):
         # Check we saved the file somewhere beneath it
         self.assertIn(filename, found_files)
 
+    def test_correct_file_path_generated(self):
+        submission = ApplicationSubmissionFactory()
+
+        for file_id in submission.file_field_ids:
+
+            def check_generated_file_path(file_to_test):
+                file_path_generated = file_to_test.generate_filename()
+                file_path_required = os.path.join('submission', str(submission.id), str(file_id), file_to_test.basename)
+
+                self.assertEqual(file_path_generated, file_path_required)
+
+            file_response = submission.data(file_id)
+            if isinstance(file_response, list):
+                for stream_file in file_response:
+                    check_generated_file_path(stream_file)
+            else:
+                check_generated_file_path(file_response)
+
     def test_create_revision_on_create(self):
         submission = ApplicationSubmissionFactory()
         self.assertEqual(submission.revisions.count(), 1)