diff --git a/__manifest__.py b/__manifest__.py
index 9bdcdc953b3d4a2984282782ca0cf80641763f8a..aba5a9f0312defc135479849a58b45b36b184374 100755
--- a/__manifest__.py
+++ b/__manifest__.py
@@ -11,6 +11,7 @@
     'data': [
         "security/ir.model.access.csv",
         # datas
+        'data/service_cron.xml',
         # views
         'views/res_config_settings_views.xml',
         'views/enercoop_operation_views.xml'
diff --git a/data/service_cron.xml b/data/service_cron.xml
new file mode 100644
index 0000000000000000000000000000000000000000..a3e741e2f0e012e9cd5286953f69e9c4a83b5240
--- /dev/null
+++ b/data/service_cron.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<odoo>
+    <record id="ir_cron_auto_get_enedis_data" model="ir.cron">
+        <field name="name">Enercoop - Get data API Enedis</field>
+        <field name="interval_number">1</field>
+        <field name="interval_type">days</field>
+        <field name="numbercall">-1</field>
+        <field name="doall" eval="False"/>
+        <field name="model_id" ref="enercoop_partner.model_enercoop_operation"/>
+        <field name="code">model._auto_get_enedis_data()</field>
+        <field name="state">code</field>
+    </record>
+</odoo>
diff --git a/models/api_enedis.py b/models/api_enedis.py
index f033c07d1ae9fcf83c7d248ecccddf17e3d69b91..d81e235bfbc45ae3c6fb1d8c8be4597e8d9d6ebe 100644
--- a/models/api_enedis.py
+++ b/models/api_enedis.py
@@ -126,7 +126,7 @@ class ApiEnedis(models.AbstractModel):
                     message))
         return response
 
-    def definitive_load_curves(self, date_start, date_end, usage_point_id=None):
+    def definitive_load_curves(self, date_start, date_end, type, usage_point_name=None):
         """ Read function
             :param usage_point_id: id du PRM
             @return object: Retourner les courbes de charge
@@ -135,14 +135,17 @@ class ApiEnedis(models.AbstractModel):
         """
         url = 'v1/collective_self_consumption/agreements/' + self.name + '/definitive_load_curves'
 
-        type_cdc = ['cons', 'autocons']
-        for type_courbe in type_cdc:
-            for delivery_counter_id in self.enercoop_delivery_operation_ids:
-                self.load_data(url, date_start, date_end, type_courbe, delivery_counter_id.enercoop_counter_id.name)
+        if usage_point_name:
+            name = usage_point_name + '_' + date_start + '_' + date_end + '_' + type
+        else:
+            name = self.name + '_' + date_start + '_' + date_end + '_' + type
 
-        type_cdc = ['prod', 'surplus']
-        for type_courbe in type_cdc:
-            self.load_data(url, date_start, date_end, type_courbe, None)
+        log_id = self.env['enercoop.enedis.import.logs'].search([
+            ('name', '=', name),
+            ('enercoop_operation_id', '=', self.id)
+        ])
+        if not log_id:
+            self.load_data(url, date_start, date_end, type, usage_point_name)
 
         return True
 
@@ -160,7 +163,6 @@ class ApiEnedis(models.AbstractModel):
             'end': date_end,
             # Type de la courbe (enum)
             'type': type_courbe,
-            # 'type': ['prod', 'autocons', 'surplus', 'complement', 'cons'],
             # Identifiant du PRM
             'usage_point_id': usage_point_id
         }
@@ -182,6 +184,7 @@ class ApiEnedis(models.AbstractModel):
                 name = counter_id.name + '_' + date_start + '_' + date_end + '_' + type
             else:
                 name = self.name + '_' + date_start + '_' + date_end + '_' + type
+
             for point in curve['interval_reading']:
                 date_slot = datetime.strptime(point['timestamp'], "%Y-%m-%dT%H:%M:%SZ")
                 self.env['enercoop.enedis.cdc'].create({
@@ -193,6 +196,12 @@ class ApiEnedis(models.AbstractModel):
                     'date_slot': date_slot,
                 })
 
+            # Logs information loaded
+            self.env['enercoop.enedis.import.logs'].create({
+                'name': name,
+                'enercoop_operation_id': self.id,
+            })
+
     def perimeter(self):
         """ Read function
             @return object: Retourne le périmètre d'une opération donnée
diff --git a/models/enercoop_operation.py b/models/enercoop_operation.py
index b6b44bb0896d9ccc4bfb5c89416b4a2a24f99332..400af842423ea1480c978210fd5392525f1e763a 100644
--- a/models/enercoop_operation.py
+++ b/models/enercoop_operation.py
@@ -2,6 +2,8 @@
 # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
 
 from odoo import fields, models, api
+from datetime import datetime, date
+from dateutil.relativedelta import relativedelta
 
 
 class EnercoopOperation(models.Model):
@@ -33,22 +35,40 @@ class EnercoopOperation(models.Model):
     # ------------------------------------------------------
     # CRUD methods (ORM overrides)
     # ------------------------------------------------------
+    @api.model
+    def _auto_get_enedis_data(self):
+        ''' This method is called from a cron job.
+        It is used to get data from Enedis with API.
+        '''
+        date_month_before = date.today() - relativedelta(months=1)
+        records = self.search([
+            ('date_start_contract', '=', date_month_before),
+            ('date_end_contract', '>=', fields.Date.context_today(self)),
+        ])
+        records._get_curves(date_month_before)
+
+    def _get_curves(self, date_month_before):
+        for operation in self:
+            yesterday = date.today() - relativedelta(days=1)
+            operation.get_curves(date_month_before, yesterday)
 
     # ------------------------------------------------------
     # Actions
     # ------------------------------------------------------
-    def get_curves(self):
-        # action = self.env['ir.actions.act_window']._for_xml_id('enercoop_api.enercoop_operation_wizard_action')
-        # # Force the values of the move line in the context to avoid issues
-        # ctx = dict(self.env.context)
-        # ctx.pop('active_id', None)
-        # ctx['active_ids'] = self.ids
-        # # ctx['active_model'] = 'account.move.line'
-        # action['context'] = ctx
-        # return action
-        for operation in self:
-            res = operation.definitive_load_curves('2021-03-09', '2021-04-08')
-            return res
+    def get_curves(self, date_start, date_end):
+        # Load consommation data by PRM
+        for delivery_counter_id in self.enercoop_delivery_operation_ids:
+            self.definitive_load_curves(date_start, date_end, 'cons', delivery_counter_id.enercoop_counter_id.name)
+            self.definitive_load_curves(date_start, date_end, 'autocons', delivery_counter_id.enercoop_counter_id.name)
+
+        # Load production data by PRM
+        for injection_counter_id in self.enercoop_injection_operation_ids:
+            self.definitive_load_curves(date_start, date_end, 'prod', injection_counter_id.enercoop_counter_id.name)
+
+        # Load surplus data by operation
+        self.definitive_load_curves(date_start, date_end, 'surplus', None)
+
+        # self.definitive_load_curves(date_start, date_end)
 
     def get_perimeter(self):
         for operation in self: