diff --git a/.eslintrc.yml b/.eslintrc.yml
index fed88d70d23ecb3297ea28854b320c4d62ee3c26..0b382039586ae1303994e343dfca336fe46b0bdd 100644
--- a/.eslintrc.yml
+++ b/.eslintrc.yml
@@ -4,7 +4,7 @@ env:
 
 # See https://github.com/OCA/odoo-community.org/issues/37#issuecomment-470686449
 parserOptions:
-  ecmaVersion: 2019
+  ecmaVersion: 2022
 
 overrides:
   - files:
diff --git a/.gitignore b/.gitignore
index d99361a24aa02c2d19d8165c3a057b84bc575166..c9f42387ef7051b2a868a9361f4f3cb6d562d4ed 100644
--- a/.gitignore
+++ b/.gitignore
@@ -26,6 +26,15 @@ var/
 *.eggs
 .copier-answers.yml
 
+# Debian packages
+*.deb
+
+# Redhat packages
+*.rpm
+
+# MacOS packages
+*.dmg
+
 # Installer logs
 pip-log.txt
 pip-delete-this-directory.txt
diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
index 3efb4d9157dc36d84e372eec5fc21e7f4a417a58..f58f2c6608a042bb13f2c7559889e33bf3f46733 100644
--- a/.pre-commit-config.yaml
+++ b/.pre-commit-config.yaml
@@ -16,6 +16,8 @@ exclude: |
   readme/.*\.(rst|md)$|
   # Ignore build and dist directories in addons
   /build/|/dist/|
+  # Ignore test files in addons
+  /tests/samples/.*|
   # You don't usually want a bot to modify your legal texts
   (LICENSE.*|COPYING.*)
 default_language_version:
@@ -35,9 +37,14 @@ repos:
         name: en.po files cannot exist
         entry: found a en.po file
         language: fail
-        files: '[a-zA-Z0-9_]*/i18n/en\.po$'
+        files:
+          '[a-zA-Z0-9_]*/i18n/en\.po$'
+          #  - repo: https://github.com/sbidoul/whool
+          #    rev: v0.5
+          #    hooks:
+          #      - id: whool-init
   - repo: https://github.com/oca/maintainer-tools
-    rev: f71041f22b8cd68cf7c77b73a14ca8d8cd190a60
+    rev: d5fab7ee87fceee858a3d01048c78a548974d935
     hooks:
       # update the NOT INSTALLABLE ADDONS section above
       - id: oca-update-pre-commit-excluded-addons
@@ -46,11 +53,13 @@ repos:
       - id: oca-gen-addon-readme
         args:
           - --addons-dir=.
-          - --branch=16.0
+          - --branch=17.0
           - --org-name=lefilament
           - --repo-name=template_module
           - --if-source-changed
           - --keep-source-digest
+          - --convert-fragments-to-markdown
+      # - id: oca-gen-external-dependencies
   - repo: https://github.com/OCA/odoo-pre-commit-hooks
     rev: v0.0.25
     hooks:
@@ -104,7 +113,7 @@ repos:
         args: [--fix, --exit-non-zero-on-fix]
       - id: ruff-format
   - repo: https://github.com/OCA/pylint-odoo
-    rev: v8.0.19
+    rev: v9.0.4
     hooks:
       - id: pylint_odoo
         name: pylint with optional checks
diff --git a/.prettierrc.yml b/.prettierrc.yml
new file mode 100644
index 0000000000000000000000000000000000000000..5b6d4b361ace92f3877993bf2848fac190d8fab6
--- /dev/null
+++ b/.prettierrc.yml
@@ -0,0 +1,8 @@
+# Defaults for all prettier-supported languages.
+# Prettier will complete this with settings from .editorconfig file.
+bracketSpacing: false
+printWidth: 88
+proseWrap: always
+semi: true
+trailingComma: "es5"
+xmlWhitespaceSensitivity: "strict"
diff --git a/.pylintrc b/.pylintrc
index 71c476d4f10ac08a7333729b93705c9573d240d5..4fb9ba5362fb402b42c1a587d56b28ed71e8f933 100644
--- a/.pylintrc
+++ b/.pylintrc
@@ -5,12 +5,12 @@ load-plugins=pylint_odoo
 score=n
 
 [ODOOLINT]
-readme_template_url="https://github.com/OCA/maintainer-tools/blob/master/template/module/README.rst"
-manifest_required_authors=Le Filament
-manifest_required_keys=license
-manifest_deprecated_keys=description,active
-license_allowed=AGPL-3,GPL-2,GPL-2 or any later version,GPL-3,GPL-3 or any later version,LGPL-3
-valid_odoo_versions=16.0
+readme-template-url="https://github.com/OCA/maintainer-tools/blob/master/template/module/README.rst"
+manifest-required-authors=Le Filament
+manifest-required-keys=license
+manifest-deprecated-keys=description,active
+license-allowed=AGPL-3,GPL-2,GPL-2 or any later version,GPL-3,GPL-3 or any later version,LGPL-3
+valid-odoo-versions=17.0
 
 [MESSAGES CONTROL]
 disable=all
