diff --git a/README.rst b/README.rst
index b340c050cae10458074aceced1a994dd86651dce..0d5472934cc7370d12d7cd1f90cc20ba7fb72fd9 100644
--- a/README.rst
+++ b/README.rst
@@ -10,15 +10,17 @@ CG SCOP - Connecteur Alfresco
 Description
 ===========
 
-Ce module permet de lire, créer, supprimer les documents depuis Alfresco.
+Ce module hérite des modules **cmis** et **cmis_web** pour permettre d'ajouter des champs et les fonctions mises à disposition par l'API Alfresco CG Scop.
 
-Il utilise l'API Alfresco développée spécifiquement pour le projet de la CG Scop qui impémente les fonctions suivantes : 
+On crée un modèle abstrait rattachable au différents modèles et implémente les fonctions suivantes :
 
-* Création d'un dossier : lors de la création d'un organisme
-* Mise à jour d'un dossier : lors des la mise à jour d'un organisme sur les champs nom, SIRET et n° adhérent
+* Création d'un dossier
+* Mise à jour d'un dossier
 * Liste des fichiers pour un organisme
 * Ajout d'un fichier
-* Suppression d'un dossier : lors de la suppression d'un organisme
+* Suppression d'un dossier
+
+Il implémente également la fonction de connexion à Alfresco pour le module CMIS en utilisant le webservice mis à disposition.
 
 
 Usage
@@ -37,7 +39,7 @@ Credits
 =======
 
 Funders
-------------
+-------
 
 The development of this module has been financially supported by:
 
diff --git a/__init__.py b/__init__.py
index 907658493b2b2108e37a890254bba9d0b9da9951..b9f967ea92a89276401151d71f466ffe3e0a4f33 100644
--- a/__init__.py
+++ b/__init__.py
@@ -3,4 +3,3 @@
 
 from . import controllers
 from . import models
-from . import wizard
diff --git a/__manifest__.py b/__manifest__.py
index f090217990ebd072fe9b25bc59e179d23ad1ba77..254cb43d457a601586fde207b8a57d64037c76ea 100644
--- a/__manifest__.py
+++ b/__manifest__.py
@@ -9,17 +9,11 @@
     "depends": [
         'base',
         'web',
-        'cgscop_partner',
-        'web_ir_actions_close_wizard_refresh_view',
+        'cmis',
     ],
     "data": [
-        "security/ir.model.access.csv",
         "views/assets.xml",
-        "views/alfresco_connection.xml",
-        "views/alfresco_partner_files.xml",
-        "views/res_partner.xml",
-        "wizard/add_file_wizard.xml",
-        "datas/cron_init_alfresco.xml",
+        "views/cmis_backend.xml",
     ],
     'qweb': [
         'static/src/xml/*.xml',
diff --git a/controllers/__init__.py b/controllers/__init__.py
index 4a51cde9123b17a6c4dd5311c7f5a8e0f51ad296..a676f817085c409e6659d0aef11f06ae9c2ff2f5 100644
--- a/controllers/__init__.py
+++ b/controllers/__init__.py
@@ -1,4 +1,4 @@
-# © 2019 Le Filament (<http://www.le-filament.com>)
+# © 2020 Le Filament (<http://www.le-filament.com>)
 # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
 
-from . import main
\ No newline at end of file
+from . import main
diff --git a/controllers/main.py b/controllers/main.py
index ea71fc1dc95b74c272252d177959fd05e46978c6..74c9bd908ced0851d4cf67596116c68ee68f29a9 100644
--- a/controllers/main.py
+++ b/controllers/main.py
@@ -1,29 +1,12 @@
-# © 2019 Le Filament (<http://www.le-filament.com>)
+# © 2020 Le Filament (<http://www.le-filament.com>)
 # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
 
-import base64
-
 from odoo import http
-from odoo.http import request
-from odoo.addons.web.controllers.main import serialize_exception, content_disposition
 
 
-class AlfrescoBinary(http.Controller):
-    @http.route('/web/binary/download_alfresco', type='http', auth="user")
-    @serialize_exception
-    def download_alfresco_document(self, id_alfresco, **kwargs):
-        """ Téléchargement des fichiers depuis alfresco.
+class AlfrescoController(http.Controller):
 
-        :param str id_alfresco: id de la ressource
-        @return: :class:`werkzeug.wrappers.Response`
-        """
-        doc = request.env['alfresco.partner.files'].search(
-            [['file_id', '=', id_alfresco]]).alfresco_get_doc(id_alfresco)
-        filecontent = base64.b64decode(
-            doc['base64NodeContent'])
-        if not filecontent:
-            return request.not_found()
-        else:
-            return request.make_response(filecontent, [
-                ('Content-Type', 'application/octet-stream'),
-                ('Content-Disposition', content_disposition(doc['name']))])
+    @http.route(['/web/alfresco/session'], type="json", auth="user", method=['POST'])
+    def get_alf_ticket(self, username):
+        data = http.request.env['cgscop.alfresco'].alfresco_get_ticket(username)
+        return data
diff --git a/datas/cron_init_alfresco.xml b/datas/cron_init_alfresco.xml
deleted file mode 100644
index a77092f190461a60960621bcae4b7966c3f89aa5..0000000000000000000000000000000000000000
--- a/datas/cron_init_alfresco.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<odoo>
-    <data noupdate="1">
-        <record id="ir_cron_init_alfresco" model="ir.cron">
-            <field name="name">CG Scop - Alfresco - Initialisation dossiers</field>
-            <field name="active" eval="False" />
-            <field name="user_id" ref="base.user_root" />
-            <field name="model_id" ref="model_res_partner" />
-            <field name="code">model._init_alfresco_folder()</field>
-            <field name="state">code</field>
-            <field name="priority" eval="5" />
-        </record>
-    </data>
-</odoo>
\ No newline at end of file
diff --git a/models/__init__.py b/models/__init__.py
index 8320fce99f390d4608025ab4742779998ff38ff3..9962060e4fc58898803c5ce02190d423ca10c475 100644
--- a/models/__init__.py
+++ b/models/__init__.py
@@ -2,6 +2,4 @@
 # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
 
 from . import api_alfresco
-from . import alfresco_connection
-from . import alfresco_partner_files
-from . import res_partner
+from . import cmis_backend
diff --git a/models/alfresco_connection.py b/models/alfresco_connection.py
deleted file mode 100644
index 818f03a47c767fb18e93a7a7132efeb6485d8995..0000000000000000000000000000000000000000
--- a/models/alfresco_connection.py
+++ /dev/null
@@ -1,24 +0,0 @@
-# © 2019 Le Filament (<http://www.le-filament.com>)
-# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
-
-from odoo import models, fields
-
-
-class CgscopAlfrescoConnection(models.Model):
-    _name = 'alfresco.connection'
-    _description = 'Infos API de connexion pour Alfresco'
-
-    name = fields.Char(string='Nom')
-    login = fields.Char('Login')
-    password = fields.Char('Password')
-    url = fields.Char('URL')
-    ssl = fields.Boolean('Connexion SSL', default=False)
-    active = fields.Boolean('Actif', default=False)
-
-    def toogle_active_config(self):
-        """ Active la connexion sélectionnée et désactive
-            toutes les autres connexions
-        """
-        for item in self.env['alfresco.connection'].search([]):
-            item.active = False
-        self.active = True
diff --git a/models/alfresco_partner_files.py b/models/alfresco_partner_files.py
deleted file mode 100644
index 5aa1df98b76222e95e97d2cf8b922540b62ea814..0000000000000000000000000000000000000000
--- a/models/alfresco_partner_files.py
+++ /dev/null
@@ -1,33 +0,0 @@
-# © 2019 Le Filament (<http://www.le-filament.com>)
-# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
-
-from odoo import models, fields, api
-
-
-class AlfrescoPartnerFiles(models.TransientModel):
-    _name = 'alfresco.partner.files'
-    _inherit = 'cgscop.alfresco'
-    _description = "Requete fichiers par organisme"
-
-    name = fields.Char('Nom du Fichier')
-    type = fields.Char('Type')
-    periode = fields.Char('Période')
-    validite = fields.Char('Validité')
-    file_id = fields.Char('ID Fichier')
-    last_modification = fields.Datetime('Dernière Modification')
-    user_id = fields.Many2one(
-        comodel_name='res.users',
-        string='User')
-    partner_id = fields.Many2one(
-        comodel_name='res.partner',
-        string='Organisme')
-
-    @api.multi
-    def download_file(self):
-        for doc in self:
-            return {
-                'type': 'ir.actions.act_url',
-                'url': '/web/binary/download_alfresco?id_alfresco=%s' % (
-                    doc.file_id, ),
-                'target': 'self',
-                }
diff --git a/models/api_alfresco.py b/models/api_alfresco.py
index a149df3939d42ac414084d7ed5703a7496ec0b95..1d077d8a25110601719c5d9fe9ec6dee96a23239 100644
--- a/models/api_alfresco.py
+++ b/models/api_alfresco.py
@@ -3,6 +3,7 @@
 
 import requests
 import logging
+import xml.etree.ElementTree as et
 
 from odoo import models, exceptions, tools
 
@@ -27,7 +28,7 @@ class CgscopAlfresco(models.AbstractModel):
         @return response au format JSON
         """
         _logger.info("Calling %s" % url)
-        param = self.env['alfresco.connection'].sudo().search([
+        param = self.env['cmis.backend'].sudo().search([
             ['active', '=', True]])
         if not param:
             raise exceptions.Warning(
@@ -36,7 +37,7 @@ class CgscopAlfresco(models.AbstractModel):
         alfresco_url = param.url
         alfresco_ssl = param.ssl
         basicAuthCredentials = (
-            param.login,
+            param.username,
             param.password)
         try:
             if call_type == 'get':
@@ -62,25 +63,26 @@ class CgscopAlfresco(models.AbstractModel):
                 err.__str__(),
             )
             response = False
-        # if not response:
-        #     raise exceptions.Warning(
-        #         "Oops... il y a un problème de connexion avec l'espace documentaire")
+
         # Gestion erreur API
         if response.status_code not in [200, 201]:
+            try:
+                message = response.json().get('message')
+            except:
+                message = response.text
             raise exceptions.Warning(
                 "L'appel url '%s' a échoué\n"
                 "- Code erreur : %d\n"
                 "- Message : %s" % (
                     response.url,
                     response.status_code,
-                    response.json().get('message')))
+                    message))
         # Si dossier déjà créé
         elif (response.text.find("NUMADHERENT d") > 0 or
               response.text.find("SIRET d") > 0 or
               response.text.find("RAISONSOCIALE d") > 0):
             return response.json().get('dossiersExistants')[0]
-
-        return response.json()
+        return response
 
     # Get Methods
     def alfresco_list_docs(self, node_id):
@@ -88,7 +90,7 @@ class CgscopAlfresco(models.AbstractModel):
             :param name: raison sociale de la structure
         """
         url = '/alfresco/s/erp/listedocuments?nodeId=' + node_id
-        return self.alfresco_get_by_url(url=url, call_type='get')
+        return self.alfresco_get_by_url(url=url, call_type='get').json()
 
     def alfresco_list_type(self):
         """ Liste le valeurs du formulaire de dépôt d'un nouveau document
@@ -96,14 +98,11 @@ class CgscopAlfresco(models.AbstractModel):
         @return: dict des valeurs possibles pour période, validité, type
         """
         url = '/alfresco/s/api/properties?nsp=crm&n=document'
-        list_type = self.alfresco_get_by_url(url=url, call_type='get')
+        list_type = self.alfresco_get_by_url(url=url, call_type='get').json()
         return {
             'periode': self.get_allowed_values(
                 list_type=list_type,
                 value='crm:periode'),
-            'validite': self.get_allowed_values(
-                list_type=list_type,
-                value='crm:validite'),
             'type': self.get_allowed_values(
                 list_type=list_type,
                 value='crm:type'),
@@ -114,7 +113,17 @@ class CgscopAlfresco(models.AbstractModel):
             :param nodeRef: id Alfresco
         """
         url = '/alfresco/s/document/' + nodeRef
-        return self.alfresco_get_by_url(url=url, call_type='get')
+        return self.alfresco_get_by_url(url=url, call_type='get').json()
+
+    def alfresco_get_ticket(self, username):
+        """ Liste les documents pour un organisme (raison sociale)
+            :param username: username de l'utilisateur
+        """
+        url = '/alfresco/s/authentifier-entantque?compte=' + username
+        result = self.alfresco_get_by_url(url=url, call_type='get')
+        tree = et.ElementTree(et.fromstring(result.content))
+        root = tree.getroot()
+        return root[0].text
 
     # Post Methods
     def alfresco_create_organism(self, partner):
@@ -129,10 +138,11 @@ class CgscopAlfresco(models.AbstractModel):
             'raisonSociale': partner.name,
             "id": partner.id,
             "siret": partner.siret,
-            "numAdherent": partner.member_number
+            "numAdherent": partner.member_number,
+            "ur": partner.ur_id
         }
         return self.get_nodeRef(
-            self.alfresco_get_by_url(url=url, call_type='post', json=json))
+            self.alfresco_get_by_url(url=url, call_type='post', json=json).json())
 
     def alfresco_update_organism(self, partner):
         """ Mise à jour d'un dossier Organisme
@@ -146,10 +156,11 @@ class CgscopAlfresco(models.AbstractModel):
             'raisonSociale': partner.name,
             "id": partner.id,
             "siret": partner.siret,
-            "numAdherent": partner.member_number
+            "numAdherent": partner.member_number,
+            "ur": partner.ur_id
         }
         return self.get_nodeRef(
-            self.alfresco_get_by_url(url=url, call_type='post', json=json))
+            self.alfresco_get_by_url(url=url, call_type='post', json=json).json())
 
     def alfresco_upload(self, partner, type, periode, validite, filename, mimetype, doc):
         """ Upload d'un document sur Alfresco
@@ -165,11 +176,10 @@ class CgscopAlfresco(models.AbstractModel):
             'type': type,
             'nomOrigine': filename,
             'mimeType': mimetype,
-            'validite': validite,
             'contentBase64': doc,
         }
         return self.get_nodeRef(
-            self.alfresco_get_by_url(url=url, call_type='post', json=json))
+            self.alfresco_get_by_url(url=url, call_type='post', json=json).json())
 
     # Delete Methods
     def alfresco_remove(self, nodeRef):
@@ -177,7 +187,7 @@ class CgscopAlfresco(models.AbstractModel):
             :param id_doc: id du document Alfresco
         """
         url = '/alfresco/s/document/' + nodeRef
