diff --git a/__init__.py b/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..83e553ac462c571a7207e0970415e3cba1bbb3fa
--- /dev/null
+++ b/__init__.py
@@ -0,0 +1,3 @@
+# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
+
+from . import models
diff --git a/__manifest__.py b/__manifest__.py
new file mode 100755
index 0000000000000000000000000000000000000000..5d8145f6dfb45393b16ecb27f0c5265655c0733e
--- /dev/null
+++ b/__manifest__.py
@@ -0,0 +1,21 @@
+{
+    'name': "CG Scop - Alfodoo Partner",
+    'summary': "Connexion Alfodoo pour les Coopératives",
+    'author': "Le Filament",
+    'website': "https://www.le-filament.com",
+    'version': '12.0.1.0.1',
+    'license': "AGPL-3",
+    'depends': [
+        "cgscop_alfresco",
+        "cgscop_partner",
+        "cmis",
+        "contacts",
+        "cmis_alf",
+        "cmis_web",
+        "lefilament_alfodoo",
+    ],
+    'data': [
+        'views/res_partner.xml',
+    ],
+
+}
diff --git a/models/__init__.py b/models/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..ccebc724717c32986fb9ec6641ff8f885a20815a
--- /dev/null
+++ b/models/__init__.py
@@ -0,0 +1,3 @@
+# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
+
+from . import res_partner
diff --git a/models/res_partner.py b/models/res_partner.py
new file mode 100644
index 0000000000000000000000000000000000000000..f9215e2b7107b9ee1e89bf4d59b68a91667ad7f9
--- /dev/null
+++ b/models/res_partner.py
@@ -0,0 +1,85 @@
+# Copyright 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, models
+from odoo.addons.cmis_field import fields
+
+ALFRESCO_TRACKED_FIELDS = ['name', 'id', 'siret', 'member_number', 'ur_id']
+
+
+class AlfodooResPartner(models.Model):
+    _name = 'res.partner'
+    _inherit = ['res.partner', 'cgscop.alfresco']
+
+    partner_cmis_folder = fields.CmisFolder(
+        allow_create=True,
+        allow_delete=False,
+        create_parent_get='_get_parent_path',
+        create_properties_get='_get_folder_properties',
+    )
+
+    # ------------------------------------------------------
+    # Override Alfodoo
+    # ------------------------------------------------------
+    def _get_parent_path(self, records, backend):
+        """
+            Défini le répertoire parent :
+            le répertoire configuré par défaut dans le backend
+        """
+        path_parts = backend.initial_directory_write.split('/')
+        parent_cmis_object = backend.get_folder_by_path_parts(
+            path_parts, create_if_not_found=True)
+        path = dict.fromkeys(self.ids, parent_cmis_object)
+        return path
+
+    def _get_folder_properties(self, records, backend):
+        """
+            Ajoute les propriétés au dossier lors de la création dans Alfresco
+        """
+        return {
+            self.id: {
+                'cmis:secondaryObjectTypeIds': [
+                    'P:crm:organisme', 'P:up:UploadFolder', 'P:cm:titled'
+                ],
+                'up:allowedTypes': 'crm:document',
+                'crm:raisonSociale': self.name,
+                'crm:siret': self.siret if self.siret else '',
+                'crm:numAdherent': self.member_number if self.member_number else '',
+                'crm:id': str(self.id),
+                'crm:ur': str(self.ur_id.id),
+            }
+        }
+
+    # ------------------------------------------------------
+    # Override ORM
+    # ------------------------------------------------------
+    @api.multi
+    def write(self, vals):
+        """ Surcharge la fonction write() pour mettre à jour
+        la raison sociale, le nom, le siret, l'id Odoo ou le
+        num adhérent
+        """
+        tracked_fields = self.fields_get(ALFRESCO_TRACKED_FIELDS)
+        # Dict des valeurs initiales des champs présents dans TRACKED_FIELDS
+        initial_values = dict(
+            (record.id, dict(
+                (key, getattr(record, key)) for key in tracked_fields)) for record in self.filtered('is_cooperative'))
+        # Ecriture des nouvelles valeurs
+        result = super(AlfodooResPartner, self).write(vals)
+        # Dict des nouvelles valeurs
+        new_values = dict(
+            (record.id, dict(
+                (key, getattr(record, key)) for key in tracked_fields)) for record in self.filtered('is_cooperative'))
+        # Check des modifications sur les coopératives présentes dans RIGA
+        for record in self:
+            if record.is_cooperative and record.partner_cmis_folder:
+                if new_values[record.id] != initial_values[record.id]:
+                    self.alfresco_update_organism(record)
+        return result
+
+    @api.multi
+    def unlink(self):
+        for partner in self:
+            if partner.partner_cmis_folder:
+                partner.alfresco_remove(partner.partner_cmis_folder)
+            return super(AlfodooResPartner, self).unlink()
diff --git a/security/ir.model.access.csv b/security/ir.model.access.csv
new file mode 100644
index 0000000000000000000000000000000000000000..301b7dab167cbcb978ea78e7da9e7f032c40b90e
--- /dev/null
+++ b/security/ir.model.access.csv
@@ -0,0 +1 @@
+id,name,model_id/id,group_id/id,perm_read,perm_write,perm_create,perm_unlink
diff --git a/static/description/icon.png b/static/description/icon.png
new file mode 100644
index 0000000000000000000000000000000000000000..82ef47760a441cf229b5009f0a18ccf3842fbfa5
Binary files /dev/null and b/static/description/icon.png differ
diff --git a/views/res_partner.xml b/views/res_partner.xml
new file mode 100644
index 0000000000000000000000000000000000000000..3221296f4c08fe451b614885d9556e6b328a94bf
--- /dev/null
+++ b/views/res_partner.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0"?>
+<!-- Copyright 2019 Le Filament
+     License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). -->
+
+<odoo>
+    <data>
+
+		<!-- FORM -->
+        <record id="res_partner_alfresco_view_form_inherit" model="ir.ui.view">
+            <field name="name">res.partner.alfresco.view.form.inherit</field>
+            <field name="model">res.partner</field>
+            <field name="inherit_id" ref="base.view_partner_form"/>
+            <field name="arch" type="xml">
+                <!-- Ajoute l'onglet Documents dans la vue coopérative -->
+                <xpath expr="//div[@name='cooperative']/notebook" position="inside">
+                    <page string="Documents" groups="base.group_user">
+                        <field name="partner_cmis_folder"
+                               canCreateFolder="0"
+                               canImportNewVersion="0"
+                               canUpdate="0"
+                               canCopyCutPaste="0"
+                               canRename="0"
+                               metadata="[
+                               {'name': 'crm:type', 'type': 'selection', 'label': 'Type', 'query': 'SELECT v1.classement:value1, v2.classement:value2 FROM classement:datalist4 as d JOIN classement:value1Aspect as v1 on d.cmis:objectId = v1.cmis:objectId JOIN classement:value2Aspect as v2 on d.cmis:objectId = v2.cmis:objectId JOIN classement:value3Aspect as v3 on d.cmis:objectId = v3.cmis:objectId WHERE v3.classement:value3 = \&quot;STD\&quot;', 'selectionValue': 'v2.classement:value2', 'selectionText': 'v1.classement:value1', 'required': '1'},
+                               {'name': 'crm:annee', 'type': 'number', 'label': 'Année', 'required': '1', 'pattern': '[0-9]{4}'},
+                               {'name': 'cmis:objectTypeId', 'value': 'D:crm:document', 'label': 'ObjectType'},
+                               {'name': 'crm:contexte', 'value': 'STD', 'label': 'Contexte'}]"/>
+                    </page>
+                </xpath>
+            </field>
+        </record>
+
+    </data>
+</odoo>