diff --git a/.pylintrc-mandatory b/.pylintrc-mandatory
index 99064933ef82c469ba5fda5b2904447c05c99dbe..42885e9b5eb0cde47fa65d308683c29504934143 100644
--- a/.pylintrc-mandatory
+++ b/.pylintrc-mandatory
@@ -9,7 +9,7 @@ manifest-required-authors=Le Filament
 manifest-required-keys=license
 manifest-deprecated-keys=description,active
 license-allowed=AGPL-3,GPL-2,GPL-2 or any later version,GPL-3,GPL-3 or any later version,LGPL-3
-valid-odoo-versions=16.0
+valid-odoo-versions=17.0
 
 [MESSAGES CONTROL]
 disable=all
diff --git a/__manifest__.py b/__manifest__.py
index eaed7320b6c63920f262ad463ea7eb98681ed69c..a9151751a702dfa33321d4ab4f5633f72d02672e 100644
--- a/__manifest__.py
+++ b/__manifest__.py
@@ -3,7 +3,7 @@
     "summary": "Gestion des mise en production logicielles",
     "author": "Le Filament",
     "website": "https://le-filament.com",
-    "version": "16.0.2.0.0",
+    "version": "17.0.1.0.0",
     "license": "AGPL-3",
     "depends": [
         "web",
diff --git a/models/res_partner.py b/models/res_partner.py
index 994caffccd545ea1995eb1418df98cabe02c0fee..03fb752fbafc81547d6e8fa0e94b613fb79d1c46 100644
--- a/models/res_partner.py
+++ b/models/res_partner.py
@@ -62,6 +62,7 @@ class ResPartner(models.Model):
                         module_id = existing_modules.create(new_module)
                     # Mise à jour des versions
                     else:
+                        # ruff: noqa: B023
                         module_id = existing_modules.filtered(
                             lambda m: m.name == module.get("name")
                         )
@@ -96,6 +97,7 @@ class ResPartner(models.Model):
                 )
             )
             if module_uninstalled:
+                # ruff: noqa: B023
                 module_ids = partner.module_version_ids.filtered(
                     lambda m: m.module_id.name in module_uninstalled
                 )
diff --git a/templates/partner_release_detail.xml b/templates/partner_release_detail.xml
index 4775e7d4018476319daa8fe09cd99d1de995b70b..3f4727266b09de396c7af95d44f7d0d456e995dc 100644
--- a/templates/partner_release_detail.xml
+++ b/templates/partner_release_detail.xml
@@ -11,9 +11,7 @@
                     <div class="row">
                         <div class="col-12 mt16">
                             <t t-if="release.partner_id.release_share_link">
-                                <a
-                                    t-att-href="release.partner_id.release_share_link"
-                                ><i
+                                <a t-att-href="release.partner_id.release_share_link"><i
                                         class="fa fa-chevron-circle-left"
                                     /> Retour à la liste</a>
                             </t>
@@ -22,9 +20,7 @@
                             <h1>
                                 <span
                                     t-field="release.partner_id.name"
-                                /> - Release #<span
-                                    t-field="release.release_number"
-                                />
+                                /> - Release #<span t-field="release.release_number" />
                             </h1>
                         </div>
                         <!-- Description -->
@@ -47,9 +43,7 @@
                                 </tr>
                                 <tr>
                                     <th>Responsable</th>
-                                    <td><span
-                                            t-field="release.user_id.name"
-                                        /></td>
+                                    <td><span t-field="release.user_id.name" /></td>
                                 </tr>
                             </table>
                         </div>
@@ -86,9 +80,7 @@
                                             <td><span
                                                 t-field="module.release_type"
                                             /></td>
-                                            <td><span
-                                                t-field="module.log"
-                                            /></td>
+                                            <td><span t-field="module.log" /></td>
                                         </tr>
                                     </tbody>
                                 </table>
diff --git a/views/res_partner.xml b/views/res_partner.xml
index 25d458e40c42c51c5923db0086988378937ef229..22875f7cdd2fb77eb9932024130278594d9dc6a2 100644
--- a/views/res_partner.xml
+++ b/views/res_partner.xml
@@ -9,11 +9,7 @@
         <field name="priority" eval="110" />
         <field name="arch" type="xml">
             <xpath expr="//page[@name='internal_notes']" position="after">
-                <page
-                    name="modules"
-                    attrs="{'invisible': [('is_company', '!=', True)]}"
-                    string="Modules Odoo"
-                >
+                <page name="modules" invisible="not is_company" string="Modules Odoo">
                     <group>
                         <group>
                             <field name="server_ip" />
@@ -28,11 +24,7 @@
                         </tree>
                     </field>
                 </page>
-                <page
-                    name="release"
-                    attrs="{'invisible': [('is_company', '!=', True)]}"
-                    string="Releases"
-                >
+                <page name="release" invisible="not is_company" string="Releases">
                     <group>
                         <field
                             name="release_share_link"
