diff --git a/models/api_enedis.py b/models/api_enedis.py
index 3f15e93c790788f58fefc2d47ec5fa8fa894612a..c002b674ea2a11e1fa3534748cbdb373c85eb54d 100644
--- a/models/api_enedis.py
+++ b/models/api_enedis.py
@@ -8,7 +8,7 @@ import json
 
 from datetime import datetime, date
 
-from odoo import models, exceptions
+from odoo import models, exceptions, fields
 from requests.auth import _basic_auth_str
 from odoo.exceptions import UserError
 
@@ -128,46 +128,52 @@ class ApiEnedis(models.AbstractModel):
                     message))
         return response
 
-    def definitive_load_curves(self, date_start, date_end, type, usage_point_name=None, token=None):
+    def definitive_load_curves(self, date_start, date_end, type, usage_point_id=None, token=None):
         """ Fonction permettant d'appeler l'API Enedis et retourne les courbes 
             de chare en fonction d'un intervalle de date et d'un type
             :param  date_start: une date de début
                     date_end: une date de fin
                     type: type de courbe à récupérer 
                           (cons/autocons/surplus/prod)
-                    usage_point_name: nom du PRM
+                    usage_point_id: id du PRM
             :return Retourner les courbes de charge
                     à la maille d'une opération ou
                     d'un PRM en particulier
         """
         url = 'v1/collective_self_consumption/agreements/' + self.name + '/definitive_load_curves'
 
-        if usage_point_name:
-            name = usage_point_name + '_' + str(date_start) + '_' + str(date_end) + '_' + type
+        if usage_point_id:
+            name = usage_point_id.name + '_' + str(date_start) + '_' + str(date_end) + '_' + type
         else:
             name = self.name + '_' + str(date_start) + '_' + str(date_end) + '_' + type
 
-        log_id = self.env['enercoop.enedis.import.logs'].search([
+        log_id = self.env['enercoop.enedis.cdc'].search([
             ('name', '=', name),
             ('enercoop_operation_id', '=', self.id)
         ])
         if not log_id:
-            self.load_data(url, date_start, date_end, type, usage_point_name, token=token)
+            self.load_data(url, date_start, date_end, type, usage_point_id=usage_point_id, token=token)
 
         return True
 
-    def load_data(self, url, date_start, date_end, type_courbe=None, usage_point_name=None, token=None):
+    def load_data(self, url, date_start, date_end, type_courbe=None, usage_point_id=None, token=None):
         """ Read function
             :param  url : URL à appeler
                     date_start: une date de début
                     date_end: une date de fin
                     type_courbe: type de courbe à récupérer 
                           (cons/autocons/surplus/prod)
-                    usage_point_name: nom du PRM
+                    usage_point_id: id du PRM
             @return object: Retourner les courbes de charge
                             à la maille d'une opération ou
                             d'un PRM en particulier
         """
+        if usage_point_id:
+            usage_point_name = usage_point_id.name
+            counter_id = usage_point_id.id
+        else:
+            usage_point_name = None
+            counter_id = None
         query = {
             # Date de début de la période souhaitée.La date est incluse dans la période
             'start': date_start,
@@ -187,43 +193,43 @@ class ApiEnedis(models.AbstractModel):
         # get the data
         curves = response.json().get('curves')
         for curve in curves:
-            usage_point = curve['usage_point_id']
-            # Get the counter ID from data
-            counter_id = self.env['enercoop.counter']
-            if usage_point_name:
-                counter_id = self.env['enercoop.counter'].search([
-                    ('name', '=', usage_point_name),
-                    ('enercoop_operation_ids', 'in', self.id)])
             type = curve['type']
-            if counter_id:
-                name = counter_id.name + '_' + str(date_start) + '_' + str(date_end) + '_' + type
+            if usage_point_id:
+                name = usage_point_id.name + '_' + str(date_start) + '_' + str(date_end) + '_' + type
             else:
                 name = self.name + '_' + str(date_start) + '_' + str(date_end) + '_' + type
 
-            enercoop_enedis_cdc_ids = self.env['enercoop.enedis.cdc'].search([
+            domain_all = [
                 ('date_slot', '>=', date_start),
                 ('date_slot', '<=', date_end),
                 ('enercoop_operation_id', '=', self.id),
-                '|', ('enercoop_counter_id', '=', counter_id.id), ('enercoop_counter_id', '=', False),
-                ('comp_data_type', '=',  type),
-            ])
+                ('comp_data_type', '=', type),
+            ]
+
+            if counter_id:
+                domain_prm = domain_all + [('enercoop_counter_id', '=', counter_id)]
+            else:
+                domain_prm = domain_all + [('enercoop_counter_id', '=', False)]
+
+            enercoop_enedis_cdc_ids = self.env['enercoop.enedis.cdc'].search(domain_prm)
+
             record_created = False
-            timezone = self.env.context.get('tz') or self.env.user.tz
-            user_tz = pytz.timezone(timezone)
 
             for point in curve['interval_reading']:
-                date_slot = pytz.utc.localize(datetime.strptime(point['timestamp'], "%Y-%m-%dT%H:%M:%SZ")).astimezone(user_tz).replace(tzinfo=None)
+                date_slot = pytz.utc.localize(datetime.strptime(point['timestamp'], "%Y-%m-%dT%H:%M:%SZ"))
+                date_slot3 = fields.Datetime.to_string(date_slot)
 
-                record = enercoop_enedis_cdc_ids.filtered(lambda l: l.date_slot == date_slot)
+                record = enercoop_enedis_cdc_ids.filtered(lambda l: l.date_slot == fields.Datetime.to_datetime(date_slot3))
                 if not record:
                     self.env['enercoop.enedis.cdc'].create({
                         'name': name,
                         'enercoop_operation_id': self.id,
-                        'enercoop_counter_id': counter_id.id or False,
+                        'enercoop_counter_id': counter_id or False,
                         'comp_data_type': type,
                         'power': point['value'],
-                        'date_slot': date_slot,
+                        'date_slot': date_slot3,
                     })
+
                     record_created = True
 
             if record_created:
diff --git a/models/enercoop_operation.py b/models/enercoop_operation.py
index e5cc8bf04d68fc770ed523ef8b4717178fc1f7ac..9bb2b7ed11851b59c3b3d483f80167f63d05a195 100644
--- a/models/enercoop_operation.py
+++ b/models/enercoop_operation.py
@@ -61,15 +61,15 @@ class EnercoopOperation(models.Model):
         token = self.access_token()
         # 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, token=token)
-            self.definitive_load_curves(date_start, date_end, 'autocons', delivery_counter_id.enercoop_counter_id.name, token=token)
+            self.definitive_load_curves(date_start, date_end, 'cons', delivery_counter_id.enercoop_counter_id, token=token)
+            self.definitive_load_curves(date_start, date_end, 'autocons', delivery_counter_id.enercoop_counter_id, token=token)
 
         # 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, token=token)
+            self.definitive_load_curves(date_start, date_end, 'prod', injection_counter_id.enercoop_counter_id, token=token)
 
         # Load surplus data by operation
-        self.definitive_load_curves(date_start, date_end, 'surplus', usage_point_name=None, token=token)
+        self.definitive_load_curves(date_start, date_end, 'surplus', usage_point_id=None, token=token)
 
     def get_perimeter(self):
         for operation in self: