diff --git a/__manifest__.py b/__manifest__.py
index 2a582fda15c4a19b144dc6a437e56bdb8a650116..483441a046d6712da6e1c08aae1b0464704b9807 100644
--- a/__manifest__.py
+++ b/__manifest__.py
@@ -11,6 +11,8 @@
         # datas
         # views
         "views/res_partner.xml",
+        "views/union_regionale.xml",
+        "views/menus.xml",
         # views menu
         # wizard
     ],
diff --git a/models/__init__.py b/models/__init__.py
index 91fed54d404eac384a0186fdf541d0e354a4171f..747285fc21d2cd732f42be536465ee2c6dad1191 100644
--- a/models/__init__.py
+++ b/models/__init__.py
@@ -1 +1,2 @@
 from . import res_partner
+from . import union_regionale
diff --git a/models/res_partner.py b/models/res_partner.py
index 901968d686f69a5b1f38c9cc4dacaf0365cf8b33..47c43b32cf58f64a1ff7c71db034312617ad854c 100644
--- a/models/res_partner.py
+++ b/models/res_partner.py
@@ -1,19 +1,26 @@
 # Copyright 2024- Le Filament (https://le-filament.com)
 # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html)
 
-from odoo import models, fields
+from odoo import models, fields, api
+from odoo.exceptions import ValidationError
 
 
 class ResPartner(models.Model):
     _inherit = "res.partner"
-    _description = "Description"
 
-    is_cooperative = fields.Boolean("Est une coopérative")
 
     # ------------------------------------------------------
     # Fields declaration
     # ------------------------------------------------------
 
+    is_cooperative = fields.Boolean("Est une coopérative")
+    ur_id = fields.Many2one(
+        comodel_name="union.regionale",
+        string="Union Régionale",
+        index=True,
+        ondelete="restrict",
+    )
+
     # ------------------------------------------------------
     # SQL Constraints
     # ------------------------------------------------------
@@ -30,6 +37,12 @@ class ResPartner(models.Model):
     # Onchange / Constraints
     # ------------------------------------------------------
 
+    @api.constrains('is_cooperative', 'is_company')
+    def _check_individual_not_cooperative(self):
+        for record in self:
+            if record.is_cooperative and not record.is_company:
+                raise ValidationError("An individual can not be a cooperative")
+
     # ------------------------------------------------------
     # CRUD methods (ORM overrides)
     # ------------------------------------------------------
diff --git a/models/union_regionale.py b/models/union_regionale.py
new file mode 100644
index 0000000000000000000000000000000000000000..77395da58f6379d574f48e02eb73ab8c4f4c0bb9
--- /dev/null
+++ b/models/union_regionale.py
@@ -0,0 +1,18 @@
+# © 2024 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 UnionRegional(models.Model):
+    _name = "union.regionale"
+    _description = "Union Régionale"
+    _order = "name"
+
+    long_name = fields.Char("Nom", required=True, index=True)
+    name = fields.Char("Abbréviation", required=True, index=True)
+    code_ur = fields.Char("Code UR")
+
+    _sql_constraints = [
+        ("name_uniq", "unique (name)", "Cette Union Régionale existe déjà !")
+    ]
diff --git a/security/ir.model.access.csv b/security/ir.model.access.csv
index 301b7dab167cbcb978ea78e7da9e7f032c40b90e..bde96825517321a3a9d225f58846ea09fa827c43 100644
--- a/security/ir.model.access.csv
+++ b/security/ir.model.access.csv
@@ -1 +1,3 @@
 id,name,model_id/id,group_id/id,perm_read,perm_write,perm_create,perm_unlink
+access_union_regionale,access_union_regionale,model_union_regionale,base.group_user,1,0,0,0
+admin_union_regionale,admin_union_regionale,model_union_regionale,base.group_erp_manager,1,1,1,1
diff --git a/views/menus.xml b/views/menus.xml
new file mode 100644
index 0000000000000000000000000000000000000000..0c3a22492690f8fdc994c699e2d0964cfab42efb
--- /dev/null
+++ b/views/menus.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<odoo>
+    <!-- Contacts -->
+    <!-- Coopératives -->
+    <menuitem
+        id="menu_coop"
+        name="Coopératives"
+        parent="contacts.menu_contacts"
+        action="coop_partner_action"
+    />
+
+
+    <!-- Configuration -->
+    <!-- Union Regionales -->
+    <menuitem
+        id="menu_union_regionale"
+        name="Unions Régionales"
+        parent="contacts.menu_contacts"
+        action="union_regionale_act_window"
+        sequence="20"
+    />
+</odoo>
diff --git a/views/res_partner.xml b/views/res_partner.xml
index 935a759cfe937648733e8761a39a913ea3b7e073..a4d43532cbe9643915d980015975c7b53120b32d 100644
--- a/views/res_partner.xml
+++ b/views/res_partner.xml
@@ -2,10 +2,13 @@
 <!-- Copyright 2024- Le Filament (https://le-filament.com)
      License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). -->
 <odoo>
