diff --git a/models/acc_operation.py b/models/acc_operation.py
index bd62b8161ca432d163cd12934515a5f26dfa6dcb..4c203b27e6a0af90508a1f10f0f971305820b4c4 100644
--- a/models/acc_operation.py
+++ b/models/acc_operation.py
@@ -90,11 +90,14 @@ class AccOperation(models.Model):
          - date de début opération
         """
         self._check_access_api()
+        # TODO: Update to get curves only for existing periods
 
         # Si pas de PRM sélectionnés
         if not usage_point_cons_ids and not usage_point_prod_ids:
-            usage_point_cons_ids = self.acc_delivery_ids
-            usage_point_prod_ids = self.acc_injection_ids
+            usage_point_cons_ids = self.acc_delivery_period_ids.mapped("acc_counter_id")
+            usage_point_prod_ids = self.acc_injection_period_ids.mapped(
+                "acc_counter_id"
+            )
 
         message = ""
         message += (
@@ -236,6 +239,7 @@ 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
         )
@@ -258,6 +262,7 @@ class AccOperation(models.Model):
          - liste des PRM
          - date de début opération
         """
+        # TODO : refactor, too complex
         self._check_access_api()
         message = ""
         message += (
@@ -282,12 +287,11 @@ class AccOperation(models.Model):
                 if usage_point["end"] != "9999-12-31"
                 else False
             )
-            usage_id = self.env["acc.counter"].search(
-                [
-                    ("acc_operation_id", "=", self.id),
-                    ("name", "=", usage_point["usage_point_id"]),
-                ]
-            )
+            usage_point_prm_type = False
+            if usage_point["type"] == "CONS":
+                usage_point_prm_type = "delivery"
+            elif usage_point["type"] == "PROD":
+                usage_point_prm_type = "injection"
             message += (
                 "<br/>PRM "
                 + usage_point["usage_point_id"]
@@ -297,50 +301,50 @@ class AccOperation(models.Model):
                 + usage_point["end"]
                 + "<br/>"
             )
-            if usage_id and len(usage_id) == 1:
+            counter_id = self.env["acc.counter"].search(
+                [
+                    ("acc_operation_id", "=", self.id),
+                    ("name", "=", usage_point["usage_point_id"]),
+                ]
+            )
+            if counter_id and len(counter_id) == 1:
                 message += "PRM existe dans Odoo<br/>"
-                if not usage_id.date_start_contract:
-                    usage_id.date_start_contract = usage_point_start
+                counter_period_ids = counter_id.period_ids
+                if counter_period_ids.filtered(
+                    lambda p: p.date_start == usage_point_start
+                    and p.date_end == usage_point_end
+                ):
                     message += (
-                        "mise à jour date de début " + usage_point["start"] + "<br/>"
+                        "période existante avec les mêmes dates, pas de modif<br/>"
                     )
-                elif usage_id.date_start_contract != usage_point_start:
+                elif counter_period_ids.filtered(
+                    lambda p: p.date_start == usage_point_start
+                ):
+                    counter_period_ids.filtered(
+                        lambda p: p.date_start == usage_point_start
+                    ).date_end = usage_point_end
                     message += (
-                        "date de début ne correspond pas, "
-                        "merci de vérifier manuellement ce PRM : "
-                        "date de début Odoo : "
-                        + fields.Date.to_string(usage_id.date_start_contract)
-                        + "<br/>"
+                        "période existante avec la même date de début, mais date de "
+                        "fin différente, mise à jour date de fin<br/>"
                     )
-                if usage_point_end and not usage_id.date_end_contract:
-                    usage_id.date_end_contract = usage_point_end
-                    message += (
-                        "mise à jour date de fin : " + usage_point["end"] + "<br/>"
+                else:
+                    self.env["acc.counter.period"].create(
+                        {
+                            "acc_counter_id": counter_id.id,
+                            "prm_type": usage_point_prm_type,
+                            "acc_operation_id": self.id,
+                            "date_start": usage_point_start,
+                            "date_end": usage_point_end,
+                        }
                     )
-                elif usage_id.date_end_contract != usage_point_end:
                     message += (
-                        "date de fin ne correspond pas"
-                        ", merci de vérifier manuellement ce PRM : "
-                        "date de fin Odoo : "
-                        + fields.Date.to_string(usage_id.date_end_contract)
-                        + "<br/>"
+                        "période inexistante avec les mêmes dates : création<br/>"
                     )
-                if usage_point["type"] == "CONS" and not usage_id.is_delivery:
-                    usage_id.is_delivery = True
-                    message += "PRM configuré comme point de soutirage <br/>"
-                if usage_point["type"] == "PROD" and not usage_id.is_injection:
-                    usage_id.is_injection = True
-                    message += "PRM configuré comme point d'injection <br/>"
-            elif len(usage_id) > 1:
+            elif len(counter_id) > 1:
                 message += "Plusieurs PRMs trouvés avec ce numéro - pas de modif<br/>"
             else:
                 message += "PRM n'existe pas : Création ...<br/>"
-                is_delivery = False
-                is_injection = False
-                if usage_point["type"] == "CONS":
-                    is_delivery = True
-                if usage_point["type"] == "PROD":
-                    is_injection = True
+                if usage_point_prm_type == "injection":
                     # Si la date de l'opération n'est pas renseignée ou
                     # après la date de démarrage du point d'injection
                     # alors on force la date à celle du point d'injection
@@ -349,25 +353,29 @@ class AccOperation(models.Model):
                         or self.date_start_contract > usage_point_start
                     ):
                         self.date_start_contract = usage_point_start
