diff --git a/__manifest__.py b/__manifest__.py
index fa2f244435ac1a9354f48f45eebb10158d35a641..b4417e0154b3695e6655f661e0463f959462d2cc 100644
--- a/__manifest__.py
+++ b/__manifest__.py
@@ -10,6 +10,7 @@
     "depends": [
         "account",
         "cgscop_partner",
+        "cgscop_extranet",
         "cgscop_liste_ministere",
     ],
     "data": [
@@ -19,6 +20,11 @@
         "datas/mail_data.xml",
         "datas/mail_message_subtype.xml",
         "datas/scop_adhesion_file_data.xml",
+        # wizard
+        "wizard/scop_adhesion_year_wizard.xml",
+        "wizard/scop_compulsory_fields_suivi_wizard.xml",
+        "wizard/scop_partner_staff_membership_wizard.xml",
+        "wizard/scop_submit_membership_wizard.xml",
         # views
         "views/assets.xml",
         "views/res_config_settings.xml",
@@ -27,8 +33,5 @@
         "views/scop_adhesion_file.xml",
         # report
         "report/report_scop_adhesion.xml",
-        # wizard
-        "wizard/scop_adhesion_year_wizard.xml",
-        "wizard/scop_compulsory_fields_suivi_wizard.xml",
     ],
 }
diff --git a/models/res_partner.py b/models/res_partner.py
index 5745659eda5c31fe05c072cb5a1728963e34e734..8660763b8cb336fa5c46dc0f719230937a6754e4 100644
--- a/models/res_partner.py
+++ b/models/res_partner.py
@@ -1,10 +1,8 @@
 # © 2022 Le Filament (<http://www.le-filament.com>)
 # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
 
-from pytz import timezone
-
 from odoo import _, api, fields, models
-from odoo.exceptions import ValidationError
+from odoo.exceptions import UserError, ValidationError
 
 
 class ScopPartner(models.Model):
@@ -177,6 +175,33 @@ class ScopPartner(models.Model):
             "target": "new",
         }
 
+    def fill_membership_staff(self):
+        self.ensure_one()
+        staff_id = self.env["scop.partner.staff"].search([
+            ("partner_id", "=", self.id),
+            ("type_entry", "=", "membership"),
+            ("effective_date", ">", fields.Date.subtract(fields.Date.today(), years=1))
+        ], limit=1)
+        if not staff_id:
+            staff_id = staff_id.create({
+                "partner_id": self.id,
+                "type_entry": "membership",
+                "effective_date": fields.Date.today(),
+                "staff_count": 0,
+            })
+
+        wizard = self.env["scop.partner.staff.membership.wizard"].create(
+            {"partner_id": self.id, "staff_id": staff_id.id}
+        )
+        return {
+            "name": "Effectif à l'adhésion",
+            "type": "ir.actions.act_window",
+            "view_mode": "form",
+            "res_model": "scop.partner.staff.membership.wizard",
+            "res_id": wizard.id,
+            "target": "new",
+        }
+
     # ------------------------------------------------------
     # Business methods
     # ------------------------------------------------------
@@ -241,42 +266,6 @@ class ScopPartner(models.Model):
         liasse_adhesion.is_qualified = True
         return liasse_adhesion
 
