diff --git a/club/forms.py b/club/forms.py
index 6cf4e405..dca2b05c 100644
--- a/club/forms.py
+++ b/club/forms.py
@@ -143,8 +143,6 @@ class MailingForm(forms.Form):
 
         if cleaned_data["action"] == self.ACTION_NEW_MAILING:
             self.check_required(cleaned_data, "mailing_email")
-            # self.check_required(cleaned_data, "mailing_club")
-            # self.check_required(cleaned_data, "mailing_moderator")
 
         if cleaned_data["action"] == self.ACTION_NEW_SUBSCRIPTION:
             self.check_required(cleaned_data, "subscription_mailing")
diff --git a/club/tests.py b/club/tests.py
index 25f6e019..82ddf937 100644
--- a/club/tests.py
+++ b/club/tests.py
@@ -22,12 +22,15 @@
 #
 #
 
+from django.conf import settings
 from django.test import TestCase
+from django.utils import timezone
 from django.core.urlresolvers import reverse
 from django.core.management import call_command
 
 from core.models import User
-from club.models import Club
+from club.models import Club, Membership
+from club.forms import MailingForm
 
 # Create your tests here.
 
@@ -373,3 +376,73 @@ class ClubTest(TestCase):
             "S' Kia\\n                    
Responsable info | "
             in content
         )
+
+
+class MailingFormTest(TestCase):
+    """Perform validation tests for MailingForm"""
+
+    def setUp(self):
+        call_command("populate")
+        self.skia = User.objects.filter(username="skia").first()
+        self.rbatsbak = User.objects.filter(username="rbatsbak").first()
+        self.guy = User.objects.filter(username="krophil").first()
+        self.comunity = User.objects.filter(username="comunity").first()
+        self.bdf = Club.objects.filter(unix_name="bdf").first()
+        Membership(
+            user=self.rbatsbak,
+            club=self.bdf,
+            start_date=timezone.now(),
+            role=settings.SITH_CLUB_ROLES_ID["Board member"],
+        ).save()
+
+    def test_mailing_list_add_no_moderation(self):
+        # Test with Communication admin
+        self.client.login(username="comunity", password="plop")
+        self.client.post(
+            reverse("club:mailing", kwargs={"club_id": self.bdf.id}),
+            {"action": MailingForm.ACTION_NEW_MAILING, "mailing_email": "foyer"},
+        )
+        response = self.client.get(
+            reverse("club:mailing", kwargs={"club_id": self.bdf.id})
+        )
+        self.assertContains(response, text="Liste de diffusion foyer@utbm.fr")
+
+        # Test with Root
+        self.client.login(username="root", password="plop")
+        self.client.post(
+            reverse("club:mailing", kwargs={"club_id": self.bdf.id}),
+            {"action": MailingForm.ACTION_NEW_MAILING, "mailing_email": "mde"},
+        )
+        response = self.client.get(
+            reverse("club:mailing", kwargs={"club_id": self.bdf.id})
+        )
+        self.assertContains(response, text="Liste de diffusion mde@utbm.fr")
+
+    def test_mailing_list_add_moderation(self):
+        self.client.login(username="rbatsbak", password="plop")
+        self.client.post(
+            reverse("club:mailing", kwargs={"club_id": self.bdf.id}),
+            {"action": MailingForm.ACTION_NEW_MAILING, "mailing_email": "mde"},
+        )
+        response = self.client.get(
+            reverse("club:mailing", kwargs={"club_id": self.bdf.id})
+        )
+        self.assertNotContains(response, text="Liste de diffusion mde@utbm.fr")
+        self.assertContains(
+            response, text="Listes de diffusions en attente de modération
"
+        )
+        self.assertContains(response, "mde@utbm.fr")
+
+    def test_mailing_list_forbidden(self):
+        # With anonymous user
+        response = self.client.get(
+            reverse("club:mailing", kwargs={"club_id": self.bdf.id})
+        )
+        self.assertContains(response, "", status_code=403)
+
+        # With user not in club
+        self.client.login(username="krophil", password="plop")
+        response = self.client.get(
+            reverse("club:mailing", kwargs={"club_id": self.bdf.id})
+        )
+        self.assertContains(response, "", status_code=403)
diff --git a/club/views.py b/club/views.py
index 31dc0ad0..1d2e145e 100644
--- a/club/views.py
+++ b/club/views.py
@@ -563,12 +563,18 @@ class ClubMailingView(ClubTabsMixin, CanEditMixin, DetailFormView):
         """
         Add mailing subscriptions for each user given and/or for the specified email in form
         """
+        users_to_save = []
+
         for user in cleaned_data["subscription_users"]:
             sub = MailingSubscription(
                 mailing=cleaned_data["subscription_mailing"], user=user
             )
-            sub.clean()
-            sub.save()
+            try:
+                sub.clean()
+            except ValidationError as validation_error:
+                return validation_error
+
+            users_to_save.append(sub.save())
 
         if cleaned_data["subscription_email"]:
             sub = MailingSubscription(
@@ -582,6 +588,10 @@ class ClubMailingView(ClubTabsMixin, CanEditMixin, DetailFormView):
             return validation_error
         sub.save()
 
+        # Save users after we are sure there is no error
+        for user in users_to_save:
+            user.save()
+
         return None
 
     def remove_subscription(self, cleaned_data):
diff --git a/core/management/commands/populate.py b/core/management/commands/populate.py
index cccaf098..02bd3cd3 100644
--- a/core/management/commands/populate.py
+++ b/core/management/commands/populate.py
@@ -837,6 +837,27 @@ Welcome to the wiki page!
                 krophil_profile.save()
                 krophil.profile_pict = krophil_profile
                 krophil.save()
+            # Adding user Com Unity
+            comunity = User(
+                username="comunity",
+                last_name="Unity",
+                first_name="Com",
+                email="comunity@git.an",
+                date_of_birth="1942-06-12",
+            )
+            comunity.set_password("plop")
+            comunity.save()
+            comunity.groups = [
+                Group.objects.filter(name="Communication admin").first().id
+            ]
+            comunity.save()
+            Membership(
+                user=comunity,
+                club=bar_club,
+                start_date=timezone.now(),
+                role=settings.SITH_CLUB_ROLES_ID["Board member"],
+            ).save()
+
             # Adding subscription for sli
             s = Subscription(
                 member=User.objects.filter(pk=sli.pk).first(),
@@ -861,6 +882,18 @@ Welcome to the wiki page!
                 start=s.subscription_start,
             )
             s.save()
+            # Com Unity
+            s = Subscription(
+                member=comunity,
+                subscription_type=default_subscription,
+                payment_method=settings.SITH_SUBSCRIPTION_PAYMENT_METHOD[0][0],
+            )
+            s.subscription_start = s.compute_start()
+            s.subscription_end = s.compute_end(
+                duration=settings.SITH_SUBSCRIPTIONS[s.subscription_type]["duration"],
+                start=s.subscription_start,
+            )
+            s.save()
 
             Selling(
                 label=dcons.name,
diff --git a/locale/fr/LC_MESSAGES/django.po b/locale/fr/LC_MESSAGES/django.po
index 5b54e273..8eab8c71 100644
--- a/locale/fr/LC_MESSAGES/django.po
+++ b/locale/fr/LC_MESSAGES/django.po
@@ -948,7 +948,7 @@ msgstr "Ce champ est obligatoire."
 
 #: club/forms.py:162
 msgid "You must specify at least an user or an email address"
-msgstr ""
+msgstr "vous devez spécifier au moins un utilisateur ou une adresse email"
 
 #: club/forms.py:172 counter/views.py:1481
 msgid "Begin date"