@@ -40,18 +32,12 @@
                             options="{'string': 'Copier le lien'}"
                         />
                     </group>
-                    <field
-                        name="release_ids"
-                        options="{'no_create': 1, 'no_edit': 1}"
-                    >
+                    <field name="release_ids" options="{'no_create': 1, 'no_edit': 1}">
                         <tree>
                             <field name="release_date" />
                             <field name="user_id" />
                             <field name="description" />
-                            <field
-                                name="release_module_ids"
-                                widget="many2many_tags"
-                            />
+                            <field name="release_module_ids" widget="many2many_tags" />
                         </tree>
                     </field>
                 </page>
@@ -60,10 +46,7 @@
     </record>
 
     <!-- Action Server -->
-    <record
-        id="model_res_partner_release_action_share"
-        model="ir.actions.server"
-    >
+    <record id="model_res_partner_release_action_share" model="ir.actions.server">
         <field name="name">Générer le lien de la release</field>
         <field name="model_id" ref="model_res_partner" />
         <field name="binding_model_id" ref="model_res_partner" />
diff --git a/views/res_partner_module_version.xml b/views/res_partner_module_version.xml
index f89da7006446bbabb4d7fb7c1a68d3407e4d2e41..3bfe0686a3436daa26bc1f17d763182a8223cf00 100644
--- a/views/res_partner_module_version.xml
+++ b/views/res_partner_module_version.xml
@@ -20,14 +20,8 @@
             <field name="model">res.partner.module.version</field>
             <field name="arch" type="xml">
                 <tree string="Modules" editable="top">
-                    <field
-                        name="partner_id"
-                        options="{'no_create': 1, 'no_edit': 1}"
-                    />
-                    <field
-                        name="module_id"
-                        options="{'no_create': 1, 'no_edit': 1}"
-                    />
+                    <field name="partner_id" options="{'no_create': 1, 'no_edit': 1}" />
+                    <field name="module_id" options="{'no_create': 1, 'no_edit': 1}" />
                     <field name="latest_version" />
                 </tree>
             </field>
diff --git a/views/res_partner_release.xml b/views/res_partner_release.xml
index c890a13ff01c8a292f217d73fd37918513297e13..a5ad8b76895ca088d6e5a2dc86d892de7e32c23e 100644
--- a/views/res_partner_release.xml
+++ b/views/res_partner_release.xml
@@ -70,10 +70,7 @@
                         <label for="description" class="font-weight-bold" />
                         <field name="description" />
                         <hr />
-                        <label
-                            for="release_module_ids"
-                            class="font-weight-bold"
-                        />
+                        <label for="release_module_ids" class="font-weight-bold" />
                         <field
                             name="release_module_ids"
                             context="{'default_release_id': active_id}"
diff --git a/views/res_partner_release_module.xml b/views/res_partner_release_module.xml
index 645ef7f000164149cb3de9bb6cff3a66b46dae1f..16da3a700e3ec4a5e176c0b91bfd7ec0854af70d 100644
--- a/views/res_partner_release_module.xml
+++ b/views/res_partner_release_module.xml
@@ -75,10 +75,7 @@
     </record>
 
     <!-- Action Window -->
-    <record
-        id="res_partner_release_module_act_window"
-        model="ir.actions.act_window"
-    >
+    <record id="res_partner_release_module_act_window" model="ir.actions.act_window">
         <field name="name">Détail Modules</field>
         <field name="type">ir.actions.act_window</field>
         <field name="res_model">res.partner.release.module</field>
diff --git a/wizard/multi_partner_release_wizard.xml b/wizard/multi_partner_release_wizard.xml
index d5226d79856b84efb1dee65da540b670c82e77ee..1c48801b855d2f33eddaf314d82d81cadf13d7a5 100644
--- a/wizard/multi_partner_release_wizard.xml
+++ b/wizard/multi_partner_release_wizard.xml
@@ -29,10 +29,7 @@
                         <label for="description" class="font-weight-bold" />
                         <field name="description" />
                         <hr />
-                        <label
-                            for="release_module_ids"
-                            class="font-weight-bold"
-                        />
+                        <label for="release_module_ids" class="font-weight-bold" />
                         <field
                             name="release_module_ids"
                             context="{'default_release_id': active_id}"
@@ -55,11 +52,7 @@
                             string="Créer les releases"
                             class="btn-primary"
                         />
-                        <button
-                            string="Fermer"
-                            class="oe_link"
-                            special="cancel"
-                        />
+                        <button string="Fermer" class="oe_link" special="cancel" />
                     </footer>
                 </sheet>
             </form>
@@ -67,10 +60,7 @@
     </record>
 
     <!-- Action Window -->
-    <record
-        id="multi_partner_release_wizard_act_window"
-        model="ir.actions.act_window"
-    >
+    <record id="multi_partner_release_wizard_act_window" model="ir.actions.act_window">
         <field name="name">Releases Client</field>
         <field name="type">ir.actions.act_window</field>
         <field name="res_model">multi.partner.release.wizard</field>