diff --git a/smash/web/templates/_base.html b/smash/web/templates/_base.html
index 0fdfe7ae36d3bbc17d9f99d78d24185e0ed7d054..0c30d7e84c00da6b6e12a64b0a2455f32fabbe7f 100644
--- a/smash/web/templates/_base.html
+++ b/smash/web/templates/_base.html
@@ -240,6 +240,19 @@ desired effect
 
         <!-- Main content -->
         <section class="content">
+            {% block messages %}
+                {% if messages %}
+                    <div class="messages">
+                        {% for message in messages %}
+                            <div class="alert {% if message.tags %}alert-{{ message.tags }}{% endif %} alert-dismissible">
+                                <button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button>
+                                <h4>{{ message.tags | title }}</h4>
+                                {{ message }}
+                            </div>
+                        {% endfor %}
+                    </div>
+                {% endif %}
+            {% endblock %}
             {% block maincontent %}
             {% endblock maincontent %}
         </section>
diff --git a/smash/web/tests/test_view_subjects.py b/smash/web/tests/test_view_subjects.py
index 39783854007eceecff55a6d76a5205d7f258aad1..5ce3d247a2343b9a4dffcae29f3d8750c51e30a4 100644
--- a/smash/web/tests/test_view_subjects.py
+++ b/smash/web/tests/test_view_subjects.py
@@ -42,7 +42,7 @@ class SubjectsViewTests(TestCase):
     def test_render_subject_visit_details(self):
         subject = create_subject()
         visit = create_visit(subject)
-        appointment = create_appointment(visit)
+        create_appointment(visit)
 
         response = self.client.get(reverse('web.views.subject_visit_details', kwargs={'id': subject.id}))
         self.assertEqual(response.status_code, 200)
@@ -75,15 +75,17 @@ class SubjectsViewTests(TestCase):
             if value is not None:
                 form_data[key] = value
 
-        form_data["screening_number"] = "X-";
-        form_data["country"] = "Luxembourg";
-        form_data["first_name"] = "John";
-        form_data["last_name"] = "Doe";
-        form_data["sex"] = SEX_CHOICES_MALE;
-        form_data["type"] = SUBJECT_TYPE_CHOICES_CONTROL;
-        form_data["default_location"] = get_test_location().id;
+        form_data["screening_number"] = "X-"
+        form_data["country"] = "Luxembourg"
+        form_data["first_name"] = "John"
+        form_data["last_name"] = "Doe"
+        form_data["sex"] = SEX_CHOICES_MALE
+        form_data["type"] = SUBJECT_TYPE_CHOICES_CONTROL
+        form_data["default_location"] = get_test_location().id
         response = self.client.post(reverse('web.views.subject_add'), data=form_data)
         self.assertEqual(response.status_code, 302)
+        response = self.client.get(response.url)
+        self.assertContains(response, "Subject created")
 
         subject = Subject.objects.all()[0]
         self.assertEqual("X-001", subject.screening_number)
diff --git a/smash/web/views/subject.py b/smash/web/views/subject.py
index 325e2eca7ab89c51ccb0d6fe221a1d1ceeea00d3..23d90b5ffe8434c6e56851bef2779402c82ea3b3 100644
--- a/smash/web/views/subject.py
+++ b/smash/web/views/subject.py
@@ -1,5 +1,5 @@
 # coding=utf-8
-
+from django.contrib import messages
 from django.shortcuts import redirect, get_object_or_404
 
 from notifications import get_subjects_with_no_visit, get_subjects_with_reminder
@@ -22,7 +22,8 @@ def subject_add(request):
         form = SubjectAddForm(request.POST, request.FILES, user=request.user)
         if form.is_valid():
             form.save()
-            return redirect('web.views.subjects')
+            messages.add_message(request, messages.SUCCESS, 'Subject created')
+            return redirect('web.views.subject_edit', id=form.instance.id)
     else:
         worker = Worker.get_by_user(request.user)
         form = SubjectAddForm(user=request.user, initial={'screening_number': get_prefix_screening_number(worker)})