diff --git a/__manifest__.py b/__manifest__.py
index 22196e4470dc5f67c875a64aff6fc70c67131f74..32e73e588a95c8ce583090162c835382f6582940 100644
--- a/__manifest__.py
+++ b/__manifest__.py
@@ -22,6 +22,8 @@
         "views/assets.xml",
         "wizard/scop_period_wizard.xml",
         "wizard/scop_deces_wizard.xml",
+        "wizard/scop_membership_out_wizard.xml",
+        "wizard/scop_membership_period_wizard.xml",
         "views/res_company.xml",
         "views/res_users.xml",
         "views/res_partner.xml",
diff --git a/models/res_partner.py b/models/res_partner.py
index 4a21ef1333807ea28c47db0db38ce54a9afd2b33..9cac81a6b0c3b18fac83fbe705fb9c79f140c49e 100644
--- a/models/res_partner.py
+++ b/models/res_partner.py
@@ -624,7 +624,7 @@ class ScopPartner(models.Model):
                         and parent.cooperative_form_id.name == "SCIC"):
                     partner.contact_legality = 'customer'
 
-    @api.depends('membership_period_ids')
+    @api.model
     def _compute_membership(self):
         for partner in self:
             type_cg = self.env['scop.membership.type'].search([
diff --git a/views/res_partner_cooperative.xml b/views/res_partner_cooperative.xml
index 99f2e86390719fefd065322720c38e93d1b0caf2..af19111faf0efa6eb3c94b3d14eac8e8657c62af 100644
--- a/views/res_partner_cooperative.xml
+++ b/views/res_partner_cooperative.xml
@@ -118,7 +118,9 @@
                 <form string="Cooperatives" attrs="{'readonly': [('project_status', '=', '5_cg')]}">
                     <header>
                         <button string="Nouvelle période" type="action" name="%(cgscop_partner.scop_period_wizard_create_action)d" class="oe_highlight" attrs="{'invisible': ['|', ('write_date', '=', False), ('project_status', '!=', '6_suivi')]}" groups="cgscop_partner.group_add_period"/>
+                        <button string="Nouvelle période d'adhésion" type="action" name="%(cgscop_partner.scop_membership_period_wizard_create_action)d" class="oe_highlight" attrs="{'invisible': ['|', ('write_date', '=', False), ('project_status', '!=', '6_suivi')]}" groups="cgscop_partner.group_add_period"/>
                         <button string="Décés/Mise en sommeil" type="action" name="%(cgscop_partner.scop_deces_wizard_create_action)d" attrs="{'invisible': ['|', ('dissolution_reason_id', '!=', False), '|', ('write_date', '=', False), ('project_status', '!=', '6_suivi')]}" groups="cgscop_partner.group_add_period"/>
+                        <button string="Radiation" type="action" name="%(cgscop_partner.scop_membership_out_wizard_create_action)d" attrs="{'invisible': ['|', ('write_date', '=', False), ('project_status', '!=', '6_suivi')]}" groups="cgscop_partner.group_add_period"/>
                         <button string="Envoyer Dossier CG" type="object" name="scop_send_to_cg" class="btn-primary" attrs="{'invisible': ['|', ('write_date', '=', False), ('project_status', '!=', '4_adhesion')]}"/>
                         <button string="Dossier créé CG (temp)" type="object" name="scop_valid_cg" class="btn-primary" attrs="{'invisible': ['|', ('write_date', '=', False), ('project_status', '!=', '5_cg')]}"/>
                         <button string="Prospect Abandonne" type="object" name="scop_abandonne" attrs="{'invisible':[('project_status','in',('5_cg', '6_suivi', '7_abandonne'))]}"/>
diff --git a/wizard/__init__.py b/wizard/__init__.py
index 2db860f3e55ad009a0a26fa0a0fec525b71ca6d6..96fa0b62de6941ff782dc1ea14e019533c874e97 100644
--- a/wizard/__init__.py
+++ b/wizard/__init__.py
@@ -3,3 +3,5 @@
 
 from . import scop_period_wizard
 from . import scop_deces_wizard
+from . import scop_membership_period_wizard
+from . import scop_membership_out_wizard
diff --git a/wizard/scop_membership_out_wizard.py b/wizard/scop_membership_out_wizard.py
new file mode 100644
index 0000000000000000000000000000000000000000..0ef03db691f3cc2761e3fdeb8a6491112c3623fb
--- /dev/null
+++ b/wizard/scop_membership_out_wizard.py
@@ -0,0 +1,53 @@
+# © 2019 Le Filament (<http://www.le-filament.com>)
+# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
+
+from odoo import api, fields, models
+from odoo.exceptions import ValidationError
+
+
+class ScopMembershipOutWizard(models.TransientModel):
+    _name = 'scop.membership.out.wizard'
+    _description = "Radiation"
+
+    # Default functions
+    @api.model
+    def _default_partner_id(self):
+        return self.env.context.get('active_id')
+
+    partner_id = fields.Integer('Partner', default=_default_partner_id)
+    type_id = fields.Many2one(
+        'scop.membership.type',
+        string="Type d'adhésion",
+        ondelete='restrict', required=True)
+    end = fields.Date(
+        "Fin d'adhésion", required=True, default=fields.Date.today())
+    end_reason_id = fields.Many2one(
+        'scop.membership.reason.end',
+        string="Motif de fin d’adhésion",
+        on_delete='restrict',
+        required=True)
+    note = fields.Text('Commentaires')
+
+    @api.multi
+    def member_out(self):
+        # Close previous period
+        for period in self:
+            last_period = self.env['scop.membership.period'].search(
+                [('partner_id', '=', period.partner_id),
+                 ('end', '=', False), ('type_id', '=', period.type_id.id)],
+                limit=1)
+            if last_period:
+                if period.end >= last_period.start:
+                    last_period.write({
+                        'end': period.end,
+                        'end_reason_id': period.end_reason_id.id,
+                        'note': period.note,
+                    })
+                else:
+                    raise ValidationError(
+                        "La date de fin doit être postèrieure à la date de "
+                        + "début de la dernière période: "
+                        + str(last_period.start))
+            else:
+                raise ValidationError(
+                    "Il n'existe pas de période avec ce type à fermer.")
diff --git a/wizard/scop_membership_out_wizard.xml b/wizard/scop_membership_out_wizard.xml
new file mode 100644
index 0000000000000000000000000000000000000000..c16e2dd36cadd3156c69b2092c7f50263c1c1feb
--- /dev/null
+++ b/wizard/scop_membership_out_wizard.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<odoo>
+    <!-- WIZARD FORM -->
+    <record id="scop_membership_out_wizard_view_form" model="ir.ui.view">
+        <field name="name">scop.membership.out.wizard.form</field>
+        <field name="model">scop.membership.out.wizard</field>
+        <field name="arch" type="xml">
+            <form string="Radiation">
+                <group name="period" string="Radiation">
+                        <field name="type_id"/>
+                        <field name="end"/>
+                        <field name="end_reason_id"/>
+                        <field name="note"/>
+                </group>
+                <footer>
+                    <button class="btn btn-sm btn-primary" name="member_out" string="Créer" type="object" confirm="Êtes-vous sûr de vouloir clôturer la dernière période ?"/>
+                    <button class="btn btn-sm btn-default" special="cancel" string="Close"/>
+                </footer>
+            </form>
+        </field>
+    </record>
+
+    <record id="scop_membership_out_wizard_create_action" model="ir.actions.act_window">
+        <field name="name">Radiation</field>
+        <field name="type">ir.actions.act_window</field>
+        <field name="res_model">scop.membership.out.wizard</field>
+        <field name="view_mode">form</field>
+        <field name="view_id" ref="scop_membership_out_wizard_view_form"/>
+        <field name="target">new</field>
+    </record>
+
+</odoo>
diff --git a/wizard/scop_membership_period_wizard.py b/wizard/scop_membership_period_wizard.py
new file mode 100644
index 0000000000000000000000000000000000000000..ca4a97fc9621ed3a1343d9d15a078a71af882638
--- /dev/null
+++ b/wizard/scop_membership_period_wizard.py
@@ -0,0 +1,51 @@
+# © 2019 Le Filament (<http://www.le-filament.com>)
+# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
+
+from odoo import api, fields, models
+from odoo.exceptions import ValidationError
+
+
+class ScopMembershipPeriodWizard(models.TransientModel):
+    _name = 'scop.membership.period.wizard'
+    _description = "Création d'une nouvelle période d'adhésion"
+
+    # Default functions
+    @api.model
+    def _default_partner_id(self):
+        return self.env.context.get('active_id')
+
+    partner_id = fields.Integer('Partner', default=_default_partner_id)
+    type_id = fields.Many2one(
+        'scop.membership.type',
+        string="Type d'adhésion",
+        ondelete='restrict', required=True)
+    start = fields.Date('Début d’adhésion', required=True,
+                        default=fields.Date.today())
+    number = fields.Char("No adhérent", required=True)
+    state = fields.Selection(
+        [("none", "Non Adhérent"),
+         ("ongoing", "Traitement de l'adhésion"),
+         ("approval", "Attente d'approbation"),
+         ("done", "Adhérent")],
+        string="Statut adhésion", default="none", required=True)
+    note = fields.Text('Commentaires')
+
+    @api.multi
+    def create_period(self):
+        for period in self:
+            # Raise validation error if previous period exists
+            if self.env['scop.membership.period'].search(
+                    [('partner_id', '=', period.partner_id),
+                     ('end', '=', False), ('type_id', '=', period.type_id.id)],
+                    limit=1):
+                raise ValidationError(
+                    "Une période d'adhésion existe déjà pour ce type")
+            else:
+                self.env['scop.membership.period'].create({
+                    'partner_id': period.partner_id,
+                    'type_id': period.type_id.id,
+                    'start': period.start,
+                    'number': period.number,
+                    'state': period.state,
+                    'note': period.note
+                    })
diff --git a/wizard/scop_membership_period_wizard.xml b/wizard/scop_membership_period_wizard.xml
new file mode 100644
index 0000000000000000000000000000000000000000..0656cb5e49c8ce77fcdc30126932a3d9095e97f0
--- /dev/null
+++ b/wizard/scop_membership_period_wizard.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<odoo>
+    <!-- WIZARD FORM -->
+    <record id="scop_membership_period_wizard_view_form" model="ir.ui.view">
+        <field name="name">scop.membership.period.wizard.form</field>
+        <field name="model">scop.membership.period.wizard</field>
+        <field name="arch" type="xml">
+            <form string="Nouvelle Période d'Adhésion">
+                <group name="period" string="Période" col="2">
+                    <field name="type_id"/>
+                    <field name="start"/>
+                    <field name="number"/>
+                    <field name="state"/>
+                    <field name="note"/>
+                </group>
+                <footer>
+                    <button class="btn btn-sm btn-primary" name="create_period" string="Créer" type="object" confirm="Êtes-vous sûr de vouloir créer une nouvelle période d'adhésion ?"/>
+                    <button class="btn btn-sm btn-default" special="cancel" string="Close"/>
+                </footer>
+            </form>
+        </field>
+    </record>
+
+    <record id="scop_membership_period_wizard_create_action" model="ir.actions.act_window">
+        <field name="name">Nouvelle période d'adhésion</field>
+        <field name="type">ir.actions.act_window</field>
+        <field name="res_model">scop.membership.period.wizard</field>
+        <field name="view_mode">form</field>
+        <field name="view_id" ref="scop_membership_period_wizard_view_form"/>
+        <field name="target">new</field>
+    </record>
+
+</odoo>
diff --git a/wizard/scop_period_wizard.py b/wizard/scop_period_wizard.py
index 8c8b69f9cf030f87306ca03b1356090f53739fae..bf331d562c3e45173b1bd747ec9422204df58633 100644
--- a/wizard/scop_period_wizard.py
+++ b/wizard/scop_period_wizard.py
@@ -5,7 +5,7 @@ from odoo import api, fields, models
 from odoo.exceptions import ValidationError
 
 
-class ScopPeiodWizard(models.TransientModel):
+class ScopPeriodWizard(models.TransientModel):
     _name = 'scop.period.wizard'
     _description = "Création d'une nouvelle période"