-        return self.alfresco_get_by_url(url=url, call_type='delete')
+        return self.alfresco_get_by_url(url=url, call_type='delete').json()
 
     # Others
     def get_allowed_values(self, list_type, value):
diff --git a/models/cmis_backend.py b/models/cmis_backend.py
new file mode 100644
index 0000000000000000000000000000000000000000..1e67b5d246711be0cafa9ea1d09266819c088ac3
--- /dev/null
+++ b/models/cmis_backend.py
@@ -0,0 +1,12 @@
+# © 2019 Le Filament (<http://www.le-filament.com>)
+# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
+
+from odoo import models, fields
+
+
+class CgscopAlfrescoConnection(models.Model):
+    _inherit = 'cmis.backend'
+
+    url = fields.Char('URL')
+    ssl = fields.Boolean('Connexion SSL', default=False)
+    active = fields.Boolean('Actif', default=False)
diff --git a/models/res_partner.py b/models/res_partner.py
deleted file mode 100644
index 5a0a6a0a25010f0ee0b06fb37582e3d41e51c72d..0000000000000000000000000000000000000000
--- a/models/res_partner.py
+++ /dev/null
@@ -1,114 +0,0 @@
-# © 2019 Le Filament (<http://www.le-filament.com>)
-# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
-
-import dateutil.parser
-import pytz
-
-from odoo import models, fields, api
-
-ALFRESCO_TRACKED_FIELDS = ['name', 'id', 'siret', 'member_number']
-
-
-class AlfrescoPartner(models.Model):
-    _name = 'res.partner'
-    _inherit = ['res.partner', 'cgscop.alfresco']
-
-    id_alfresco = fields.Char('ID Dossier Alfresco')
-
-    # ------------------------------------------------------
-    # Fonctions héritées
-    # ------------------------------------------------------
-
-    @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(AlfrescoPartner, 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.id_alfresco:
-                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.id_alfresco:
-                partner.alfresco_remove(partner.id_alfresco)
-            return super(AlfrescoPartner, self).unlink()
-
-    # ------------------------------------------------------
-    # Fonction boutons
-    # ------------------------------------------------------
-    def get_partner_files(self):
-        """ Liste l'ensemble des fichiers pour un organisme
-
-        La fonction fait appel à l'API Alfresco et enregistre le résultat
-        dans un modèle Transient.
-        L'ID user est ajouté à la table pour définir les requêtes propres à
-        chaque user
-
-        @return: ir.act.window
-        """
-        if self.id_alfresco:
-            files = self.alfresco_list_docs(self.id_alfresco).get('docs', '')
-        else:
-            self.id_alfresco = self.alfresco_create_organism(self)
-            print(self.name)
-            print(self.id_alfresco)
-            files = self.alfresco_list_docs(self.id_alfresco).get('docs', '')
-        uid = self.env.user.id
-        alfresco_obj = self.env["alfresco.partner.files"]
-        alfresco_obj.search([['user_id', '=', uid]]).unlink()
-        for doc in files:
-            alfresco_obj.create({
-                'name': doc['name'],
-                'type': doc['type'],
-                'file_id': doc['nodeRef'].replace('workspace://SpacesStore/', ''),
-                'user_id': uid,
-                'periode': doc['periode'],
-                'validite': doc['validite'],
-                'last_modification': dateutil.parser.parse(
-                    doc['modifiedOn']).astimezone(pytz.utc),
-                'partner_id': self.id,
-            })
-        return {
-            "type": "ir.actions.act_window",
-            "name": "Fichiers liés",
-            "res_model": "alfresco.partner.files",
-            "views": [[False, "tree"]],
-            "search_view_id": self.env.ref(
-                "cgscop_alfresco.alfresco_partner_files_search").id,
-            'context': {'search_default_group_periode': True}
-        }
-
-    # ------------------------------------------------------
-    # CRON
-    # ------------------------------------------------------
-    def _init_alfresco_folder(self):
-        """ Fonction pour le cron permettant de créer un dossier
-        dans Alfresco pour l'ensemble des organismes qui n'ont pas
-        de nodeRef
-        """
-        partners = self.env['res.partner'].search([
-            ['is_cooperative', '=', True],
-            ['id_alfresco', '=', False],
-            ['membership_status', '=', "member"]])
-        for partner in partners:
-            id_alfresco = partner.alfresco_create_organism(partner)
-            partner.write({
-                'id_alfresco': id_alfresco,
-            })
diff --git a/security/ir.model.access.csv b/security/ir.model.access.csv
index c3e7f01ed6761412a38008a3462d0b17b02c66a8..58262d4440d02ecccad693faa23505f01ced8a9f 100644
--- a/security/ir.model.access.csv
+++ b/security/ir.model.access.csv
@@ -1,2 +1 @@
-id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
-access_alfresco_connection,access_alfresco_connection,model_alfresco_connection,cgscop_partner.group_cg_administrator,1,1,1,1
\ No newline at end of file
+id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
\ No newline at end of file
diff --git a/static/src/js/alfresco_add_file.js b/static/src/js/alfresco_add_file.js
deleted file mode 100644
index 65d36723542daf5365db2ad74b7cc34dcd019993..0000000000000000000000000000000000000000
--- a/static/src/js/alfresco_add_file.js
+++ /dev/null
@@ -1,31 +0,0 @@
-odoo.define('connector_alfresco.alfresco_add_file', function (require){
-"use strict";
-
-var core = require('web.core');
-var ListController = require('web.ListController');
-var QWeb = core.qweb;
-var session = require('web.session');
-
-ListController.include({       
-
-    renderButtons: function() {
-        this._super.apply(this, arguments);
-        var self = this;
-        this.$buttons.on('click', '.add_file', function() {
-            var active_id = self.getParent().getParent()._current_state.active_id;
-            self.do_action({
-                type: "ir.actions.act_window",
-                name: "Ajouter un fichier",
-                res_model: "add.file.wizard",
-                views: [[false,'form']],
-                target: 'new',
-                view_type : 'form',
-                view_mode : 'form',
-                context: { 'active_id': Number(active_id) }
-            });
-        });
-    },
-
-});
-
-});
\ No newline at end of file
diff --git a/static/src/js/form_widgets.js b/static/src/js/form_widgets.js
new file mode 100644
index 0000000000000000000000000000000000000000..204a18e690ecde2cef33333c7df83cbdf2186124
--- /dev/null
+++ b/static/src/js/form_widgets.js
@@ -0,0 +1,100 @@
+/*---------------------------------------------------------------
+Copyright 2020 Le Filament
+License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
+------------------------------------------------------------------*/
+
+odoo.define('cgscop_alfresco.form_widgets', function(require) {
+    "use strict";
+
+    var core = require('web.core');
+    var form_widgets = require('cmis_web.form_widgets');
+    var session = require('web.session');
+
+    form_widgets.CmisObjectWrapper.include({
+        /*
+        * Surcharge les fonction parse_object (téléchargement)
+        * et get_content_url (preview) pour passer le ticket
+        * l'url appelée
+        */
+        parse_object: function (cmis_object) {
+            this._super.apply(this, arguments);
+            if (this.cmis_session.alf_ticket) {
+                this.url = this.cmis_session.getContentStreamURL(this.objectId, 'attachment', {'alf_ticket': this.cmis_session.alf_ticket});
+            }
+        },
+        get_content_url: function () {
+            var options = {}
+            if (this.cmis_session.alf_ticket) {
+                options = {'alf_ticket': this.cmis_session.alf_ticket};
+            }
+            return this.cmis_session.getContentStreamURL(this.objectId, 'inline', options);
+        },
+    }),
+
+    form_widgets.FieldCmisFolder.include({
+        /**
+        * Surcharge la fonction d'initialisation de la session CMIS pour
+        * passer le token de l'utilisateur
+        */
+        init_cmis_session: function () {
+            var self = this;
+            $.when(this.cmis_config_loaded).done(function () {
+                self.cmis_session = cmis.createSession(self.cmis_location);
+                self.cmis_session.setGlobalHandlers(self.on_cmis_error, self.on_cmis_error);
+
+                // CGSCOP : appel vers la fonction custom
+                self._rpc({route:'/web/alfresco/session', params:{
+                    'username': session.username
+                }}).done(function (result) {
+                    self.cmis_session['alf_ticket'] = result;
+                    self.cmis_session.setCredentials('ROLE_TICKET', result);
+                });
+                self.cmis_session_initialized.resolve();
+                self.cmis_session.setCharacterSet(document.characterSet);
+            });
+        },
+
+        load_cmis_repositories: function () {
+            /**
+            * Surcharge la fonction de chargement des repositories après initialisation
+            * du dossier initial pour recharger correctement la page
+            */
+            var dfd = $.Deferred();
+            var self = this;
+            if (this.cmis_session.repositories) {
+                return dfd.resolve();
+            } else {
+                if (self.cmis_session.alf_ticket) {
+                    self.cmis_session
+                    .loadRepositories()
+                    .ok(function (data) {
+                        dfd.resolve();
+                    })
+                    .notOk(function (error) {
+                        self.on_cmis_error(error);
+                        dfd.reject(error);
+                    });
+                } else {
+                    // CGSCOP : appel vers la fonction custom
+                    self._rpc({route:'/web/alfresco/session', params:{
+                        'username': session.username
+                    }}).done(function (result) {
+                        self.cmis_session['alf_ticket'] = result;
+                        self.cmis_session.setCredentials('ROLE_TICKET', result);
+                        self.cmis_session
+                        .loadRepositories()
+                        .ok(function (data) {
+                            dfd.resolve();
+                        })
+                        .notOk(function (error) {
+                            self.on_cmis_error(error);
+                            dfd.reject(error);
+                        });
+                    });
+                }
+            }
+            return dfd.promise();
+        },
+
+    });
+});
\ No newline at end of file
diff --git a/static/src/xml/widget_listview.xml b/static/src/xml/widget_listview.xml
deleted file mode 100644
index 5dfe2606a07dc6c0d523fc92d9f8d186f106b020..0000000000000000000000000000000000000000
--- a/static/src/xml/widget_listview.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright 2017 Le Filament (<https://www.le-filament.com>)
-     License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). -->
-	
-<templates xml:space="preserve">
-	<t t-extend="ListView.buttons">
-        <t t-jquery="div.o_list_buttons" t-operation="append">
-            <t t-if="widget.modelName == 'alfresco.partner.files'" >
-				<button class="btn btn-secondary add_file" type="button" >Ajouter un fichier</button>
-			</t>
-		</t>
-	</t>
-</templates>
\ No newline at end of file
diff --git a/views/alfresco_connection.xml b/views/alfresco_connection.xml
deleted file mode 100644
index 5fa567413e82c344da9e9daf707b138c997b39dd..0000000000000000000000000000000000000000
--- a/views/alfresco_connection.xml
+++ /dev/null
@@ -1,80 +0,0 @@
-<?xml version="1.0"?>
-<!-- Copyright 2019 Le Filament
-     License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). -->
-
-<odoo>
-    <data>
-
-        <record id="view_alfresco_connection_tree" model="ir.ui.view">
-            <field name="name">alfresco.connection.tree</field>
-            <field name="model">alfresco.connection</field>
-            <field name="arch" type="xml">
-                <tree string="Synchronisation Odoo">
-                    <field name="name"/>
-                    <field name="login"/>
-                    <field name="url"/>
-                    <field name="active"/>
-                </tree>
-            </field>
-        </record>
-
-        <record id="view_alfresco_connection_form" model="ir.ui.view">
-            <field name="name">alfresco.connection.form</field>
-            <field name="model">alfresco.connection</field>
-            <field name="arch" type="xml">
-                <form>
-                    <header>
-                        <button name="toogle_active_config" type="object" string="Activer" />
-                    </header>
-                    <sheet>
-                        <group>
-                            <group>
-                                <field name="name" />
-                                <field name="url"/>
-                                <field name="ssl"/>
-                            </group>
-                            <group>
-                                <field name="active" readonly="1" />
-                                <field name="login"/>
-                                <field name="password" password="True" />
-                            </group>
-                        </group>
-                    </sheet>
-                </form>
-            </field>
-        </record>
-
-        <record id="view_alfresco_connection_search" model="ir.ui.view">
-            <field name="name">alfresco.connection.search</field>
-            <field name="model">alfresco.connection</field>
-            <field name="arch" type="xml">
-                <search string="Synchronisation Odoo">
-                    <!-- Champs de recherche -->
-                    <field name="name"/>
-                    <!-- Filtres -->
-                    <filter name="active_filter" string="Actifs" domain="[('active','=',True)]"/>
-                    <filter name="inctive_filter" string="Inactifs" domain="[('active','=',False)]" />
-                    <filter name="all_filter" string="Tous" domain="['|', ('active','=',True), ('active','=',False)]" />
-                </search>
-            </field>
-        </record>
-
-        <record id="action_view_alfresco_connection" model="ir.actions.act_window">
-            <field name="name">Configuration Connexion Alfresco</field>
-            <field name="res_model">alfresco.connection</field>
-            <field name="view_mode">tree,form</field>
-            <field name="search_view_id" ref="view_alfresco_connection_search"/>
-        </record>
-        
-        <menuitem id="menu_cgscop_alfresco"
-            parent="cgscop_partner.menu_cgscop_api_config"
-            sequence="10"
-            name="Alfresco"/>
-
-        <menuitem id="menu_cgscop_alfresco_connection"
-            parent="menu_cgscop_alfresco"
-            action="action_view_alfresco_connection"
-            name="Configuration connexion"
-            sequence="90"/>
-    </data>
-</odoo>
diff --git a/views/alfresco_partner_files.xml b/views/alfresco_partner_files.xml
deleted file mode 100644
index 0d514067bd4b9a04eb6f7c2c38de92aa20c86b08..0000000000000000000000000000000000000000
--- a/views/alfresco_partner_files.xml
+++ /dev/null
@@ -1,47 +0,0 @@
-<?xml version="1.0"?>
-<!-- Copyright 2019 Le Filament
-     License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). -->
-
-<odoo>
-    <data>
-
-        <record id="alfresco_partner_files_search" model="ir.ui.view">
-            <field name="name">alfresco.partner.files.search</field>
-            <field name="model">alfresco.partner.files</field>
-            <field name="arch" type="xml">
-                <search>
-                    <!-- Champs de recherche -->
-                    <field name="name" />
-                    <field name="periode"/>
-                    <field name="type"/>
-                    <field name="validite"/>
-                    <!-- Groupes -->
-                    <group expand="0" name="group_by" string="Group By">
-                       <filter string="Période" name="group_periode" context="{'group_by': 'periode'}"/>
-                       <filter string="Types" name="group_type" context="{'group_by': 'type'}"/>
-                       <filter string="Validité" name="group_validite" context="{'group_by': 'validite'}"/>
-                       <filter string="Dernière Modification" name="group_last_modification" context="{'group_by': 'last_modification'}"/>
-                   </group>
-
-                </search>
-            </field>
-        </record>
-
-        <record id="alfresco_partner_files_tree" model="ir.ui.view">
-            <field name="name">alfresco.partner.files.tree</field>
-            <field name="model">alfresco.partner.files</field>
-            <field eval="8" name="priority"/>
-            <field name="arch" type="xml">
-                <tree string="Fichiers" create="false" edit="false" delete="false" >
-                    <field name="name" />
-                    <field name="type"/>
-                    <field name="periode"/>
-                    <field name="validite"/>
-                    <field name="last_modification"/>
-                    <button name="download_file" string="Télécharger" type="object" />
-                </tree>
-            </field>
-        </record>
-
-    </data>
-</odoo>
diff --git a/views/assets.xml b/views/assets.xml
index 44624aa462452cbd15f09ad9cd9295f2ee09fd93..dd5c433db3bd1f5c3d7c654ece1a57db667dfb27 100644
--- a/views/assets.xml
+++ b/views/assets.xml
@@ -1,13 +1,11 @@
 <?xml version="1.0"?>
