diff --git a/models/res_partner.py b/models/res_partner.py
index 4ab383839cb13cdc2c6a5fb365ed58f9da1bab38..6bc7a42a5cb077156708e8b38af9c54262070ae5 100644
--- a/models/res_partner.py
+++ b/models/res_partner.py
@@ -411,7 +411,9 @@ class ScopPartner(models.Model):
     def write(self, vals):
         result = super(ScopPartner, self).write(vals)
         for partner in self:
-            if not partner.is_company and partner.type == 'contact':
+            if (not partner.is_company
+                and partner.type == 'contact'
+                and not partner.user_ids):
                 if (not partner.email and not partner.phone
                         and not partner.mobile):
                     raise ValidationError(
@@ -419,6 +421,11 @@ class ScopPartner(models.Model):
                         pour " + partner.name)
             if vals.get('project_status') == '6_suivi':
                 self._create_period(partner)
+            partners_to_subscribe = [
+                partner.followup_delegate_id.partner_id.id,
+                partner.creation_delegate_id.partner_id.id
+            ]
+            partner.message_subscribe(partner_ids=partners_to_subscribe)
         return result
 
     # Création d'une période lors de la création d'une coopérative
@@ -430,6 +437,13 @@ class ScopPartner(models.Model):
                     'project_status') == '6_suivi':
                 for partner in partners:
                     self._create_period(partner)
+
+        for partner in partners:
+            partners_to_subscribe = [
+                partner.followup_delegate_id.partner_id.id,
+                partner.creation_delegate_id.partner_id.id
+            ]
+            partner.message_subscribe(partner_ids=partners_to_subscribe)
         return partners