diff --git a/journals/views.py b/journals/views.py
index ccf0be58c62bc682f8fa9186b64936750e4b1bf3..321c2adeb4ed168567e8e18ff8c71a09d754e9ff 100644
--- a/journals/views.py
+++ b/journals/views.py
@@ -11,8 +11,6 @@ from django.conf import settings
 from django.contrib import messages
 from django.utils import timezone
 from django.shortcuts import get_object_or_404, render, redirect
-from django.template import Context
-from django.template.loader import get_template
 from django.db import transaction
 from django.http import HttpResponse
 
@@ -151,72 +149,61 @@ def initiate_publication(request):
     This method prefills a ValidatePublicationForm for further
     processing (verification in validate_publication method).
     """
-    if request.method == 'POST':
-        initiate_publication_form = InitiatePublicationForm(request.POST)
-        if initiate_publication_form.is_valid():
-            submission = get_object_or_404(Submission, pk=initiate_publication_form.cleaned_data[
-                                                'accepted_submission'].id)
-            current_issue = get_object_or_404(Issue, pk=initiate_publication_form.cleaned_data[
-                                                'to_be_issued_in'].id)
-
-            # Determine next available paper number:
-            papers_in_current_volume = Publication.objects.filter(
-                in_issue__in_volume=current_issue.in_volume)
-            paper_nr = 1
-            while papers_in_current_volume.filter(paper_nr=paper_nr).exists():
-                paper_nr += 1
-                if paper_nr > 999:
-                    raise PaperNumberingError(paper_nr)
-            doi_label = (
-                current_issue.in_volume.in_journal.name
-                + '.' + str(current_issue.in_volume.number)
-                + '.' + str(current_issue.number) + '.' + paper_nr_string(paper_nr)
-            )
-            doi_string = '10.21468/' + doi_label
-            BiBTeX_entry = (
-                '@Article{' + doi_label + ',\n'
-                '\ttitle={{' + submission.title + '}},\n'
-                '\tauthor={' + submission.author_list.replace(',', ' and') + '},\n'
-                '\tjournal={'
-                + current_issue.in_volume.in_journal.get_abbreviation_citation()
-                + '},\n'
-                '\tvolume={' + str(current_issue.in_volume.number) + '},\n'
-                '\tissue={' + str(current_issue.number) + '},\n'
-                '\tpages={' + paper_nr_string(paper_nr) + '},\n'
-                '\tyear={' + current_issue.until_date.strftime('%Y') + '},\n'
-                '\tpublisher={SciPost},\n'
-                '\tdoi={' + doi_string + '},\n'
-                '\turl={https://scipost.org/' + doi_string + '},\n'
-                '}\n'
-            )
-            initial = {
-                'accepted_submission': submission,
-                'in_issue': current_issue,
-                'paper_nr': paper_nr,
-                'discipline': submission.discipline,
-                'domain': submission.domain,
-                'subject_area': submission.subject_area,
-                'secondary_areas': submission.secondary_areas,
-                'title': submission.title,
-                'author_list': submission.author_list,
-                'abstract': submission.abstract,
-                'BiBTeX_entry': BiBTeX_entry,
-                'doi_label': doi_label,
-                'submission_date': initiate_publication_form.cleaned_data['original_submission_date'],
-                'acceptance_date': initiate_publication_form.cleaned_data['acceptance_date'],
-                'publication_date': timezone.now(),
-                'latest_activity': timezone.now(),
-            }
-            validate_publication_form = ValidatePublicationForm(initial=initial)
-            context = {'validate_publication_form': validate_publication_form, }
-            return render(request, 'journals/validate_publication.html', context)
-        else:
-            errormessage = 'The form was not filled validly.'
-            context = {'initiate_publication_form': initiate_publication_form,
-                       'errormessage': errormessage}
-            return render(request, 'journals/initiate_publication.html', context)
-    else:
-        initiate_publication_form = InitiatePublicationForm()
+    initiate_publication_form = InitiatePublicationForm(request.POST or None)
+    if initiate_publication_form.is_valid():
+        submission = initiate_publication_form.cleaned_data['accepted_submission']
+        current_issue = initiate_publication_form.cleaned_data['to_be_issued_in']
+
+        # Determine next available paper number:
+        paper_nr = Publication.objects.filter(in_issue__in_volume=current_issue.in_volume).count()
+        paper_nr += 1
+        if paper_nr > 999:
+            raise PaperNumberingError(paper_nr)
+
+        # Build form data
+        doi_label = (
+            current_issue.in_volume.in_journal.name
+            + '.' + str(current_issue.in_volume.number)
+            + '.' + str(current_issue.number) + '.' + paper_nr_string(paper_nr)
+        )
+        doi_string = '10.21468/' + doi_label
+        BiBTeX_entry = (
+            '@Article{' + doi_label + ',\n'
+            '\ttitle={{' + submission.title + '}},\n'
+            '\tauthor={' + submission.author_list.replace(',', ' and') + '},\n'
+            '\tjournal={'
+            + current_issue.in_volume.in_journal.get_abbreviation_citation()
+            + '},\n'
+            '\tvolume={' + str(current_issue.in_volume.number) + '},\n'
+            '\tissue={' + str(current_issue.number) + '},\n'
+            '\tpages={' + paper_nr_string(paper_nr) + '},\n'
+            '\tyear={' + current_issue.until_date.strftime('%Y') + '},\n'
+            '\tpublisher={SciPost},\n'
+            '\tdoi={' + doi_string + '},\n'
+            '\turl={https://scipost.org/' + doi_string + '},\n'
+            '}\n'
+        )
+        initial = {
+            'accepted_submission': submission,
+            'in_issue': current_issue,
+            'paper_nr': paper_nr,
+            'discipline': submission.discipline,
+            'domain': submission.domain,
+            'subject_area': submission.subject_area,
+            'secondary_areas': submission.secondary_areas,
+            'title': submission.title,
+            'author_list': submission.author_list,
+            'abstract': submission.abstract,
+            'BiBTeX_entry': BiBTeX_entry,
+            'doi_label': doi_label,
+            'acceptance_date': submission.acceptance_date,
+            'submission_date': submission.submission_date,
+            'publication_date': timezone.now(),
+        }
+        validate_publication_form = ValidatePublicationForm(initial=initial)
+        context = {'validate_publication_form': validate_publication_form}
+        return render(request, 'journals/validate_publication.html', context)
+
     context = {'initiate_publication_form': initiate_publication_form}
     return render(request, 'journals/initiate_publication.html', context)
 
@@ -237,6 +224,7 @@ def validate_publication(request):
                                                         request.FILES or None)
     if validate_publication_form.is_valid():
         publication = validate_publication_form.save()
+
         # Fill in remaining data
         publication.pdf_file = request.FILES['pdf_file']
         submission = publication.accepted_submission
@@ -244,6 +232,7 @@ def validate_publication(request):
         publication.authors_claims.add(*submission.authors_claims.all())
         publication.authors_false_claims.add(*submission.authors_false_claims.all())
         publication.save()
+
         # Move file to final location
         initial_path = publication.pdf_file.path
         new_dir = (settings.MEDIA_ROOT + publication.in_issue.path + '/'
@@ -253,17 +242,23 @@ def validate_publication(request):
         os.rename(initial_path, new_path)
         publication.pdf_file.name = new_path
         publication.save()
+
         # Mark the submission as having been published:
-        publication.accepted_submission.published_as = publication
-        publication.accepted_submission.status = 'published'
-        publication.accepted_submission.save()
+        submission.published_as = publication
+        submission.status = 'published'
+        submission.save()
+
         # TODO: Create a Commentary Page
         # Email authors
         JournalUtils.load({'publication': publication})
         JournalUtils.send_authors_paper_published_email()
-        ack_header = 'The publication has been validated.'
-        context['ack_header'] = ack_header
-        return render(request, 'scipost/acknowledgement.html', context)
+
+        # Add SubmissionEvents
+        submission.add_general_event('The Submission has been published as %s.'
+                                     % publication.doi_label)
+
+        messages.success(request, 'The publication has been validated.')
+        return redirect(publication.get_absolute_url())
     else:
         context['errormessage'] = 'The form was invalid.'