-    def is_project_complete(self):
-        """
-        Check if project is complete : check fields LM-LF and docs
-        :return: Logs of errors if needed
-        """
-        self.ensure_one()
-        lm_adhesion = self.get_lm_adhesion()
-
-        errors = str()
-        errors_complete_fields = self.check_compulsory_fields(lm_adhesion)
-        if errors_complete_fields:
-            errors += errors_complete_fields
-        errors_complete_docs = self.check_compulsory_docs()
-        if errors_complete_docs:
-            errors_str = str()
-            for error in errors_complete_docs:
-                errors_str += "<li>" + error + "</li>"
-            errors += (
-                "<hr/><strong>Documents manquants :</strong><ul>" + errors_str + "</ul>"
-            )
-        if errors:
-            local_tz = timezone("Europe/Paris")
-            utc_tz = timezone("UTC")
-            self.list_logs = (
-                "<strong>"
-                + utc_tz.localize(fields.Datetime.now())
-                .astimezone(local_tz)
-                .strftime("%d/%m/%Y - %-H:%M")
-                + "</strong> - Impossible de soumettre le dossier à la CG Scop"
-                + errors
-            )
-            return False
-        else:
-            self.list_logs = False
-            return True
-
     def check_compulsory_fields(self, lm):
         """
         Vérification des champs de la liste ministère et de la liasse fiscale
@@ -297,17 +286,6 @@ class ScopPartner(models.Model):
             )
         return res
 
-    def check_compulsory_docs(self):
-        """
-        Vérification de la présence des docs obligatoires
-        :return:
-        """
-        errors = list()
-        if errors:
-            return errors
-        else:
-            return False
-
     def create_num_adherent(self):
         """
         Generate new num adherent with sequence
@@ -383,7 +361,7 @@ class ScopPartner(models.Model):
                 }
             )
 
-    def create_invoice_adhesion(self, lm):
+    def create_invoice_adhesion(self):
         """
         Crée une facture d'adhésion avec l'article et le journal configurés
         ‐ Moins de 11 salariés (ou effectif inconnu) : 80€
@@ -400,8 +378,11 @@ class ScopPartner(models.Model):
                 _("Vous devez configurer un article et un journal d'adhésion !")
             )
         else:
-            effectif = lm.eff_tt
-            amount_adhesion = self.get_amount_adhesion(effectif)
+            staff_line = self.staff_ids.filtered(
+                lambda s: s.type_entry == "membership").sorted(
+                key="effective_date", reverse=True)
+            staff_number = staff_line[0].staff_count if staff_line else 0
+            amount_adhesion = self.get_amount_adhesion(staff_number)
 
             Invoice = self.env["account.move"]
 
@@ -449,29 +430,45 @@ class ScopPartner(models.Model):
     # ------------------------------------------------------
     # Override parent / Change of status
     # ------------------------------------------------------
+    def scop_sumbit_cg(self):
+        """
+        Ouvre le wizard et vérifie les effectifs
+        """
+        wizard = self.env["scop.submit.membership.wizard"].create(
+            {
+                "partner_id": self.id,
+                "list_logs": self.list_logs,
+            }
+        )
+        return {
+            "name": "Confirmation de l'adhésion",
+            "type": "ir.actions.act_window",
+            "view_mode": "form",
+            "res_model": "scop.submit.membership.wizard",
+            "res_id": wizard.id,
+            "target": "new",
+        }
+
     def scop_send_to_cg(self):
-        """Hérite la fonction d'envoi de l'organisme à la CG
-        pour validation afin de :
-        - vérifier si le dossier d'adhésion est complet
+        """
+        Modifie le statut de la coopérative pour transmission du dossier à la CG
         - positionner la date_transmission_cg avec la date du jour
         - affecter la coop à sa DIRECCTE
-        - mettre à jour les lignes d'effectifs sur la fiche coop
         @return : True
         """
-        if self.is_project_complete():
-            super(ScopPartner, self).scop_send_to_cg()
-            self.date_transmission_cg = fields.Date.today()
-            self.lm_adhesion_id.maj_effectif_coop()
-            self.lm_adhesion_id.status = "3_complet"
-            message = "Le dossier d'adhésion a été transmis à la CG Scop"
+        staff_line = self.staff_ids.filtered(
+            lambda s: s.type_entry == "membership").sorted(
+            key="effective_date", reverse=True
+        )
+        if staff_line and staff_line[0].staff_count > 0:
+            self.update({
+                "membership_status": "soumis_cg",
+                "date_transmission_cg": fields.Date.today(),
+                "list_logs": False,
+            })
+            self.affectation_contact_ministere()
         else:
