diff --git a/__manifest__.py b/__manifest__.py
index 09e96df5398bb489d9cb21320540f9bbce31175a..5a7ef5bdb873a7de2bba9d177e8370afe9b2e76c 100755
--- a/__manifest__.py
+++ b/__manifest__.py
@@ -15,7 +15,9 @@
     "data": [
         "security/security_rules.xml",
         "security/ir.model.access.csv",
+        "datas/cron.xml",
         "datas/mail_data.xml",
+        "datas/mail_reminder_data.xml",
         "datas/ir_sequence_data.xml",
         "wizard/scop_cotisation_cg_regul_wizard.xml",
         "report/report_scop_bordereau.xml",
diff --git a/datas/cron.xml b/datas/cron.xml
new file mode 100644
index 0000000000000000000000000000000000000000..0074f350bed8ca46182ffde2b00515acbd12c732
--- /dev/null
+++ b/datas/cron.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright 2021 Le Filament (<https://www.le-filament.com>)
+     License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl). -->
+<odoo>
+    <data noupdate="1">
+        <record id="ir_cron_rappels_cotisations" model="ir.cron">
+            <field name="name">CG Scop - Envois des rappels d'échéance de cotisations</field>
+            <field name="active" eval="False"/>
+            <field name="interval_number">1</field>
+            <field name="interval_type">days</field>
+            <field name="numbercall">-1</field>
+            <field name="nextcall">2021-12-01 12:30:00</field>
+            <field name="model_id" ref="model_scop_bordereau"/>
+            <field name="state">code</field>
+            <field name="code">model.send_reminder_cotiz()</field>
+        </record>
+    </data>
+</odoo>
diff --git a/datas/mail_reminder_data.xml b/datas/mail_reminder_data.xml
new file mode 100644
index 0000000000000000000000000000000000000000..99d6c9c86c5892bd1eead7383f3f6621bb9c1733
--- /dev/null
+++ b/datas/mail_reminder_data.xml
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="utf-8"?>
+<odoo>
+    <data noupdate="0">
+
+    <!-- Template and notification section -->
+
+        <record id="email_template_reminder_cotisation_cg" model="mail.template">
+            <field name="name">Cotisation CG SCOP : Rappel date d’échéance de l’appel</field>
+            <field name="model_id" ref="cgscop_cotisation_cg.model_scop_bordereau"/>
+            <field name="email_from">${object.env.user.email_formatted |safe}</field>
+            <field name="partner_to">${object.get_recipients()}</field>
+            <field name="subject">Cotisation CG SCOP ${object.year}: Rappel date d’échéance de l’appel</field>
+            <field name="body_html" type="html">
+                <div style="margin: 0px; padding: 0px;">
+                    <p style="margin: 0px; padding: 0px; font-size: 13px;">
+                        <p>Cher(e) Adhérent(e),</p>
+
+                        <p>Comme vous avez probablement pu le constater, notre mouvement a engagé depuis début janvier 2021 un vaste programme de digitalisation, incluant notamment les appels de cotisations.</p>
+
+                        <p>Nous souhaitons vous préciser et attirer votre attention sur quelques évolutions :
+                        <ul>
+                            <li>
+                                Les modalités d’appels de vos cotisations ont été modifiées; vous ne recevez dorénavant <strong>qu’un seul appel cotisation annuel</strong> sur lequel figure votre <strong>échéancier de paiements trimestriels</strong>; en conséquence, lorsque vos règlements sont prévus par chèque ou virement vous ne recevez plus de bordereau trimestriel comme pour les années antérieures.
+                            </li>
+                            <li>
+                                A terme, votre appel de cotisation sera disponible sur votre espace adhérent (https://extranet.scop.coop).
+                            </li>
+                        </ul>
+                        </p>
+                        <p>
+                            Ce mail vise donc à vous sensibiliser à ce changement de mode de fonctionnement et à vous rappeler, si besoin, les échéances à venir :
+                            <ul>
+                                % for line in object.get_bordereau_move_line():
+                                    <span style="margin-left:5px">${line.date_maturity}</span>
+                                % endfor
+                            </ul>
+                        </p>
+
+                        <p>
+                            Nous vous remercions de la prise en compte de ce changement de mode opératoire et par avance du prochain règlement et le cas échéant à cette occasion, de la régularisation des paiements précédents.
+                        </p>
+
+                        <p>Restant à votre disposition pour toute information complémentaire.</p>
+
+                        <p>Bien coopérativement</p>
+
+                        <p>Direction administrative et exploitation</p>
+                        <p>CG Scop</p>
+                    </p>
+                </div>
+            </field>
+            <field name="lang">${object.partner_id.lang}</field>
+            <field name="user_signature" eval="False"/>
+            <field name="auto_delete" eval="False"/>
+        </record>
+
+    </data>
+</odoo>
diff --git a/models/scop_bordereau_cg.py b/models/scop_bordereau_cg.py
index 66ac9d91d22f6e7f954a1f78ba21a6a3f4bcdfc0..3006643d26905c31ab14b90b98d109998a396903 100644
--- a/models/scop_bordereau_cg.py
+++ b/models/scop_bordereau_cg.py
@@ -1,5 +1,6 @@
 # © 2021 Le Filament (<http://www.le-filament.com>)
 # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
+from datetime import timedelta
 
 from odoo import fields, models, api, registry
 from odoo.exceptions import UserError
@@ -590,3 +591,36 @@ class Bordereau(models.Model):
                         bordereau.env.cr.commit()
                     except Exception as e:
                         _logger.exception(str(e))
+
+    # ------------------------------------------------------
+    # Reminder cron
+    # ------------------------------------------------------
+    @api.model
+    def send_reminder_cotiz(self, _logger=None):
+        today = fields.Date.today()
+        reminder_date = today + timedelta(days=7)
+        acc_move_line_ids = self.env['account.move.line'].search([
+            ('account_id.reconcile', '=', True),
+            ('date_maturity', '=', reminder_date),
+        ])
+        if acc_move_line_ids:
+            partner_ids = acc_move_line_ids.mapped('partner_id')
+            bordereau_ids = self.env['scop.bordereau'].search([
+                ('year', '=', reminder_date.year),
+                ('partner_id', 'in', partner_ids.ids),
+                ('state', '=', 'validated'),
+            ], limit=10)
+            for bordereau in bordereau_ids:
+                template = \
+                    self.env.ref('cgscop_cotisation_cg.'
+                                 'email_template_reminder_cotisation_cg')
+                lang = self.env.user.lang
+                if template:
+                    template.with_context(lang=lang).\
+                        send_mail(bordereau.id, force_send=True)
+                else:
+                    _logger.warning(
+                        "Aucun modèle d'e-mail n'a été trouvé pour "
+                        "envoyer les rappels")
+        else:
+            return False