-<!-- Copyright 2019 Le Filament
+<!-- Copyright 2020 Le Filament
      License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). -->
 
 <odoo>
-
-	<template id="alfresco_assets_backend" name="account assets" inherit_id="web.assets_backend">
+    <template id="assets_backend" name="cgscop_alfodoo_assets" inherit_id="cmis_web.assets_backend">
         <xpath expr="." position="inside">
-            <script type="text/javascript" src="/cgscop_alfresco/static/src/js/alfresco_add_file.js"></script>
-      	</xpath>
+            <script type="text/javascript" src="/cgscop_alfresco/static/src/js/form_widgets.js"/>
+        </xpath>
     </template>
-
-</odoo>
\ No newline at end of file
+</odoo>
diff --git a/views/cmis_backend.xml b/views/cmis_backend.xml
new file mode 100644
index 0000000000000000000000000000000000000000..89f7da529a579fa62af3a08ff8c47309b14671ed
--- /dev/null
+++ b/views/cmis_backend.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0"?>
+<!-- Copyright 2019 Le Filament
+     License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). -->
+
+<odoo>
+    <data>
+
+        <record id="view_cmis_backend_cgscop_form_inherited" model="ir.ui.view">
+            <field name="name">cmis.backend.cgscop.form</field>
+            <field name="model">cmis.backend</field>
+            <field name="inherit_id" ref="cmis.cmis_backend_form_view"/>
+            <field name="arch" type="xml">
+                    <sheet position="inside">
+                        <group name="cgscop" string="API Alfresco CG Scop">
+                            <field name="url"/>
+                            <field name="ssl"/>
+                            <field name="active"/>
+                        </group>
+                    </sheet>
+            </field>
+        </record>
+
+    </data>
+</odoo>
diff --git a/views/res_partner.xml b/views/res_partner.xml
deleted file mode 100644
index 26117506d01d283bb50cb8b561688877d1338f41..0000000000000000000000000000000000000000
--- a/views/res_partner.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0"?>
-<!-- Copyright 2019 Le Filament
-     License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). -->
-
-<odoo>
-    <data>
-
-        <record id="view_partner_cooperative_form_inherited" model="ir.ui.view">
-            <field name="name">cooperative.alfresco.form</field>
-            <field name="model">res.partner</field>
-            <field name="inherit_id" ref="cgscop_partner.scop_contact_view_form"/>
-            <field name="arch" type="xml">
-                <header position="inside">
-                    <button string="Documents" type="object" name="get_partner_files" />
-                </header>
-            </field>
-        </record>
-
-    </data>
-</odoo>
diff --git a/wizard/__init__.py b/wizard/__init__.py
deleted file mode 100644
index 0f342bee3af4bc001f4d7f4615711ed9ad3c87e9..0000000000000000000000000000000000000000
--- a/wizard/__init__.py
+++ /dev/null
@@ -1,4 +0,0 @@
-# © 2019 Le Filament (<http://www.le-filament.com>)
-# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
-
-from . import add_file_wizard
\ No newline at end of file
diff --git a/wizard/add_file_wizard.py b/wizard/add_file_wizard.py
deleted file mode 100644
index 5c3f60cb0064d58d64f0e8f8fbb8fc8d5e931d0e..0000000000000000000000000000000000000000
--- a/wizard/add_file_wizard.py
+++ /dev/null
@@ -1,97 +0,0 @@
-# © 2019 Le Filament (<http://www.le-filament.com>)
-# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
-
-import mimetypes
-import dateutil.parser
-import pytz
-
-from odoo import api, fields, models
-from odoo.tools.mimetypes import guess_mimetype
-
-
-class AddFileWizard(models.TransientModel):
-    """ Wizard d'ajout de fichier dans la GED
-
-    Récupère automatiquement depuis Alfresco les valeurs de periode,
-    type et validité ainsi que l'organisme associé
-    """
-    _name = 'add.file.wizard'
-    _inherit = 'cgscop.alfresco'
-    _description = "Ajout de fichier dans Alfresco"
-
-    # Default functions
-    def _get_selection(self, value):
-        try: 
-            file_type = self.alfresco_list_type()[value]
-            select_type = []
-            for type in file_type:
-                select_type.append(
-                    (type, type))
-            return select_type
-        except:
-            return False
-
-    @api.model
-    def _get_type(self):
-        return self._get_selection('type')
-
-    @api.model
-    def _get_periode(self):
-        return self._get_selection('periode')
-
-    @api.model
-    def _get_validite(self):
-        return self._get_selection('validite')
-
-    @api.model
-    def _default_partner_id(self):
-        return self.env.context.get('active_id')
-
-    type = fields.Selection(selection=_get_type, string='Type')
-    periode = fields.Selection(selection=_get_periode, string='Période')
-    validite = fields.Selection(selection=_get_validite, string='Validité')
-    file = fields.Binary('Fichier')
-    filename = fields.Char('Nom')
-    partner_id = fields.Many2one(
-        comodel_name='res.partner',
-        string='Organisme',
-        default=_default_partner_id,)
-
-    @api.multi
-    def add_file(self):
-        """ Ajoute un fichier sur la GED Alfresco
-
-        @return: fonction get_partner_files() de res.partner
-        """
-        # Get Mimetype
-        content_type = mimetypes.guess_type(self.filename)
-        if content_type[0]:
-            content_type = content_type[0]
-        else:
-            content_type = guess_mimetype(self.file)
-        # Upload File
-        uploaded_file = self.alfresco_upload(
-            partner=self.partner_id,
-            type=self.type,
-            periode=self.periode,
-            validite=self.validite,
-            filename=self.filename,
-            mimetype=content_type,
-            doc=self.file.decode('utf-8'))
-        # Add new file in transient model for view
-        uid = self.env.user.id
-        alfresco_obj = self.env["alfresco.partner.files"]
-        alfresco_obj.create({
-            'name': self.periode if self.periode != 'Autre' else self.filename,
-            'type': self.type,
-            'file_id': uploaded_file,
-            'user_id': uid,
-            'periode': self.periode,
-            'validite': self.validite,
-            'last_modification': fields.Datetime.now(),
-            'partner_id': self.partner_id.id,
-        })
-        # Reload view
-        return {
-            'type': 'ir.actions.close_wizard_refresh_view'
-        }
diff --git a/wizard/add_file_wizard.xml b/wizard/add_file_wizard.xml
deleted file mode 100644
index 6ceae9e64fd3834f45aa92c36e706fa4f4068f4a..0000000000000000000000000000000000000000
--- a/wizard/add_file_wizard.xml
+++ /dev/null
@@ -1,36 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<odoo>
-    <!-- WIZARD FORM -->
-    <record id="add_file_wizard_view_form" model="ir.ui.view">
-        <field name="name">add.file.wizard.form</field>
-        <field name="model">add.file.wizard</field>
-        <field name="arch" type="xml">
-            <form string="Ajouter un Fichier">
-                <group name="infos" string="Informations">
-                        <field name="partner_id" readonly="1" />
-                        <field name="periode" required="1" />
-                        <field name="type" required="1" />
-                        <field name="validite" required="1" />
-                </group>
-                <group>
-                    <field name="filename" invisible="1"/>
-                    <field name="file" filename="filename" required="1"/>
-                </group>
-                <footer>
-                    <button class="btn btn-sm btn-primary" name="add_file" string="Ajouter" type="object" confirm="Êtes-vous sûr(e) de vouloir ajouter ce fichier ?"/>
-                    <button class="btn btn-sm btn-default" special="cancel" string="Fermer"/>
-                </footer>
-            </form>
-        </field>
-    </record>
-
-    <record id="add_file_wizard_create_action" model="ir.actions.act_window">
-        <field name="name">Ajouter un fichier</field>
-        <field name="type">ir.actions.act_window</field>
-        <field name="res_model">add.file.wizard</field>
-        <field name="view_mode">form</field>
-        <field name="view_id" ref="add_file_wizard_view_form"/>
-        <field name="target">new</field>
-    </record>
-
-</odoo>