-            message = self.list_logs
-        return {
-            "type": "ir.actions.act_window.message",
-            "title": _("Transmission du dossier d'Adhésion"),
-            "is_html_message": True,
-            "message": _(message),
-        }
+            raise UserError(_("Les effectifs à l'adhésion ne sont pas renseignés."))
 
     def scop_abandonne(self):
         """
@@ -483,42 +480,10 @@ class ScopPartner(models.Model):
         self.date_abort = fields.Date.today()
         return True
 
-    def scop_suivi_check_docs(self):
-        """
-        Contrôle des document obligatoire en passage à statut Suivi
-        """
-        errors = str()
-        errors_complete_docs = self.check_compulsory_docs()
-        if errors_complete_docs:
-            errors_str = str()
-            for error in errors_complete_docs:
-                errors_str += "<li>" + error + "</li>"
-            errors += (
-                "<hr/><strong>Documents manquants :</strong><ul>" + errors_str + "</ul>"
-            )
-        # Si des erreurs remplir les logs avec la liste des documents manquants
-        if errors:
-            local_tz = timezone("Europe/Paris")
-            utc_tz = timezone("UTC")
-            self.list_logs = (
-                "<strong>"
-                + utc_tz.localize(fields.Datetime.now())
-                .astimezone(local_tz)
-                .strftime("%d/%m/%Y - %-H:%M")
-                + "</strong> - Impossible de passer en statut Suivi"
-                + errors
-            )
-        else:
-            self.list_logs = False
-
     def scop_suivi_adhesion(self):
         """
-        Passe la coop en statut suivi avec ou sans adhésion en fonction
-        du bouton cliqué
+        Shows validation wizard
         """
-        # vérification des documents obligatoires
-        self.scop_suivi_check_docs()
-
         wizard = self.env["scop.compulsory.fields.suivi.wizard"].create(
             {
                 "partner_id": self.id,
@@ -535,6 +500,10 @@ class ScopPartner(models.Model):
             "target": "new",
         }
 
+    def scop_valid_cg_button(self):
+        self.ensure_one()
+        self.scop_valid_cg()
+
     def scop_valid_cg(self):
         """
         Inherit function to :
