diff --git a/bt5/erp5_computer_immobilisation/TestTemplateItem/testERP5ComputerWithComputerModel.py b/bt5/erp5_computer_immobilisation/TestTemplateItem/testERP5ComputerWithComputerModel.py
new file mode 100644
index 0000000000000000000000000000000000000000..f4b89c9d00df591c27e567d57f1b2db5129c3a13
--- /dev/null
+++ b/bt5/erp5_computer_immobilisation/TestTemplateItem/testERP5ComputerWithComputerModel.py
@@ -0,0 +1,137 @@
+# Copyright (c) 2012 Nexedi SA and Contributors. All Rights Reserved.
+import unittest
+from Products.ERP5Type.tests.ERP5TypeTestCase import ERP5TypeTestCase
+
+class TestERP5ComputerWithComputerModel(ERP5TypeTestCase):
+
+  def getBusinessTemplateList(self):
+    return [ 'erp5_base', 'erp5_computer_immobilisation' ]
+
+  def afterSetUp(self):
+    pass
+
+  def beforeTearDown(self):
+    pass
+
+  def newModel(self, **kw):
+    return self.portal.computer_model_module.newContent(
+      portal_type='Computer Model', **kw)
+
+  def newComputer(self, **kw):
+    return self.portal.computer_module.newContent(
+      portal_type='Computer', **kw)
+
+  def test_apply_model_empty_computer(self):
+    category_list = ['mana', 'mahna']
+    model = self.newModel(group=category_list)
+    computer = self.newComputer(specialise_value=model)
+    self.assertEqual(computer.getPropertyList('group'), [])
+    result = computer.Computer_applyComputerModel()
+    self.assertEqual(computer.getPropertyList('group'), category_list)
+    self.assertTrue('=Computer%20Model%20applied.' in result, result)
+
+  def test_apply_model_empty_computer_batch_mode(self):
+    category_list = ['mana', 'mahna']
+    model = self.newModel(group=category_list)
+    computer = self.newComputer(specialise_value=model)
+    self.assertEqual(computer.getPropertyList('group'), [])
+    result = computer.Computer_applyComputerModel(batch_mode=1)
+    self.assertEqual(computer.getPropertyList('group'), category_list)
+    self.assertTrue(result)
+
+  def test_apply_model_filled_computer(self):
+    computer_category_list = ['oink']
+    category_list = ['mana', 'mahna']
+    model = self.newModel(group=category_list)
+    computer = self.newComputer(specialise_value=model,
+      group=computer_category_list)
+    self.assertEqual(computer.getPropertyList('group'),
+      computer_category_list)
+    result = computer.Computer_applyComputerModel()
+    self.assertEqual(computer.getPropertyList('group'),
+      computer_category_list)
+    self.assertTrue('=No%20changes%20applied.' in result, result)
+
+  def test_apply_model_filled_computer_batch_mode(self):
+    computer_category_list = ['oink']
+    category_list = ['mana', 'mahna']
+    model = self.newModel(group=category_list)
+    computer = self.newComputer(specialise_value=model,
+      group=computer_category_list)
+    self.assertEqual(computer.getPropertyList('group'),
+      computer_category_list)
+    result = computer.Computer_applyComputerModel()
+    self.assertEqual(computer.getPropertyList('group'),
+      computer_category_list)
+    self.assertTrue(result)
+
+  def test_apply_model_filled_computer_forced(self):
+    computer_category_list = ['oink']
+    category_list = ['mana', 'mahna']
+    model = self.newModel(group=category_list)
+    computer = self.newComputer(specialise_value=model,
+      group=computer_category_list)
+    self.assertEqual(computer.getPropertyList('group'),
+      computer_category_list)
+    result = computer.Computer_applyComputerModel(force=1)
+    self.assertEqual(computer.getPropertyList('group'),
+      category_list)
+    self.assertTrue('=Computer%20Model%20applied.' in result, result)
+
+  def test_apply_model_filled_computer_force_batch_mode(self):
+    computer_category_list = ['oink']
+    category_list = ['mana', 'mahna']
+    model = self.newModel(group=category_list)
+    computer = self.newComputer(specialise_value=model,
+      group=computer_category_list)
+    self.assertEqual(computer.getPropertyList('group'),
+      computer_category_list)
+    result = computer.Computer_applyComputerModel(force=1, batch_mode=1)
+    self.assertEqual(computer.getPropertyList('group'),
+      category_list)
+    self.assertTrue(result)
+
+  def test_apply_no_model(self):
+    computer = self.newComputer()
+    result = computer.Computer_applyComputerModel()
+    self.assertTrue('=No%20Computer%20Model.' in result, result)
+
+  def test_apply_no_model_batch_mode(self):
+    computer = self.newComputer()
+    result = computer.Computer_applyComputerModel(batch_mode=1)
+    self.assertEqual(False, result)
+
+  def test_category_coverage(self):
+    category_dict = {
+      'allocation_scope': ['allocation_scope1', 'allocation_scope2'],
+      'cpu_core': ['cpu_core1', 'cpu_core2'],
+      'cpu_frequency': ['cpu_frequency1', 'cpu_frequency2'],
+      'cpu_type': ['cpu_type1', 'cpu_type2'],
+      'function': ['function1', 'function2'],
+      'group': ['group1', 'group2'],
+      'local_area_network_type': ['local_area_network_type1',
+        'local_area_network_type2'],
+      'memory_size': ['memory_size1', 'memory_size2'],
+      'memory_type': ['memory_type1', 'memory_type2'],
+      'product_line': ['product_line1', 'product_line2'],
+      'role': ['role1', 'role2'],
+      'storage_capacity': ['storage_capacity1', 'storage_capacity2'],
+      'storage_interface': ['storage_interface1', 'storage_interface2'],
+      'storage_redundancy': ['storage_redundancy1', 'storage_redundancy2'],
+    }
+    model = self.newModel(**category_dict)
+
+    category_list = []
+    for k, v in category_dict.iteritems():
+      for l in v:
+        category_list.append('%s/%s' % (k,l))
+    category_list.append('specialise/%s' % model.getRelativeUrl())
+    computer = self.newComputer(specialise_value=model)
+    result = computer.Computer_applyComputerModel()
+    self.assertSameSet(category_list, computer.getCategoryList())
+    self.assertTrue('=Computer%20Model%20applied.', result)
+
+def test_suite():
+  suite = unittest.TestSuite()
+  suite.addTest(unittest.makeSuite(TestERP5ComputerWithComputerModel))
+  return suite
diff --git a/bt5/erp5_computer_immobilisation/bt/revision b/bt5/erp5_computer_immobilisation/bt/revision
index abc4eff6ac83026669840d289fce80cc9a42baaa..801f1801027f3350b08ad85c984db805cd32e736 100644
--- a/bt5/erp5_computer_immobilisation/bt/revision
+++ b/bt5/erp5_computer_immobilisation/bt/revision
@@ -1 +1 @@
-46
\ No newline at end of file
+47
\ No newline at end of file
diff --git a/bt5/erp5_computer_immobilisation/bt/template_test_id_list b/bt5/erp5_computer_immobilisation/bt/template_test_id_list
new file mode 100644
index 0000000000000000000000000000000000000000..8a8bafc553c4398b6d9f60997283562666380233
--- /dev/null
+++ b/bt5/erp5_computer_immobilisation/bt/template_test_id_list
@@ -0,0 +1 @@
+testERP5ComputerWithComputerModel
\ No newline at end of file