-                usage_id = self.env["acc.counter"].create(
+                counter_id = self.env["acc.counter"].create(
                     {
                         "name": usage_point["usage_point_id"],
-                        "is_delivery": is_delivery,
-                        "is_injection": is_injection,
+                    }
+                )
+                self.env["acc.counter.period"].create(
+                    {
+                        "acc_counter_id": counter_id.id,
+                        "prm_type": usage_point_prm_type,
                         "acc_operation_id": self.id,
-                        "date_start_contract": usage_point_start,
-                        "date_end_contract": usage_point_end,
+                        "date_start": usage_point_start,
+                        "date_end": usage_point_end,
                     }
                 )
                 message += "Fin de la création du PRM<br/>"
-            if usage_point["type"] == "PROD":
+            if usage_point_prm_type == "injection":
                 if usage_point["usage_point_id"] not in list_injection:
                     list_injection.append(usage_point["usage_point_id"])
-            if usage_point["type"] == "CONS":
+            if usage_point_prm_type == "delivery":
                 if usage_point["usage_point_id"] not in list_soutirage:
                     list_soutirage.append(usage_point["usage_point_id"])
 
-        message += "<p>LISTE TOTAL DE PRMs: </br>" "PRM Injection </br>"
+        message += "<p>LISTE TOTAL DE PRMs: </br>PRM Injection</br>"
 
         i = 1
         for inj in list_injection:
@@ -375,7 +383,7 @@ class AccOperation(models.Model):
             i += 1
         message += "Total: " + str(len(list_injection)) + "</br>"
 
-        message += "<br/>PRM Soutirage <br/>"
+        message += "<br/>PRM Soutirage<br/>"
         i = 1
         for inj in list_soutirage:
             message += str(i) + " - " + inj + "<br/>"
diff --git a/wizards/acc_operation_wizard.py b/wizards/acc_operation_wizard.py
index 8f5ed7de8de0da9db9ed5096a3fa6575506143fe..087685419d2a044ba714ff217c424b70f8d42bf1 100644
--- a/wizards/acc_operation_wizard.py
+++ b/wizards/acc_operation_wizard.py
@@ -30,7 +30,8 @@ class AccOperationWizard(models.TransientModel):
         relation="acc_counter_cons_rel",
         column1="cons_id",
         column2="op_id",
-        domain=[("is_delivery", "=", True)],
+        # TODO: rework domain ?
+        # domain=[("prm_type", "=", "injection")],
         string="PRM de soutirage",
     )
     prm_prod_ids = fields.Many2many(
@@ -38,7 +39,8 @@ class AccOperationWizard(models.TransientModel):
         relation="acc_counter_prod_rel",
         column1="prod_id",
         column2="op_id",
-        domain=[("is_injection", "=", True)],
+        # TODO: rework domain ?
+        # domain=[("is_injection", "=", True)],
         string="PRM d'injection",
     )
 
diff --git a/wizards/acc_operation_wizard_confirm.py b/wizards/acc_operation_wizard_confirm.py
index 463d401f1a77373384bb1e4033534b6795ae0994..b9754d18f5945a64f3450dc1ab1f3531eb1b560b 100644
--- a/wizards/acc_operation_wizard_confirm.py
+++ b/wizards/acc_operation_wizard_confirm.py
@@ -19,7 +19,8 @@ class AccOperationWizardConfirm(models.TransientModel):
         relation="acc_counter_cons_confirm_rel",
         column1="cons_id",
         column2="op_id",
-        domain=[("is_delivery", "=", True)],
+        # TODO: rework domain ?
+        # domain=[("is_delivery", "=", True)],
         string="PRM de soutirage",
     )
     prm_prod_ids = fields.Many2many(
@@ -27,7 +28,8 @@ class AccOperationWizardConfirm(models.TransientModel):
         relation="acc_counter_prod_confirm_rel",
         column1="prod_id",
         column2="op_id",
-        domain=[("is_injection", "=", True)],
+        # TODO: rework domain ?
+        # domain=[("is_injection", "=", True)],
         string="PRM d'injection",
     )
     rec_ids = fields.Many2many("acc.enedis.cdc", string="Records")
diff --git a/wizards/acc_operation_wizard_views.xml b/wizards/acc_operation_wizard_views.xml
index 043337130bff3268a5b6c54c2872492a1085e372..793ac05c075aa61efaa46e8deae13c0e0ab36435 100644
--- a/wizards/acc_operation_wizard_views.xml
+++ b/wizards/acc_operation_wizard_views.xml
@@ -11,15 +11,16 @@
                     <field
                         name="prm_cons_ids"
                         widget="many2many_tags"
-                        domain="[('is_delivery', '=', True), ('acc_operation_id', '=', operation_id)]"
                         options="{'no_create_edit': True, 'no_create': True}"
                     />
+                        <!-- TODO rework domain="[('prm_type', '=', 'delivery'), ('acc_operation_id', '=', operation_id)]" -->
+
                     <field
                         name="prm_prod_ids"
                         widget="many2many_tags"
                         options="{'no_create_edit': True, 'no_create': True}"
-                        domain="[('is_injection', '=', True), ('acc_operation_id', '=', operation_id)]"
                     />
+                        <!-- TODO rework domain="[('is_injection', '=', True), ('acc_operation_id', '=', operation_id)]" -->
                 </group>
                 <group name="period" string="Période" col="2">
                     <field name="date_start" />