diff --git a/models/acc_operation.py b/models/acc_operation.py
index cb38189c56f04e485e4a60f36745091141dcc3ba..672b90505434815caa76ff188560cd2ee70ac845 100644
--- a/models/acc_operation.py
+++ b/models/acc_operation.py
@@ -85,9 +85,15 @@ class AccOperation(models.Model):
         self, start_date, end_date, usage_point_cons_ids=None, usage_point_prod_ids=None
     ):
         """
-        Récupère les données de l'opération concernant le périmètre:
-         - liste des PRM
-         - date de début opération
+        Vérifie les périodes, crée un log et appelle les courbes de conso / prod
+        à partir de l'API Enedis (cet appel passe par un job queue)
+
+        :param date start_date : date de début à récupérer (incluse)
+        :param date end_date : date de fin à récupérer (exclue)
+        :param recordset usage_point_cons_ids : liste de PRMs de soutirage à récupérer
+        :param recordset usage_point_prod_ids : liste de PRMs d'injection à récupérer
+        Les PRMs sont optionnels,
+            si non renseignés, tous les PRMs liés à l'opération seront récupérés
         """
         self._check_access_api()
         # TODO: Update to get curves only for existing periods
@@ -245,13 +251,24 @@ class AccOperation(models.Model):
     def get_definitive_load_curves(
         self, start_date, end_date, usage_point_id, type_prm
     ):
+        """
+        Appelle les courbes de conso / prod à partir de l'API Enedis
+
+        :param date start_date : date de début à récupérer (incluse)
+        :param date end_date : date de fin à récupérer (exclue)
+        :param record usage_point_id : PRM à récupérer
+        :param char type_prm : type de PRM à récupérer ("cons" ou "prod")
+        """
         message = ""
         message += "PRM " + usage_point_id.name + "\n"
         message += "Appel API ...\n"
+        # Transformation des dates naives en datetime UTC
+        start_datetime = pytz.timezone("Europe/Paris").localize(fields.Datetime.to_datetime(start_date)).astimezone(pytz.UTC).replace(tzinfo=None)
+        end_datetime = pytz.timezone("Europe/Paris").localize(fields.Datetime.to_datetime(start_date)).astimezone(pytz.UTC).replace(tzinfo=None)
         curves_data = self._get_definitive_load_curves(
             self.name,
-            start_date,
-            end_date,
+            start_datetime,
+            end_datetime,
             usage_point_id.name,
             self.client_id,
             self.secret_id,
@@ -268,15 +285,6 @@ class AccOperation(models.Model):
 
             for point in curve["interval_reading"]:
                 date_slot = datetime.strptime(point["timestamp"], "%Y-%m-%dT%H:%M:%SZ")
-
-                slot_datetime_tz = datetime.strftime(date_slot, "%Y-%m-%d %H:%M:%S")
-                slot_date_tz = datetime.fromisoformat(slot_datetime_tz).replace(
-                    tzinfo=tz.gettz("Europe/Paris")
-                )
-                date_slot_utc = slot_date_tz.astimezone(timezone.utc).replace(
-                    tzinfo=None
-                )
-
                 self.env["acc.enedis.cdc"].create(
                     {
                         "name": name,
@@ -285,9 +293,15 @@ class AccOperation(models.Model):
                         "comp_data_type": type_curve,
                         "power": point["value"],
                         "date_slot": date_slot,
-                        "date_slot_utc": date_slot_utc,
                     }
                 )
+            # Update partner_id for retrieved cdc
+            domain = [
+                ("acc_operation_id", "=", self.id),
+                ("acc_counter_id", "=", usage_point_id.id or False),
+                ("type_prm", "=", "delivery" if type_prm == "cons" else "injection")
+            ]
+            self.env["acc.counter.period"]._get_periods_from_interval(domain, start_date, end_date)._update_cdc_partner_id()
         message += "Fin du traitement des données\n"
         _logger.info(message)
         return message
@@ -299,7 +313,6 @@ class AccOperation(models.Model):
         de mois entre la date de début de contrat et la date du jour. Puis
         récupération des données de tous les mois
         """
-        # TODO: Update to get curves only for existing periods
         nb_months = (date.today().year - self.date_start_contract.year) * 12 + (
             date.today().month - self.date_start_contract.month
         )
@@ -307,14 +320,12 @@ class AccOperation(models.Model):
         start_date_it = self.date_start_contract
         end_date_it = self.date_start_contract + relativedelta(months=1)
 
-        i = 1
-        while i < nb_months:
+        for i in range(nb_months):
             self.curves(
                 start_date_it, end_date_it, usage_point_cons_ids, usage_point_prod_ids
             )
             start_date_it = start_date_it + relativedelta(months=1)
             end_date_it = start_date_it + relativedelta(months=1)
-            i += 1
 
     def perimeter(self):
         """