diff --git a/VERSIONS_HOTLINE/54020 b/VERSIONS_HOTLINE/54020
new file mode 100644
index 0000000000000000000000000000000000000000..8c7861e1f8ff879153d87b44fefa8afb7958df0f
--- /dev/null
+++ b/VERSIONS_HOTLINE/54020
@@ -0,0 +1 @@
+ - ticket #54020 : Administration : correction de la validation du formulaire de création de rapports statisitiques
\ No newline at end of file
diff --git a/application/modules/admin/views/scripts/custom-fields-report/edit.phtml b/application/modules/admin/views/scripts/custom-fields-report/edit.phtml
index cf9bc25831ebeb3ff03d55ddafca6ff146d1f587..942fdc710aa70e7778b590dff8af02cd1667cc85 100644
--- a/application/modules/admin/views/scripts/custom-fields-report/edit.phtml
+++ b/application/modules/admin/views/scripts/custom-fields-report/edit.phtml
@@ -1,12 +1,8 @@
 <?php
-echo $this->renderForm($this->form, [
-  $this->bouton('type=V', "form=" . $this->form->getAttrib('id'), "javascript=;setFlagMaj(false);"),
-  $this->bouton('picto=test', "texte=Générer", "id=generate", 'largeur=100px'),
-  $this->bouton('id=29', 'picto=back',
-                sprintf('texte=%s', $this->_('Retour')),
-                'url='. $this->url(['action' => 'index']),
-                'largeur=120px')
-]);
+echo $this->renderForm($this->form, ['add' => [$this->bouton('picto=test',
+                                                             'texte=' . $this->_('Générer'),
+                                                             'id=generate',
+                                                             'largeur=120px')]]);
 
 Class_ScriptLoader::getInstance()
   ->addAdminScript('custom-fields/custom_fields')
diff --git a/library/ZendAfi/Form/Report.php b/library/ZendAfi/Form/Report.php
index 2f12c0f7ebaf3820294deb896f52464b95adf87a..1c9bef585136a962eda464513eafb1ea5e27312a 100644
--- a/library/ZendAfi/Form/Report.php
+++ b/library/ZendAfi/Form/Report.php
@@ -24,12 +24,28 @@ class ZendAfi_Form_Report extends ZendAfi_Form {
   public function init() {
     parent::init();
     $this
-      ->setAttrib('id', 'custom_field')
-      ->setAttrib('action', '')
-      ->addElement('text', 'label', ['label' => 'Libellé', 'size' => 50])
-      ->addElement('textarea', 'script', [])
-      ->addDisplayGroup(['label'], 'base', ['legend' => ''])
-      ->addDisplayGroup(['script'], 'editor', ['legend' => 'Script'])
+      ->setAttrib('id',
+                  'custom_field')
+
+      ->addElement('text',
+                   'label',
+                   ['label' => $this->_('Libellé'),
+                    'required' => true,
+                    'allowEmpty' => false,
+                    'size' => 50])
+
+      ->addElement('textarea',
+                   'script',
+                   ['required' => true,
+                    'allowEmpty' => false])
+
+      ->addDisplayGroup(['label'],
+                        'base',
+                        ['legend' => ''])
+
+      ->addDisplayGroup(['script'],
+                        'editor',
+                        ['legend' => 'Javascript'])
       ;
   }
 }
diff --git a/library/ZendAfi/View/Helper/RenderForm.php b/library/ZendAfi/View/Helper/RenderForm.php
index 2cd9b4353879bfdf0e3b7bb4baf5dee44e0bf45f..76915530886a64855b712657ab73f60d6c214c90 100644
--- a/library/ZendAfi/View/Helper/RenderForm.php
+++ b/library/ZendAfi/View/Helper/RenderForm.php
@@ -144,23 +144,32 @@ class ZendAfi_View_Helper_RenderForm extends ZendAfi_View_Helper_BaseHelper {
   }
 
 
