diff --git a/__manifest__.py b/__manifest__.py
index 4c8d6f5bbb8e122c6d92d38f94662db4f6b894c2..fc2f7d137826978fa85082ac8900ff717d7cd9d4 100755
--- a/__manifest__.py
+++ b/__manifest__.py
@@ -11,6 +11,8 @@
     'data': [
         # security
         'security/ir.model.access.csv',
+        # datas
+        'data/membership_sequence.xml',
         # views
         'views/membership_membership_line.xml',
         'views/res_partner.xml',
diff --git a/data/membership_sequence.xml b/data/membership_sequence.xml
new file mode 100644
index 0000000000000000000000000000000000000000..88665b1ce629d5bb2c1bbc24345245e61396503a
--- /dev/null
+++ b/data/membership_sequence.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright 2021 Le Filament
+     License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). -->
+
+<odoo>
+    <data noupdate="1">
+        <record id="membership_number_seq" model="ir.sequence">
+            <field name="name">AFAC : Num Adherent</field>
+            <field name="code">afac.membership.number</field>
+            <field name="prefix"></field>
+            <field eval="1" name="number_next"/>
+            <field eval="1" name="number_increment"/>
+            <field eval="False" name="company_id"/>
+        </record>
+    </data>
+</odoo>
diff --git a/models/res_partner.py b/models/res_partner.py
index 87f0549ca37ea93340fad2d0162a1adc51db4ec5..adfca79cd8c283792586ef273f2affe08eca1634 100644
--- a/models/res_partner.py
+++ b/models/res_partner.py
@@ -8,7 +8,26 @@ class ResPartner(models.Model):
     _inherit = 'res.partner'
 
     # Company Fields
-    membership_number = fields.Integer(string='N° Adhérent')
+    membership_number = fields.Integer(
+        string='N° Adhérent',
+        compute='_compute_membership_number',
+        store=True
+    )
+    membership_contact_id = fields.Many2one(
+        comodel_name='res.partner',
+        string='Contact Adhésion',
+        domain="[('parent_id', '=', id)]"
+    )
+    membership_mandate_id = fields.Many2one(
+        comodel_name='res.partner',
+        string='Contact Mandataire',
+        domain="[('parent_id', '=', id)]"
+    )
+    membership_delegate_id = fields.Many2one(
+        comodel_name='res.partner',
+        string='Contact Délégué',
+        domain="[('parent_id', '=', id)]"
+    )
 
     # ------------------------------------------------------
     # SQL Constraints
@@ -21,6 +40,11 @@ class ResPartner(models.Model):
     # ------------------------------------------------------
     # Computed fields / Search Fields
     # ------------------------------------------------------
+    @api.depends('membership_state')
+    def _compute_membership_number(self):
+        for partner in self:
+            if partner.membership_number == 0 and partner.membership_state != 'none':
+                self.membership_number = self.env['ir.sequence'].next_by_code('afac.membership.number')
 
     # ------------------------------------------------------
     # Onchange / Constraints
diff --git a/views/res_partner.xml b/views/res_partner.xml
index 5873019890e3407ef9d8ba3c0e5daa2435e81776..e42390824b63f1764f66c47ce3ab4f08009870f4 100644
--- a/views/res_partner.xml
+++ b/views/res_partner.xml
@@ -27,6 +27,21 @@
             </field>
         </record>
 
+        <!-- Tree View -->
+        <record model="ir.ui.view" id="res_partner_afac_tree">
+            <field name="name">res.partner.afac.tree</field>
+            <field name="model">res.partner</field>
+            <field name="inherit_id" ref="base.view_partner_tree"/>
+            <field name="arch" type="xml">
+                <xpath expr="//field[@name='category_id']" position="after">
+                    <field name="membership_number" optional="hide"/>
+                    <field name="membership_mandate_id" optional="hide"/>
+                    <field name="membership_delegate_id" optional="hide"/>
+                    <field name="membership_contact_id" optional="hide"/>
+                </xpath>
+
+            </field>
+        </record>
 
         <!-- Form view -->
         <record model="ir.ui.view" id="res_partner_membership_form">
@@ -49,6 +64,54 @@
                 <xpath expr="//field[@name='associate_member']" position="attributes">
                     <attribute name="invisible">1</attribute>
                 </xpath>
+                <xpath expr="//field[@name='member_lines']" position="before">
+                    <separator></separator>
+                    <group>
+                        <group>
+                            <field name="membership_mandate_id" options="{'no_create': True}"/>
+                            <field name="membership_delegate_id" options="{'no_create': True}"/>
+                        </group>
+                        <group>
+                            <field name="membership_contact_id" options="{'no_create': True}"/>
+                        </group>
+                    </group>
+                </xpath>
+            </field>
+        </record>
+
+        <!-- Form view -->
+        <record model="ir.ui.view" id="res_partner_membership_form">
+            <field name="name">res.partner.membership.form.inherit</field>
+            <field name="inherit_id" ref="membership.view_partner_form"/>
+            <field name="model">res.partner</field>
+            <field name="arch" type="xml">
+                <xpath expr="//page[@name='membership']" position="attributes">
+                    <attribute name="attrs">{'invisible': [('is_company', '!=', True)]}</attribute>
+                </xpath>
+                <xpath expr="//field[@name='free_member']" position="attributes">
+                    <attribute name="invisible">1</attribute>
+                </xpath>
+                <xpath expr="//field[@name='free_member']" position="before">
+                    <field name="membership_number"/>
+                </xpath>
+                <xpath expr="//button[@name='%(membership.action_membership_invoice_view)d']" position="attributes">
+                    <attribute name="invisible">1</attribute>
+                </xpath>
+                <xpath expr="//field[@name='associate_member']" position="attributes">
+                    <attribute name="invisible">1</attribute>
+                </xpath>
+                <xpath expr="//field[@name='member_lines']" position="before">
+                    <separator></separator>
+                    <group>
+                        <group>
+                            <field name="membership_mandate_id" options="{'no_create': True}"/>
+                            <field name="membership_delegate_id" options="{'no_create': True}"/>
+                        </group>
+                        <group>
+                            <field name="membership_contact_id" options="{'no_create': True}"/>
+                        </group>
+                    </group>
+                </xpath>
             </field>
         </record>