diff --git a/product/ERP5Type/tests/testFolderMigration.py b/product/ERP5Type/tests/testFolderMigration.py
index d480896e88d7dc6509977d5014140390bbbd87c3..03fdc836279356b38bfdd499f36cd2635b0cac00 100644
--- a/product/ERP5Type/tests/testFolderMigration.py
+++ b/product/ERP5Type/tests/testFolderMigration.py
@@ -265,6 +265,112 @@ class TestFolderMigration(ERP5TypeTestCase, LogInterceptor):
       obj5 = self.newContent()
       self.assertEquals(obj5.getId().split('-')[0], date)
 
+    def test_07_migrateFolderTwice(self, quiet=0, run=1):
+      """
+      migrate folder twice from btree to hbtree
+      """
+      if not run : return
+      if not quiet:
+        message = 'Test migrateFolder'
+        LOG('Testing... ', 0, message)
+      # Create some objects
+      self.assertEquals(self.folder.getIdGenerator(), '')
+      self.assertEquals(len(self.folder), 0)
+      obj1 = self.newContent()
+      self.assertEquals(obj1.getId(), '1')
+      obj2 = self.newContent()
+      self.assertEquals(obj2.getId(), '2')
+      obj3 = self.newContent()
+      self.assertEquals(obj3.getId(), '3')
+      get_transaction().commit()
+      self.tic()      
+      # call migration script
+      self.folder.migrateToHBTree(migration_generate_id_method="Base_generateIdFromStopDate",
+                                  new_generate_id_method="_generatePerDayId")
+      get_transaction().commit()
+      self.tic()
+      # check we now have a hbtree
+      self.assertEqual(self.folder.isBTree(), False)
+      self.assertEqual(self.folder.isHBTree(), True)
+      self.assertEqual(len(self.folder.getTreeIdList()), 1)
+      self.assertEqual(len(self.folder.objectIds()), 3)
+      # check params of objectIds in case of hbtree
+      self.assertEqual(len(self.folder.objectIds(base_id=None)), 0)
+      LOG("test", 300, "rien")
+      self.assertEqual(len(self.folder.objectValues()), 3)
+      LOG("test", 300, "base_id")
+      self.assertEqual(len(self.folder.objectValues(base_id=None)), 0)
+      # check object ids
+      from DateTime import DateTime
+      date = DateTime().Date()
+      date = date.replace("/", "")
+      self.assertEquals(obj1.getId(), '%s-1' %date)
+      self.assertEquals(obj2.getId(), '%s-2' %date)
+      self.assertEquals(obj3.getId(), '%s-3' %date)
+      # add object and check its id
+      obj4 = self.newContent()
+      self.assertEquals(obj4.getId().split('-')[0], date)
+      # call migration script again
+      self.folder.migrateToHBTree(migration_generate_id_method="Base_generateIdFromStopDate",
+                                  new_generate_id_method="_generatePerDayId")
+      get_transaction().commit()
+      self.tic()
+      
+      # check object ids
+      self.assertEquals(obj1.getId(), '%s-1' %date)
+      self.assertEquals(obj2.getId(), '%s-2' %date)
+      self.assertEquals(obj3.getId(), '%s-3' %date)
+      self.assertEquals(obj4.getId().split('-')[0], date)
+      
+    def test_08_migrateFolderTwiceSimultaneously(self, quiet=0, run=1):
+      """
+      migrate folder twice from btree to hbtree
+      """
+      if not run : return
+      if not quiet:
+        message = 'Test migrateFolder'
+        LOG('Testing... ', 0, message)
+      # Create some objects
+      self.assertEquals(self.folder.getIdGenerator(), '')
+      self.assertEquals(len(self.folder), 0)
+      obj1 = self.newContent()
+      self.assertEquals(obj1.getId(), '1')
+      obj2 = self.newContent()
+      self.assertEquals(obj2.getId(), '2')
+      obj3 = self.newContent()
+      self.assertEquals(obj3.getId(), '3')
+      get_transaction().commit()
+      self.tic()      
+      # call migration script twice
+      self.folder.migrateToHBTree(migration_generate_id_method="Base_generateIdFromStopDate",
+                                  new_generate_id_method="_generatePerDayId")
+      get_transaction().commit()
+      self.folder.migrateToHBTree(migration_generate_id_method="Base_generateIdFromStopDate",
+                                  new_generate_id_method="_generatePerDayId")
+      get_transaction().commit()
+      self.tic()
+      # check we now have a hbtree
+      self.assertEqual(self.folder.isBTree(), False)
+      self.assertEqual(self.folder.isHBTree(), True)
+      self.assertEqual(len(self.folder.getTreeIdList()), 1)
+      self.assertEqual(len(self.folder.objectIds()), 3)
+      # check params of objectIds in case of hbtree
+      self.assertEqual(len(self.folder.objectIds(base_id=None)), 0)
+      LOG("test", 300, "rien")
+      self.assertEqual(len(self.folder.objectValues()), 3)
+      LOG("test", 300, "base_id")
+      self.assertEqual(len(self.folder.objectValues(base_id=None)), 0)
+      # check object ids
+      from DateTime import DateTime
+      date = DateTime().Date()
+      date = date.replace("/", "")
+      self.assertEquals(obj1.getId(), '%s-1' %date)
+      self.assertEquals(obj2.getId(), '%s-2' %date)
+      self.assertEquals(obj3.getId(), '%s-3' %date)
+      # add object and check its id
+      obj4 = self.newContent()
+      self.assertEquals(obj4.getId().split('-')[0], date)
+
 def test_suite():
   suite = unittest.TestSuite()
   suite.addTest(unittest.makeSuite(TestFolderMigration))