-  /**
-   * @param $form Zend_Form
-   * @return string
-   */
   protected function _buttonsFor($form, $buttons) {
-    $id = $form->getAttrib('id');
     if (empty($buttons))
-      return $this->_tag('div',
-                         $this->view->bouton('type=V', "form=$id", "javascript=;setFlagMaj(false);")
-                         .$this->view->boutonRetour($this->_getBackUrl($form)),
-                         ['class' => 'boutons']);
+      return $this->_defaultButtons($form);
+
+    if(isset($buttons['add']) && !empty($buttons['add']))
+      return $this->_defaultButtons($form, $buttons['add']);
 
     $ratio = 100 / count($buttons);
     return "<table><tr><td style='width:" . $ratio . "%'>" . implode('</td><td style="width:' . $ratio . '%">', $buttons) . "</td></tr></table>";
   }
 
 
+  protected function _defaultButtons($form, $buttons = []) {
+    $validate_button = $this->view->bouton('type=V',
+                                           sprintf('form=%s',
+                                                   $form->getAttrib('id')),
+                                           'javascript=;setFlagMaj(false);');
+
+    $back_button = $this->view->boutonRetour($this->_getBackUrl($form));
+
+    return $this->_tag('div',
+                       implode(array_merge([$validate_button, $back_button],
+                                           $buttons)),
+                       ['class' => 'boutons']);
+  }
+
   /**
    * @param $form Zend_Form
    * @return string
diff --git a/tests/application/modules/admin/controllers/CustomFieldsReportControllerTest.php b/tests/application/modules/admin/controllers/CustomFieldsReportControllerTest.php
index 5f0da14a9c7f15af45eae37d3290b370cf57d946..2ef0659d653f4d7e2674d61f8c1c472047fbc7d4 100644
--- a/tests/application/modules/admin/controllers/CustomFieldsReportControllerTest.php
+++ b/tests/application/modules/admin/controllers/CustomFieldsReportControllerTest.php
@@ -16,14 +16,16 @@
  *
  * You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE
  * along with BOKEH; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA 
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA
  */
 
 
 class CustomFieldsReportControllerAddTest extends AbstractControllerTestCase {
+  protected $_storm_default_to_volatile = true;
+
   public function setUp() {
     parent::setUp();
-    $this->dispatch('/admin/custom-fields-report/add');
+    $this->dispatch('/admin/custom-fields-report/add', true);
   }
 
 
@@ -43,11 +45,25 @@ class CustomFieldsReportControllerAddTest extends AbstractControllerTestCase {
   public function pageShouldContainsGenerateReportButton() {
     $this->assertXPathContentContains('//div[@id="menu_itemgenerate"]//td', 'Générer');
   }
+
+
+  /** @test */
+  public function pageShouldContainsValidateReportButton() {
+    $this->assertXPathContentContains('//div[@id="menu_item975"]//td', 'Valider');
+  }
+
+
+  /** @test */
+  public function pageShouldContainsBackButton() {
+    $this->assertXPathContentContains('//div[@id="menu_itemc_2"]//td', 'Retour');
+  }
 }
 
 
 
 class CustomFieldsReportControllerEditTest extends AbstractControllerTestCase {
+  protected $_storm_default_to_volatile = true;
+
   public function setUp() {
     parent::setUp();
 
@@ -56,7 +72,7 @@ class CustomFieldsReportControllerEditTest extends AbstractControllerTestCase {
       'label' => 'Report',
       'script' => 'alert("oh my");',
     ]);
-    
+
     $this->dispatch('/admin/custom-fields-report/edit/id/2');
   }
 
@@ -70,6 +86,8 @@ class CustomFieldsReportControllerEditTest extends AbstractControllerTestCase {
 
 
 class CustomFieldsReportControllerGenerateTest extends AbstractControllerTestCase {
+  protected $_storm_default_to_volatile = true;
+
   public function setUp() {
     parent::setUp();
     $this->fixture('Class_Report', [