diff --git a/__manifest__.py b/__manifest__.py
index b9773dd8f8c34cf21ae270606474e87603376447..9db205b9469d1a6d630148c6f6129f77daf5f709 100644
--- a/__manifest__.py
+++ b/__manifest__.py
@@ -5,8 +5,9 @@
     "website": "https://www.le-filament.com",
     "version": "14.0.1.0.1",
     "license": "AGPL-3",
-    "depends": ["contacts"],
+    "depends": ["contacts", "portal"],
     "data": [
+        "security/security.xml",
         "security/ir.model.access.csv",
         # datas
         # views
diff --git a/models/acc_contract.py b/models/acc_contract.py
index eb873348997142157fb66943f6295f287df96967..5c8be7c72ec2aa2748c5f1673b6be64e74985d67 100644
--- a/models/acc_contract.py
+++ b/models/acc_contract.py
@@ -6,6 +6,7 @@ from odoo import fields, models
 
 class AccContract(models.Model):
     _name = "acc.contract"
+    _inherit = ["portal.mixin"]
     _description = "Contrats"
 
     # ------------------------------------------------------
@@ -25,7 +26,7 @@ class AccContract(models.Model):
     )
     start_date = fields.Date("Début du contrat")
     end_date = fields.Date("Fin du contrat")
-    document = fields.Binary("Document attaché")
+    document = fields.Binary("Document attaché", required=True)
     name = fields.Char("Nom du document")
     # ------------------------------------------------------
     # SQL Constraints
@@ -54,3 +55,7 @@ class AccContract(models.Model):
     # ------------------------------------------------------
     # Business methods
     # ------------------------------------------------------
+    def _compute_access_url(self):
+        super(AccContract, self)._compute_access_url()
+        for contract in self:
+            contract.access_url = "/contract/%s" % (contract.id)
diff --git a/security/ir.model.access.csv b/security/ir.model.access.csv
index 4e0cc9e3ca65d75d193ecee1ca164e12f94aec5d..2accf227a2354e9ccf27f17261bc706806cb220e 100644
--- a/security/ir.model.access.csv
+++ b/security/ir.model.access.csv
@@ -5,6 +5,7 @@ id,name,model_id/id,group_id/id,perm_read,perm_write,perm_create,perm_unlink
 "access_acc_counter_group_user","acc_counter group_user","model_acc_counter","base.group_user",1,0,0,0
 "access_acc_contract_group_partner_manager","acc_contract group_partner_manager","model_acc_contract","base.group_partner_manager",1,1,1,1
 "access_acc_contract_group_user","acc_contract group_user","model_acc_contract","base.group_user",1,0,0,0
+"access_acc_contract_group_portal","acc_contract group_portal","model_acc_contract","base.group_portal",1,0,0,0
 "access_acc_enedis_cdc_group_partner_manager","acc_enedis_cdc group_partner_manager","model_acc_enedis_cdc","base.group_partner_manager",1,1,1,1
 "access_acc_enedis_cdc_group_user","acc_enedis_cdc group_user","model_acc_enedis_cdc","base.group_user",1,0,0,0
 "access_acc_enedis_import_logs_group_partner_manager","acc_enedis_import_logs group_partner_manager","model_acc_enedis_import_logs","base.group_partner_manager",1,1,1,1
diff --git a/security/security.xml b/security/security.xml
new file mode 100644
index 0000000000000000000000000000000000000000..b183e59ce55fc351fefef6df13111a76ede26c1f
--- /dev/null
+++ b/security/security.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<odoo>
+
+    <data>
+
+        <!-- Portal for contract -->
+        <record id="acc_contract_rule_portal_buyer" model="ir.rule">
+            <field name="name">Portail : Contrats - Acheteur</field>
+            <field name="model_id" ref="acc_operation.model_acc_contract" />
+            <field
+                name="domain_force"
+            >[('buyer_id','in',[user.partner_id.parent_id.id, user.partner_id.id])]</field>
+            <field name="groups" eval="[(4, ref('base.group_portal'))]" />
+        </record>
+        <record id="acc_contract_rule_portal_seller" model="ir.rule">
+            <field name="name">Portail : Contrats - Vendeur</field>
+            <field name="model_id" ref="acc_operation.model_acc_contract" />
+            <field
+                name="domain_force"
+            >[('seller_id','in',[user.partner_id.parent_id.id, user.partner_id.id])]</field>
+            <field name="groups" eval="[(4, ref('base.group_portal'))]" />
+        </record>
+
+    </data>
+
+</odoo>