+    <!-- View -->
+    <!-- Form -->
     <record id="view_partner_form" model="ir.ui.view">
         <field name="name">res.partner.form</field>
         <field name="model">res.partner</field>
         <field name="inherit_id" ref="base.view_partner_form"/>
+        <field name="mode">primary</field>
         <field name="arch" type="xml">
             <xpath expr="//h1" position="before">
                 <span invisible="not is_company">
@@ -15,4 +18,78 @@
             </xpath>
         </field>
     </record>
+
+    <!-- List -->
+    <record id="view_partner_tree" model="ir.ui.view">
+        <field name="name">res.partner.list</field>
+        <field name="model">res.partner</field>
+        <field name="inherit_id" ref="base.view_partner_tree"/>
+        <field name="mode">primary</field>
+        <field name="arch" type="xml">
+            <xpath expr="//field[@name='complete_name']" position="after">
+                <field name="ur_id" optional="hide"/>
+            </xpath>
+        </field>
+    </record>
+
+    <!-- Search View -->
+    <record id="search_partner" model="ir.ui.view">
+        <field name="name">res.partner.search</field>
+        <field name="model">res.partner</field>
+        <field name="inherit_id" ref="base.view_res_partner_filter"/>
+        <field name="mode">primary</field>
+        <field name="arch" type="xml">
+            <!-- Search -->
+            <xpath expr="//field[@name='name']" position="after">
+                <field name="ur_id"/>
+            </xpath>
+            <!-- Filters -->
+            <!--            <xpath expr="//filter[@name='inactive']" position="before">-->
+            <!--                <filter-->
+            <!--                    string="Adhérents"-->
+            <!--                    name="member_coop"-->
+            <!--                    domain="[('membership_status', 'not in', ['not_member', 'out'])]"-->
+            <!--                />-->
+            <!--                <filter-->
+            <!--                    string="Non Adhérents"-->
+            <!--                    name="not_member_coop"-->
+            <!--                    domain="[('membership_status', 'in', ['not_member', 'out'])]"-->
+            <!--                />-->
+            <!--            </xpath>-->
+            <!-- Group -->
+            <xpath expr="//filter[@name='salesperson']" position="before">
+                <!--                <filter-->
+                <!--                    string="A jour des cotisations"-->
+                <!--                    name="group_ur_id"-->
+                <!--                    context="{'group_by': 'ur_id'}"-->
+                <!--                />-->
+            </xpath>
+        </field>
+    </record>
+
+
+    <!-- Action -->
+    <record id="contacts.action_contacts" model="ir.actions.act_window">
+        <field name="domain">[('is_cooperative', '!=', True)]</field>
+    </record>
+
+    <record id="coop_partner_action" model="ir.actions.act_window">
+        <field name="name">Coopératives</field>
+        <field name="type">ir.actions.act_window</field>
+        <field name="res_model">res.partner</field>
+        <field name="view_mode">list,form</field>
+        <field name="search_view_id" ref="search_partner"/>
+        <field name="domain">[('is_cooperative', '=', True)]</field>
+        <field name="path">coop</field>
+        <field name="context">
+            {
+            'default_is_cooperative': True,
+            'default_is_company': True,
+            }
+        </field>
+        <field
+            name="view_ids"
+            eval="[(5, 0, 0), (0, 0, {'view_mode': 'list', 'view_id': ref('view_partner_tree')}),]"
+        />
+    </record>
 </odoo>
diff --git a/views/union_regionale.xml b/views/union_regionale.xml
new file mode 100644
index 0000000000000000000000000000000000000000..35dcafbb6b28c351c739c8dca2d1a5dd36aeac58
--- /dev/null
+++ b/views/union_regionale.xml
@@ -0,0 +1,42 @@
+<?xml version="1.0" ?>
+<!-- Copyright 2024 Le Filament
+     License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). -->
+<odoo>
+    <!-- Tree -->
+    <record model="ir.ui.view" id="union_regionale_tree_view">
+        <field name="name">union.regionale.list</field>
+        <field name="model">union.regionale</field>
+        <field name="arch" type="xml">
+            <list string="Unions Régionales">
+                <field name="long_name"/>
+                <field name="name"/>
+                <field name="code_ur"/>
+            </list>
+        </field>
+    </record>
+
+    <!-- Form-->
+    <record model="ir.ui.view" id="union_regionale_form_view">
+        <field name="name">union.regionale.form</field>
+        <field name="model">union.regionale</field>
+        <field name="arch" type="xml">
+            <form string="Union Régionale">
+                <sheet>
+                    <group>
+                        <field name="long_name"/>
+                        <field name="name"/>
+                        <field name="code_ur"/>
+                    </group>
+                </sheet>
+            </form>
+        </field>
+    </record>
+
+    <!-- Action -->
+    <record model="ir.actions.act_window" id="union_regionale_act_window">
+        <field name="name">Unions Régionales</field>
+        <field name="res_model">union.regionale</field>
+        <field name="path">ur</field>
+        <field name="view_mode">list,form</field>
+    </record>
+</odoo>