diff --git a/__init__.py b/__init__.py
index 957992f377d7ce8942a87238397684babc5eb305..1f538c8007e6965dee6c8b955f344ef90ee367a1 100644
--- a/__init__.py
+++ b/__init__.py
@@ -2,3 +2,4 @@
 # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
 
 from . import models
+from . import wizards
diff --git a/__manifest__.py b/__manifest__.py
index aba5a9f0312defc135479849a58b45b36b184374..178e51e2dae796d4ec9974524ccdc1b3c97673b1 100755
--- a/__manifest__.py
+++ b/__manifest__.py
@@ -12,11 +12,12 @@
         "security/ir.model.access.csv",
         # datas
         'data/service_cron.xml',
+        'wizards/enercoop_operation_wizard_views.xml',
         # views
         'views/res_config_settings_views.xml',
-        'views/enercoop_operation_views.xml'
+        'views/enercoop_operation_views.xml',
         # views menu
-        # wizard
+
     ],
     'qweb': [
         # "static/src/xml/*.xml",
diff --git a/models/api_enedis.py b/models/api_enedis.py
index 8f372e0b64c812d5ebbf645d276e3e51d4a524f7..138d1042f23679041c9788803b33584f5dcb8de6 100644
--- a/models/api_enedis.py
+++ b/models/api_enedis.py
@@ -141,9 +141,9 @@ class ApiEnedis(models.AbstractModel):
         url = 'v1/collective_self_consumption/agreements/' + self.name + '/definitive_load_curves'
 
         if usage_point_name:
-            name = usage_point_name + '_' + date_start + '_' + date_end + '_' + type
+            name = usage_point_name + '_' + str(date_start) + '_' + str(date_end) + '_' + type
         else:
-            name = self.name + '_' + date_start + '_' + date_end + '_' + type
+            name = self.name + '_' + str(date_start) + '_' + str(date_end) + '_' + type
 
         log_id = self.env['enercoop.enedis.import.logs'].search([
             ('name', '=', name),
@@ -188,12 +188,14 @@ class ApiEnedis(models.AbstractModel):
             # 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)])
+                counter_id = self.env['enercoop.counter'].search([
+                    ('name', '=', usage_point_name),
+                    ('enercoop_operation_id', '=', self.id)])
             type = curve['type']
             if counter_id:
-                name = counter_id.name + '_' + date_start + '_' + date_end + '_' + type
+                name = counter_id.name + '_' + str(date_start) + '_' + str(date_end) + '_' + type
             else:
-                name = self.name + '_' + date_start + '_' + date_end + '_' + type
+                name = self.name + '_' + str(date_start) + '_' + str(date_end) + '_' + type
 
             for point in curve['interval_reading']:
                 date_slot = datetime.strptime(point['timestamp'], "%Y-%m-%dT%H:%M:%SZ")
@@ -237,4 +239,30 @@ class ApiEnedis(models.AbstractModel):
                     'date_start_contract': date.fromisoformat(usage_point['start']),
                     'date_end_contract': date.fromisoformat(usage_point['end']),
                 })
+            else:
+                prm_id = self.env['enercoop.counter'].search([
+                    ('enercoop_operation_id', '=', self.id),
+                    ('name', '=', usage_point['usage_point_id'])])
+                if not prm_id:
+                    is_delivery = False
+                    is_injection = False
+                    if usage_point['type'] == 'CONS':
+                        is_delivery = True
+                    if usage_point['type'] == 'PROD':
+                        is_injection = True
+
+                    prm_id = self.env['enercoop.counter'].create({
+                        'name': usage_point['usage_point_id'],
+                        'enercoop_operation_id': self.id,
+                        'is_delivery': is_delivery,
+                        'is_injection': is_injection,
+                    })
+
+                self.env['enercoop.counter.operation'].create({
+                    'enercoop_counter_id': prm_id.id,
+                    'operation_id': self.id,
+                    'date_start_contract': date.fromisoformat(usage_point['start']),
+                    'date_end_contract': date.fromisoformat(usage_point['end']),
+                })
+
         return True
\ No newline at end of file
diff --git a/models/enercoop_operation.py b/models/enercoop_operation.py
index 400af842423ea1480c978210fd5392525f1e763a..e992b80c59c224c5f4568213522fa86f3a923999 100644
--- a/models/enercoop_operation.py
+++ b/models/enercoop_operation.py
@@ -40,12 +40,13 @@ class EnercoopOperation(models.Model):
         ''' 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)
+        if date.today() == last_day_of_month(date.today()):
+            date_month_before = date.today() - relativedelta(months=1)
+            records = self.search([
+                ('birthday_date', '=', date_month_before.day),
+                ('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:
@@ -76,3 +77,6 @@ class EnercoopOperation(models.Model):
     # ------------------------------------------------------
     # Business methods
     # ------------------------------------------------------
+    def last_day_of_month(date_value):
+        return date_value.replace(day=monthrange(date_value.year, date_value.month)[1])
+
diff --git a/security/ir.model.access.csv b/security/ir.model.access.csv
index c2664139141d271dbe50be1f018d7945c03bd413..997c8456d60a3b419293979a406c98a68ed7de18 100755
--- a/security/ir.model.access.csv
+++ b/security/ir.model.access.csv
@@ -1,3 +1,5 @@
 id,name,model_id/id,group_id/id,perm_read,perm_write,perm_create,perm_unlink
 "access_api_enedis_group_partner_manager","api_enedis group_partner_manager","model_api_enedis","base.group_partner_manager",1,1,1,1
-"access_api_enedis_group_user","api_enedis group_user","model_api_enedis","base.group_user",1,0,0,0
\ No newline at end of file
+"access_api_enedis_group_user","api_enedis group_user","model_api_enedis","base.group_user",1,0,0,0
+"access_enercoop_operation_wizard_group_partner_manager","enercoop_operation_wizard group_partner_manager","model_enercoop_operation_wizard","base.group_partner_manager",1,1,1,1
+"access_enercoop_operation_wizard_group_user","enercoop_operation_wizard group_user","model_enercoop_operation_wizard","base.group_user",1,0,0,0
\ No newline at end of file
diff --git a/views/enercoop_operation_views.xml b/views/enercoop_operation_views.xml
index b8cff8e9d146a933cd13724d9ad5342f5cf67608..95c781dbe9375dce6fa6d385fa579d3d9c429cb3 100644
--- a/views/enercoop_operation_views.xml
+++ b/views/enercoop_operation_views.xml
@@ -8,8 +8,11 @@
             <field name="inherit_id" ref="enercoop_partner.enercoop_operation_form_view"/>
             <field name="arch" type="xml">
                 <header position="inside">
-                    <button string="Récupération des courbes" type="object" class="btn-primary" name="get_curves"/>
-                    <button string="Périmètre" type="object" class="btn-primary" name="get_perimeter"/>
+                    <button
+                            string="Récupération des courbes"
+                            type="action"
+                            name="%(enercoop_enedis_api.enercoop_operation_wizard_action)d"/>
+                    <button string="Périmètre" type="object" name="get_perimeter" attrs="{'invisible':[('client_id','=', False), ('secret_id','=', False)]}"/>
                 </header>
                 <xpath expr="//notebook" position="inside">
                     <page string="API Enedis" name="api">
diff --git a/wizards/enercoop_operation_wizard.py b/wizards/enercoop_operation_wizard.py
index 4ac24629aba321ae06c3d2177974d93f81d17834..908f6f05cc0a36b55cb3703558261830f2b0f6a2 100644
--- a/wizards/enercoop_operation_wizard.py
+++ b/wizards/enercoop_operation_wizard.py
@@ -38,8 +38,10 @@ class EnercoopOperationWizard(models.TransientModel):
     # Actions
     # ------------------------------------------------------
     def get_curves(self):
-        for operation in self:
-            return True
+        context = dict(self._context or {})
+        if context.get('active_ids', False):
+            self.env['enercoop.operation'].browse(context.get('active_ids')).get_curves(self.date_start, self.date_end)
+        return {'type': 'ir.actions.act_window_close'}
     # ------------------------------------------------------
     # Business methods
     # ------------------------------------------------------