@@ -544,12 +513,11 @@ class ScopPartner(models.Model):
         - set liasse_fiscale_adhesion as qualified
         """
 
-        if not self.lm_adhesion_id:
-            raise ValidationError(
-                _("Cette coopérative n'a pas de dossier d'inscription")
-            )
-
-        res = super(ScopPartner, self).scop_valid_cg()
+        # TODO: Supprimer ?
+        # if not self.lm_adhesion_id:
+        #     raise ValidationError(
+        #         _("Cette coopérative n'a pas de dossier d'inscription")
+        #     )
 
         # Create period adhésions with num adherent
         num_adherent = self.member_number_int or self.create_num_adherent()
@@ -558,13 +526,19 @@ class ScopPartner(models.Model):
         # TODO : check pour fede CAE si coop is CAE ?
 
         # Create invoice adhésion
-        invoice = self.create_invoice_adhesion(self.lm_adhesion_id)
+        invoice = self.create_invoice_adhesion()
         self.invoice_adhesion_id = invoice
+        self.update({
+            "membership_status": "member",
+            "extranet_update_company": True,
+            "extranet_service_access": True,
+        })
 
+        # TODO: Supprimer ?
         # set liasse_fiscale_adhesion as qualified
-        self.lm_adhesion_id.scop_liasse_fiscale_id.write({"is_qualified": True})
+        # self.lm_adhesion_id.scop_liasse_fiscale_id.write({"is_qualified": True})
 
-        return res
+        return True
 
 
 class ResPartnerPrescriberCanal(models.Model):
diff --git a/security/ir.model.access.csv b/security/ir.model.access.csv
index b5dc77e4c9811328765060a95fb640f54cedee54..cd6ee420d00c7c2e0583bbf57708503ffa107ac4 100644
--- a/security/ir.model.access.csv
+++ b/security/ir.model.access.csv
@@ -7,3 +7,5 @@ access_scop_adhesion_file,access_scop_adhesion_file,model_scop_adhesion_file,bas
 admin_scop_adhesion_file,admin_scop_adhesion_file,model_scop_adhesion_file,cgscop_partner.group_cg_administrator,1,1,1,1
 cg_access_compulsory_fields_suivi_wizard,cg_access_compulsory_fields_suivi_wizard,model_scop_compulsory_fields_suivi_wizard,base.group_user,1,1,1,0
 cg_access_adhesion_year_wizard,cg_access_adhesion_year_wizard,model_scop_adhesion_year_wizard,cgscop_partner.group_cg_administrative,1,1,1,0
+access_scop_partner_staff_membership_wizard,access_scop_partner_staff_membership_wizard,model_scop_partner_staff_membership_wizard,base.group_user,1,1,1,1
+access_scop_submit_membership_wizard,access_scop_submit_membership_wizard,model_scop_submit_membership_wizard,base.group_user,1,1,1,1
\ No newline at end of file
diff --git a/views/res_partner.xml b/views/res_partner.xml
index c623ab545d5a0a95d72408f2b17963018e452615..beb13874dd89496bea0b947657afb2b25eb7a5f1 100644
--- a/views/res_partner.xml
+++ b/views/res_partner.xml
@@ -32,49 +32,73 @@
             </field>
         </record>
 
+        <!--
+            Inherited Scop Partner Form
+        -->
         <record id="view_partner_cooperative_adhesion_form" model="ir.ui.view">
             <field name="name">cooperative.adhesion.form</field>
             <field name="model">res.partner</field>
             <field name="inherit_id" ref="cgscop_partner.scop_contact_view_form" />
-            <field name="priority" eval="1" />
             <field name="arch" type="xml">
+                <!-- Boutons de validation -->
+                <xpath expr="//button[@name='scop_abandonne']" position="before">
+                    <button
+                        string="Envoyer Dossier CG"
+                        type="object"
+                        name="scop_sumbit_cg"
+                        class="btn-primary"
+                        attrs="{'invisible': [('membership_status', '!=', 'adhesion')]}"
+                    />
+                    <button
+                        string="Dossier créé CG"
+                        type="object"
+                        name="scop_valid_cg_button"
+                        class="btn-primary"
+                        attrs="{'invisible': [('membership_status', '!=', 'soumis_cg')]}"
+                        groups="cgscop_partner.group_cg_administrator"
+                    />
+                </xpath>
+
+                <!-- Alert pour les données du process d'adhésion -->
+                <xpath expr="//group[@name='scop_general_infos']" position="before">
+                    <div
+                        attrs="{'invisible': [('membership_status', '!=', 'adhesion')]}"
+                        role="alert"
+                        class="alert alert-warning"
+                    >Il est nécessaire de renseigner <button class="btn btn-info btn-sm" name="fill_membership_staff" type="object">les effectifs</button> et <button class="btn btn-info btn-sm" name="">les données financières</button> pour valider l'adhésion.
+                    </div>
+                </xpath>
+
+                <!-- Alert warning pour Statuts et JO -->
+                <xpath expr="//field[@name='date_1st_sign']" position="after">
+                    <div
+                        attrs="{'invisible': ['|', ('date_1st_sign', '=', False), ('project_status', '!=', '3_accompagnement')]}"
+                        role="alert"
+                        class="alert alert-warning"
+                        colspan="2"
+                    >
+                        Charger les <strong>Statuts</strong> et <strong>la publication au JO</strong> dans l'onglet <i>Documents</i>.
+                    </div>
+                </xpath>
+                <!-- Alert warning pour le KBis -->
+                <xpath expr="//field[@name='social_object']" position="before">
+                    <div
+                        attrs="{'invisible': ['|', ('registration_date', '=', False), ('project_status', '!=', '3_accompagnement')]}"
+                        role="alert"
+                        class="alert alert-warning"
+                        colspan="2"
+                    >
+                        Charger le <strong>KBIS</strong> dans l'onglet <i>Documents</i>.
+                    </div>
+                </xpath>
+
                 <page name='scop_contacts' position="before">
+                    <!-- Processus de création -->
                     <page
-                        name="adhesion_processus1"
-                        string="Processus d'Adhésion"
+                        name="creation_process"
+                        string="Processus de création"
                         attrs="{'invisible': ['|', ('is_cooperative', '!=', True), ('project_status','=','4_suivi')]}"
                     >
-                        <header>
-                            <button
-                                string="Dossier d'adhésion"
-                                type="object"
-                                name="scop_lm_adhesion"
-                                class="btn-info"
-                                attrs="{'invisible': ['|', ('membership_status', '!=', 'adhesion'), ('cooperative_form_id', 'in', (%(cgscop_partner.form_scic)d, %(cgscop_partner.form_coop47)d))]}"
-                            />
-                            <button
-                                string="Dossier d'inscription"
-                                type="object"
-                                name="scop_lm_adhesion"
-                                class="btn-info"
-                                attrs="{'invisible': ['|', ('membership_status', '!=', 'adhesion'), ('cooperative_form_id', 'not in', (%(cgscop_partner.form_scic)d, %(cgscop_partner.form_coop47)d))]}"
-                            />
-                            <button
-                                string="Données financières"
-                                type="object"
-                                name="scop_liasse_adhesion"
-                                class="btn-info"
-                                attrs="{'invisible': [('membership_status', '!=', 'adhesion')]}"
-                            />
-                            <button
-                                string="Modifier l'année du dossier"
-                                type="object"
-                                name="scop_change_year_dossier"
-                                class="btn-warning"
-                                attrs="{'invisible': ['|', ('membership_status', '!=', 'adhesion'), ('lm_adhesion_id', '=', False)]}"
-                                groups="cgscop_partner.group_cg_administrator"
-                            />
-                        </header>
                         <div
                             class="alert alert-danger"
                             role="alert"
@@ -160,6 +184,44 @@
                                 <field name="date_convention" />
                                 <field name="amount_convention" widget="monetary" />
                             </group>
+                        </group>
+                    </page>
+
+                    <!-- Processus d'adhésion -->
+                    <page
+                        name="membership_process"
+                        string="Processus d'adhésion"
+                        attrs="{'invisible': ['|', '|', ('is_cooperative', '!=', True), ('project_status','!=','4_suivi'), ('membership_status', 'not in', ('adhesion', 'soumis_cg'))]}"
+                    >
+                        <header>
+                            <button
+                                string="Effectifs à l'adhésion"
+                                type="object"
+                                name="fill_membership_staff"
+                                class="btn-info"
+                            />
+                            <button
+                                string="Données financières"
+                                type="object"
+                                name="scop_liasse_adhesion"
+                                class="btn-info"
+                                attrs="{'invisible': [('membership_status', '!=', 'adhesion')]}"
+                            />
+                        </header>
+                        <div
+                            class="alert alert-danger"
+                            role="alert"
+                            attrs="{'invisible':['|', '|', ('write_date', '=', False), ('list_logs', '=', False), ('project_status', '!=', '3_accompagnement')]}"
+                        >
+                            <field
+                                class="o_field_header"
+                                name="list_logs"
+                                readonly="1"
+                                widget="html"
+                            />
+                        </div>
+                        <field name="project_invoicing_status_nb" invisible="1" />
+                        <group col="3">
                             <group
                                 string="Phase d'adhésion"
                                 attrs="{'invisible':[('project_status','in',('1_information','2_pre-diagnostic','3_accompagnement'))]}"
@@ -174,10 +236,11 @@
                     </page>
                 </page>
 
+                <!-- Onglet 2 processus création -->
                 <page name='scop_staff' position="after">
                     <page
-                        name="adhesion_processus2"
-                        string="Processus d'Adhésion"
+                        name="creation_process_tab"
+                        string="Processus de création"
                         attrs="{'invisible': ['|', ('is_cooperative', '!=', True), ('project_status','!=','4_suivi')]}"
                     >
                         <field name="project_invoicing_status_nb" invisible="1" />
@@ -246,14 +309,6 @@
                                 <field name="date_convention" />
                                 <field name="amount_convention" widget="monetary" />
                             </group>
-                            <group
-                                string="Phase d'adhésion"
-                                attrs="{'invisible':[('project_status','in',('1_information','2_pre-diagnostic','3_accompagnement'))]}"
-                            >
-                                <field name="file_full" widget="boolean_toggle" />
-                                <field name="date_transmission_cg" />
-                                <field name="date_bureau_validation" />
-                            </group>
                         </group>
                     </page>
                 </page>
@@ -276,6 +331,7 @@
                 </xpath>
 
             </field>
+            <field name="priority" eval="1" />
         </record>
 
         <record id="view_partner_prospect_adhesion_tree" model="ir.ui.view">
diff --git a/wizard/__init__.py b/wizard/__init__.py
index 637e9b26ef8125d9925d2a78e66641b643f2bf49..ea110ec99199eb39f6870aab1f67419ea9ac13e8 100644
--- a/wizard/__init__.py
+++ b/wizard/__init__.py
@@ -3,3 +3,5 @@
 
 from . import scop_adhesion_year_wizard
 from . import scop_compulsory_fields_suivi_wizard
+from . import scop_partner_staff_membership_wizard
+from . import scop_submit_membership_wizard
diff --git a/wizard/scop_compulsory_fields_suivi_wizard.py b/wizard/scop_compulsory_fields_suivi_wizard.py
index 39f86bbc2ccdcd56dc3c8be10b4b3936a489af63..7681e705babb91d495f9014f9c424671589257d6 100644
--- a/wizard/scop_compulsory_fields_suivi_wizard.py
+++ b/wizard/scop_compulsory_fields_suivi_wizard.py
@@ -24,6 +24,9 @@ class ScopCompulsoryFieldsSuiviWizard(models.TransientModel):
     closeout_month = fields.Selection(
         related="partner_id.closeout_month", readonly=False
     )
+    is_registration_in_progress = fields.Boolean(
+        related="partner_id.is_registration_in_progress", readonly=False
+    )
     naf_id = fields.Many2one(related="partner_id.naf_id", readonly=False)
     registration_date = fields.Date(related="partner_id.registration_date", readonly=False)
     siret = fields.Char(related="partner_id.siret", readonly=False)
@@ -37,7 +40,7 @@ class ScopCompulsoryFieldsSuiviWizard(models.TransientModel):
         """
         Passe la coop en statut "4_suivi"
         """
-        self.partner_id.write({"project_status": "4_suivi"})
+        self.partner_id.write({"project_status": "4_suivi", "list_logs": False})
         form_id = self.partner_id.cooperative_form_id
         if self.with_adhesion:
             self.partner_id.write({"membership_status": "adhesion"})
diff --git a/wizard/scop_compulsory_fields_suivi_wizard.xml b/wizard/scop_compulsory_fields_suivi_wizard.xml
index 16468da4c0eb85af9279da36f23f0688642b8708..5fa97b48b786e4611bf6fb32ad06a5cd72705805 100644
--- a/wizard/scop_compulsory_fields_suivi_wizard.xml
+++ b/wizard/scop_compulsory_fields_suivi_wizard.xml
@@ -9,9 +9,17 @@
             id="scop_adhesion_compulsory_fields_suivi_wizard_form"
         >
             <field name="name">scop.adhesion.compulsory.fields.suivi.wizard.form</field>
-                <field name="model">scop.compulsory.fields.suivi.wizard</field>
+            <field name="model">scop.compulsory.fields.suivi.wizard</field>
             <field name="arch" type="xml">
                 <form string="Confirmer les champs obligatoires">
+                    <div
+                        class="alert alert-warning"
+                        role="alert"
+                    >
+                        <p>
+                            Il es nécessaire de charger les <strong>statuts</strong><span attrs="{'invisible': [('is_registration_in_progress', '=', True)]}">, le <strong>KBIS</strong></span> et <strong>l'annonce de publication au JO</strong> dans l'onglet <i>Documents</i> de la coopérative pour valider sa création.
+                        </p>
+                    </div>
                     <div
                         class="alert alert-danger"
                         role="alert"
@@ -40,9 +48,20 @@
                         <field name="capital" required="1" />
                         <field name="first_closeout" required="1" />
                         <field name="closeout_month" required="1" />
-                        <field name="registration_date" />
-                        <field name="siret" />
-                        <field name="naf_id" options="{'no_create': 1, 'no_edit': 1}" />
+                        <field name="is_registration_in_progress" />
+                        <field
+                            name="registration_date"
+                            attrs="{'required': [('is_registration_in_progress', '!=', True)]}"
+                        />
+                        <field
+                            name="siret"
+                            attrs="{'required': [('is_registration_in_progress', '!=', True)]}"
+                        />
+                        <field
+                            name="naf_id"
+                            options="{'no_create': 1, 'no_edit': 1}"
+                            attrs="{'required': [('is_registration_in_progress', '!=', True)]}"
+                        />
                         <field name="with_adhesion" invisible="1" />
                     </group>
                     <footer>
diff --git a/wizard/scop_partner_staff_membership_wizard.py b/wizard/scop_partner_staff_membership_wizard.py
new file mode 100644
index 0000000000000000000000000000000000000000..318539183c25f26e99ed1d6d0b8f83bdc731992f
--- /dev/null
+++ b/wizard/scop_partner_staff_membership_wizard.py
@@ -0,0 +1,40 @@
+# © 2022 Le Filament (<http://www.le-filament.com>)
+# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
+
+from odoo import fields, models
+
+
+class ScopPartnerStaffMembershipWizard(models.TransientModel):
+    _name = "scop.partner.staff.membership.wizard"
+    _description = "Wizard: création modification de l'effectif d'adhésion"
+
+    # ------------------------------------------------------
+    # Field declaration
+    # ------------------------------------------------------
+    partner_id = fields.Many2one(
+        comodel_name="res.partner", required=True
+    )
+    staff_id = fields.Many2one(
+        comodel_name="scop.partner.staff", required=True
+    )
+    effective_date = fields.Date(related="staff_id.effective_date", readonly=False)
+    staff_count = fields.Integer(related="staff_id.staff_count", readonly=False)
+    staff_shareholder_count = fields.Integer(
+        related="staff_id.staff_shareholder_count",
+        readonly=False
+    )
+    staff_shareholder_total = fields.Integer(
+        related="staff_id.staff_shareholder_total",
+        readonly=False
+    )
+    staff_average = fields.Float(related="staff_id.staff_average", readonly=False)
+    comment = fields.Char(related="staff_id.comment", readonly=False)
+
+    # ------------------------------------------------------
+    # Actions / Buttons
+    # ------------------------------------------------------
+    def save_data(self):
+        """
+        Sauvegarder les données même avec erreurs
+        """
+        return {"type": "ir.actions.act_window_close"}
diff --git a/wizard/scop_partner_staff_membership_wizard.xml b/wizard/scop_partner_staff_membership_wizard.xml
new file mode 100644
index 0000000000000000000000000000000000000000..272995f249e17e638d7115683667608ca8702347
--- /dev/null
+++ b/wizard/scop_partner_staff_membership_wizard.xml
@@ -0,0 +1,61 @@
+<?xml version="1.0" ?>
+<!-- Copyright 2021 Le Filament
+     License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). -->
+<odoo>
+    <data>
+
+        <record
+            model="ir.ui.view"
+            id="scop_partner_staff_membership_wizard_form"
+        >
+            <field name="name">scop.partner.staff.membership.wizard.form</field>
+            <field name="model">scop.partner.staff.membership.wizard</field>
+            <field name="arch" type="xml">
+                <form string="Effectifs à l'adhésion">
+                    <h5>Effectifs à l'adhésion</h5>
+                    <hr/>
+                    <group>
+                        <group>
+                            <field
+                                name="partner_id"
+                                readonly="1"
+                            />
+                            <field
+                                name="staff_id"
+                                readonly="1"
+                                invisible="1"
+                            />
+                            <field name="effective_date" required="1" />
+                        </group>
+                        <group>
+                            <field name="staff_count" required="1" />
+                            <field name="staff_shareholder_count" required="1" />
+                            <field name="staff_shareholder_total" required="1" />
+                            <field name="staff_average" required="1" />
+                        </group>
+                    </group>
+                    <label for="comment" />
+                    <field name="comment" />
+                    <footer>
+                        <button
+                            name="save_data"
+                            type="object"
+                            string="Sauvegarder"
+                            class="oe_highlight"
+                        />
+                        <button special="cancel" string="Annuler" />
+                    </footer>
+                </form>
+            </field>
+        </record>
+
+        <record id="scop_partner_staff_membership_wizard_action" model="ir.actions.act_window">
+            <field name="name">Effectif à l'adhésion</field>
+            <field name="type">ir.actions.act_window</field>
+            <field name="res_model">scop.partner.staff.membership.wizard</field>
+            <field name="view_mode">form</field>
+            <field name="target">new</field>
+        </record>
+
+    </data>
+</odoo>
diff --git a/wizard/scop_submit_membership_wizard.py b/wizard/scop_submit_membership_wizard.py
new file mode 100644
index 0000000000000000000000000000000000000000..59a1b0d60167912aa578125fd0c57cef8c01549d
--- /dev/null
+++ b/wizard/scop_submit_membership_wizard.py
@@ -0,0 +1,35 @@
+# © 2021 Le Filament (<http://www.le-filament.com>)
+# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
+
+from odoo import _, fields, models
+from odoo.exceptions import UserError
+
+
+class ScopSubmitMembershipWizard(models.TransientModel):
+    _name = "scop.submit.membership.wizard"
+    _description = "Wizard: Confirmer les champs obligatoires l'adhésion"
+
+    partner_id = fields.Many2one(
+        comodel_name="res.partner", string="Coop", required=True
+    )
+
+    ur_id = fields.Many2one(related="partner_id.ur_id", readonly=False)
+
+    list_logs = fields.Text("Liste des erreurs")
+
+    # ------------------------------------------------------
+    # Actions / Buttons
+    # ------------------------------------------------------
+    def confirm(self):
+        """
+        Passe la coop en statut "soumis_cg"
+        """
+        self.partner_id.scop_send_to_cg()
+
+        return {"type": "ir.actions.act_window_close"}
+
+    def save_data(self):
+        """
+        Sauvegarder les données même avec erreurs
+        """
+        return {"type": "ir.actions.act_window_close"}
diff --git a/wizard/scop_submit_membership_wizard.xml b/wizard/scop_submit_membership_wizard.xml
new file mode 100644
index 0000000000000000000000000000000000000000..8738c8d516643f4c92d474c1a7240200b093f490
--- /dev/null
+++ b/wizard/scop_submit_membership_wizard.xml
@@ -0,0 +1,52 @@
+<?xml version="1.0" ?>
+<!-- Copyright 2021 Le Filament
+     License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). -->
+<odoo>
+    <data>
+
+        <record
+            model="ir.ui.view"
+            id="scop_submit_membership_wizard_form"
+        >
+            <field name="name">scop.submit.membership.wizard.form</field>
+            <field name="model">scop.submit.membership.wizard</field>
+            <field name="arch" type="xml">
+                <form string="Confirmer les champs obligatoires">
+                    <div
+                        class="alert alert-danger"
+                        role="alert"
+                        attrs="{'invisible':[('list_logs', '=', False)]}"
+                    >
+                        <field
+                            class="o_field_header"
+                            name="list_logs"
+                            readonly="1"
+                            widget="html"
+                        />
+                    </div>
+                    <group>
+                        <field name="partner_id" readonly="1" />
+                    </group>
+                    <footer>
+                        <button
+                            name="confirm"
+                            type="object"
+                            string="Valider avec adhésion"
+                            class="oe_highlight"
+                            attrs="{'invisible':[('list_logs', '!=', False)]}"
+                        />
+                        <button
+                            name="save_data"
+                            type="object"
+                            string="Sauvegarder"
+                            class="oe_highlight"
+                            attrs="{'invisible':[('list_logs', '=', False)]}"
+                        />
+                        <button special="cancel" string="Annuler" />
+                    </footer>
+                </form>
+            </field>
+        </record>
+
+    </data>
+</odoo>