diff --git a/product/ERP5/tests/testOrder.py b/product/ERP5/tests/testOrder.py
index d60557817a3695320cead666ebba5d64bfea6938..e23d6d08a5c5cf1fc4386d43cdcd52698eac51db 100644
--- a/product/ERP5/tests/testOrder.py
+++ b/product/ERP5/tests/testOrder.py
@@ -2840,6 +2840,66 @@ class TestOrder(TestOrderMixin, ERP5TypeTestCase):
 
   # TODO: test with cells ?
 
+  def test_subcontent_reindexing(self):
+    """Tests, that modification on Order are propagated to lines and cells
+    during reindxation"""
+    organisation1 = self.portal.organisation_module.newContent(
+                              portal_type='Organisation')
+    organisation2 = self.portal.organisation_module.newContent(
+                              portal_type='Organisation')
+    order = self.portal.getDefaultModule(self.order_portal_type).newContent(
+                              portal_type=self.order_portal_type,
+                              source_value=organisation1)
+    order_line = order.newContent(portal_type=self.order_line_portal_type)
+    inner_order_line = order.newContent(portal_type=self.order_line_portal_type
+        ).newContent(portal_type=self.order_line_portal_type)
+    order_cell = order.newContent(portal_type=self.order_line_portal_type)\
+        .newContent(portal_type=self.order_cell_portal_type)
+    self.stepTic()
+    # self-tests...
+    # ...assertions of acquisition
+    source, source_uid = order.getSource(), order.getSourceUid()
+    self.assertEqual(source, order_line.getSource())
+    self.assertEqual(source, inner_order_line.getSource())
+    self.assertEqual(source, order_cell.getSource())
+    # ...assertions that only acquisition is used
+    self.assertFalse('source/'+source in order_line.getCategoryList())
+    self.assertFalse('source/'+source in inner_order_line.getCategoryList())
+    self.assertFalse('source/'+source in order_cell.getCategoryList())
+    # ...assertions that they are movement
+    self.assertTrue(order_line.isMovement())
+    self.assertTrue(order_cell.isMovement())
+    self.assertTrue(inner_order_line.isMovement())
+    # real assertions
+    kw = {"movement.source_uid":source_uid}
+    catalog_tool = self.portal.portal_catalog
+    self.assertEqual(1, len(catalog_tool(uid=order.getUid(),
+      source_relative_url=source)))
+    self.assertEqual(1, len(catalog_tool(uid=order_line.getUid(), **kw)))
+    self.assertEqual(1, len(catalog_tool(uid=inner_order_line.getUid(), **kw)))
+    self.assertEqual(1, len(catalog_tool(uid=order_cell.getUid(), **kw)))
+
+    # change to different source
+    order.setSourceValue(organisation2)
+    self.stepTic()
+
+    # ...assertions of acquisition
+    source, source_uid = order.getSource(), order.getSourceUid()
+    self.assertEqual(source, order_line.getSource())
+    self.assertEqual(source, inner_order_line.getSource())
+    self.assertEqual(source, order_cell.getSource())
+    # ...assertions that only acquisition is used
+    self.assertFalse('source/'+source in order_line.getCategoryList())
+    self.assertFalse('source/'+source in inner_order_line.getCategoryList())
+    self.assertFalse('source/'+source in order_cell.getCategoryList())
+    # real assertions
+    kw = {"movement.source_uid":source_uid}
+    catalog_tool = self.portal.portal_catalog
+    self.assertEqual(1, len(catalog_tool(uid=order.getUid(),
+      source_relative_url=source)))
+    self.assertEqual(1, len(catalog_tool(uid=order_line.getUid(), **kw)))
+    self.assertEqual(1, len(catalog_tool(uid=inner_order_line.getUid(), **kw)))
+    self.assertEqual(1, len(catalog_tool(uid=order_cell.getUid(), **kw)))
 
 def test_suite():
   suite = unittest.TestSuite()