diff --git a/production/signals.py b/production/signals.py
index 2d17c3a331cd97ce5d2547cd909b5188a472ee6e..31327d531302210210e7c4d53557592a7305a655 100644
--- a/production/signals.py
+++ b/production/signals.py
@@ -46,9 +46,8 @@ def notify_stream_completed(sender, instance, **kwargs):
     """
     Notify the production team about a Production Stream being completed.
     """
-    stream = instance.stream
-    notify.send(sender=sender, recipient=stream.officer.user,
+    notify.send(sender=sender, recipient=instance.officer.user,
                 actor=sender, verb=' marked Production Stream as completed.', target=instance)
 
-    notify.send(sender=sender, recipient=stream.supervisor.user,
+    notify.send(sender=sender, recipient=instance.supervisor.user,
                 actor=sender, verb=' marked Production Stream as completed.', target=instance)
diff --git a/production/views.py b/production/views.py
index 9c86ca0c9f0473030373e175da29151e893829a6..64b7d4eb282aadac5ca3586c880efeecbc89afa1 100644
--- a/production/views.py
+++ b/production/views.py
@@ -217,6 +217,7 @@ class DeleteEventView(DeleteView):
 
 @is_production_user()
 @permission_required('scipost.can_publish_accepted_submission', raise_exception=True)
+@transaction.atomic
 def mark_as_completed(request, stream_id):
     stream = get_object_or_404(ProductionStream.objects.ongoing(), pk=stream_id)
     stream.status = PRODUCTION_STREAM_COMPLETED