diff --git a/library/Class/Migration/AlbumChangeCodif.php b/library/Class/Migration/AlbumChangeCodif.php
index 260c3ce9136bad9296b445be30138bd4b72e987b..c87beb029d1362d9193070a88a236b6ba7c24a40 100644
--- a/library/Class/Migration/AlbumChangeCodif.php
+++ b/library/Class/Migration/AlbumChangeCodif.php
@@ -26,6 +26,7 @@ class Class_Migration_AlbumChangeCodif {
     $_codif_name,
     $_id_origin,
     $_id_replace,
+    $_force_update,
     $_map_attrib_class = [
                           'genre' => Class_CodifGenre::class,
                           'sections' => Class_CodifSection::class,
@@ -33,31 +34,29 @@ class Class_Migration_AlbumChangeCodif {
                           'matiere' => Class_CodifMatiere::class
     ];
 
-  public function __construct($cat_id, $codif_name, $id_origin, $id_replace) {
+  public function __construct($cat_id, $codif_name,
+                              $id_origin, $id_replace, $force_update = false) {
     $this->_cat_id = $cat_id;
     $this->_codif_name = $codif_name;
     $this->_id_origin = $id_origin;
     $this->_id_replace = $id_replace;
+    $this->_force_update = $force_update;
   }
 
 
   public function run() : string {
     try {
-      if (!$this->_cat_id
-          || !$category = Class_AlbumCategorie::find($this->_cat_id))
+      if (!$category = $this->_getCategory())
         return "Category can't be found with id: " . $this->_cat_id;
 
-      if (!$this->_codif_name
-          || !isset($this->_map_attrib_class[$this->_codif_name]))
+      if (!$this->_isCodifNameValid())
         return sprintf("Codif %s doesn't exist", $this->_codif_name);
 
       $codif = $this->_map_attrib_class[$this->_codif_name];
-      if (!$this->_id_origin
-          || $codif::find($this->_id_origin))
+      if (!$this->_isOriginCodifValid($codif))
         return sprintf("%s with id: %s should not exists", $codif, $this->_id_origin);
 
-      if (!$this->_id_replace
-          || !$codif::find($this->_id_replace))
+      if (!$this->_isReplaceCodifValid($codif))
         return sprintf("%s can't be found with id: %s", $codif, $this->_id_replace);
 
       $albums = Class_Album::findAllBy(['cat_id' => $category
@@ -97,4 +96,30 @@ class Class_Migration_AlbumChangeCodif {
 
     return 0;
   }
+
+
+  protected function _getCategory() {
+    if (!$this->_cat_id)
+      return null;
+
+    return Class_AlbumCategorie::find($this->_cat_id);
+  }
+
+
+  protected function _isCodifNameValid() : bool {
+    return $this->_codif_name && isset($this->_map_attrib_class[$this->_codif_name]);
+  }
+
+
+  protected function _isOriginCodifValid($codif): bool {
+    if (!$this->_id_origin)
+      return false;
+
+    return $this->_force_update || !$codif::find($this->_id_origin);
+  }
+
+
+  protected function _isReplaceCodifValid($codif) : bool {
+    return $this->_id_replace && $codif::find($this->_id_replace);
+  }
 }
diff --git a/scripts/album_change_codif.php b/scripts/album_change_codif.php
index b9ea32f628710cdef7842d938895ef974c3d62fd..1faa4dff33dff59357791c63d9d051c94402b035 100644
--- a/scripts/album_change_codif.php
+++ b/scripts/album_change_codif.php
@@ -1,11 +1,12 @@
 <?php
 require __DIR__ . '/../console.php';
 
-if (5 !== $argc) {
-  echo 'This script must have 4 arguments' . "\n\n";
+if ($argc < 5) {
+  echo 'This script must have at least 4 arguments' . "\n\n";
   return;
 }
 
-echo (new Class_Migration_AlbumChangeCodif($argv[1], $argv[2], $argv[3], $argv[4]))
+echo (new Class_Migration_AlbumChangeCodif($argv[1], $argv[2],
+                                           $argv[3], $argv[4], '-f' === $argv[5]))
   ->run();
 echo "\n\n";
diff --git a/tests/library/Class/Migration/AlbumChangeCodifTest.php b/tests/library/Class/Migration/AlbumChangeCodifTest.php
index 55966c38264ab32327f4364fa1b0743c2b1ab288..3a50cb6df2b7c13f207df14e0bee3b6415ca158a 100644
--- a/tests/library/Class/Migration/AlbumChangeCodifTest.php
+++ b/tests/library/Class/Migration/AlbumChangeCodifTest.php
@@ -280,3 +280,23 @@ class AlbumChangeCodifWithErrorTest extends ModelTestCase {
     $this->assertEquals("Class_CodifGenre can't be found with id: 3", $message);
   }
 }
+
+
+
+
+class AlbumChangeCodifForGenreForceUpdateTest extends AlbumChangeCodifTestCase {
+
+  public function setUp() {
+    parent::setUp();
+
+    $this->_message = (new Class_Migration_AlbumChangeCodif(1, 'genre',
+                                                            101, 110, true))
+      ->run();
+  }
+
+
+  /** @test */
+  public function album10ShouldHaveReplaceIdGenre101By110() {
+    $this->assertEquals('100;;110', Class_Album::find(10)->getGenre());
+  }
+}