diff --git a/master/product/Vifib/tests/testVifibOpenOrderSimulation.py b/master/product/Vifib/tests/testVifibOpenOrderSimulation.py
index bf1aa0b0527ad4dc8c8e5a8a23cf2f99064b5e21..d09c9d2228348f8bc47405c9c9075a37d0155cac 100644
--- a/master/product/Vifib/tests/testVifibOpenOrderSimulation.py
+++ b/master/product/Vifib/tests/testVifibOpenOrderSimulation.py
@@ -153,254 +153,48 @@ class TestVifibOpenOrderSimulation(TestVifibSlapWebServiceMixin):
       # no invoice movements on this level
       applied_rule_invoice_list = \
         simulation_movement.contentValues(portal_type="Applied Rule")
-#      self.assertEquals(0, len(applied_rule_invoice_list))
-#      applied_rule_invoice = \
-#        applied_rule_invoice_list[0].getObject()
-#      self.assertNotEquals(None, applied_rule_invoice)
-#      simulation_movement_invoice_list = \
-#        applied_rule_invoice.contentValues(portal_type="Simulation Movement")
-#      self.assertEquals(1, len(simulation_movement_invoice_list))
-#      simulation_movement_invoice = \
-#        simulation_movement_invoice_list[0].getObject()
-#      self.assertNotEquals(None, simulation_movement_invoice)
-#
-#      # not delivered yet
-#      self.assertEqual(None, simulation_movement_invoice.getDelivery())
-#      # invoice shall be not yet buildable
-#      self.assertFalse(False, simulation_movement_invoice.isBuildable())
-#
-#      # check property of invoice simulation
-#      self.assertEquals(1.0,
-#        simulation_movement_invoice.getQuantity())
-#      self.assertEquals("unit/piece",
-#        simulation_movement_invoice.getQuantityUnit())
-#      self.assertEquals(1.0,
-#        simulation_movement_invoice.getPrice())
-#      self.assertEquals("currency_module/EUR",
-#        simulation_movement_invoice.getPriceCurrency())
-#      self.assertEquals("organisation_module/vifib_internet",
-#        simulation_movement_invoice.getSource())
-#      self.assertEquals("organisation_module/vifib_internet",
-#        simulation_movement_invoice.getSourceSection())
-#      self.assertEquals("person_module/test_vifib_customer",
-#        simulation_movement_invoice.getDestination())
-#      self.assertEquals("person_module/test_vifib_customer",
-#        simulation_movement_invoice.getDestinationSection())
-#      self.assertEquals(open_order_line.getSpecialise(),
-#        simulation_movement_invoice.getSpecialise())
-#      self.assertEquals("service_module/vifib_instance_subscription",
-#        simulation_movement_invoice.getResource())
-#      self.assertEquals("vifib/invoicing",
-#        simulation_movement_invoice.getTradePhase())
-#      self.assertEquals(expected_start_date,
-#        simulation_movement_invoice.getStartDate())
-#      self.assertEquals(expected_stop_date,
-#        simulation_movement_invoice.getStopDate())
-#      self.assertEquals(None,
-#                        simulation_movement_invoice.getAggregate(
-#                          portal_type="Computer Partition"))
-#      self.assertEquals(None,
-#                        simulation_movement_invoice.getAggregate(
-#                          portal_type="Software Instance"))
-#      self.assertEquals(hosting_subscription.getRelativeUrl(),
-#                        simulation_movement_invoice.getAggregate(
-#                          portal_type="Hosting Subscription"))
-#      self.assertEquals(None,
-#                        simulation_movement_invoice.getAggregate(
-#                          portal_type="Software Release"))
-#
-#      # fetch invoice transaction level simulation, there are 2:
-#      # credit and debit, and resource should be currency
-#      applied_rule_invoice_transaction_list = \
-#        simulation_movement_invoice.contentValues(portal_type="Applied Rule")
-#      self.assertEquals(1, len(applied_rule_invoice_transaction_list))
-#      applied_rule_invoice_transaction = \
-#        applied_rule_invoice_transaction_list[0].getObject()
-#      self.assertNotEquals(None, applied_rule_invoice_transaction)
-#      simulation_movement_invoice_transaction_list = \
-#        applied_rule_invoice_transaction.contentValues(
-#          portal_type="Simulation Movement")
-#      self.assertEquals(2, len(simulation_movement_invoice_transaction_list))
-#      simulation_movement_invoice_transaction_credit = None
-#      simulation_movement_invoice_transaction_debit = None
-#      for simulation_movement_invoice_transaction in \
-#        simulation_movement_invoice_transaction_list:
-#        # not delivered nor buildable
-#        self.assertEqual(None, simulation_movement_invoice_transaction\
-#          .getDelivery())
-#        self.assertFalse(simulation_movement_invoice_transaction.isBuildable())
-#        if "business_process_module/vifib_sale_business_process/account_credit_path" \
-#          in simulation_movement_invoice_transaction.getCausalityList():
-#            simulation_movement_invoice_transaction_credit = \
-#              simulation_movement_invoice_transaction.getObject()
-#        if "business_process_module/vifib_sale_business_process/account_debit_path" \
-#          in simulation_movement_invoice_transaction.getCausalityList():
-#            simulation_movement_invoice_transaction_debit = \
-#              simulation_movement_invoice_transaction.getObject()
-#      self.assertNotEquals(None, simulation_movement_invoice_transaction_credit)
-#      # not delivered nor buildable
-#      self.assertEqual(None, simulation_movement_invoice_transaction_credit\
-#        .getDelivery())
-#      self.assertFalse(simulation_movement_invoice_transaction_credit\
-#        .isBuildable())
-#      self.assertNotEquals(None, simulation_movement_invoice_transaction_debit)
-#      # not delivered nor buildable
-#      self.assertEqual(None, simulation_movement_invoice_transaction_debit\
-#        .getDelivery())
-#      self.assertFalse(simulation_movement_invoice_transaction_debit\
-#        .isBuildable())
-#
-#      # check property of invoice transaction simulation
-#      self.assertEquals(-1.0,
-#        simulation_movement_invoice_transaction_credit.getQuantity())
-#      self.assertEquals("unit/piece",
-#        simulation_movement_invoice_transaction_credit.getQuantityUnit())
-#      self.assertEquals(1.0,
-#        simulation_movement_invoice_transaction_credit.getPrice())
-#      self.assertEquals(None,
-#        simulation_movement_invoice_transaction_credit.getPriceCurrency())
-#      self.assertEquals("account_module/sales",
-#        simulation_movement_invoice_transaction_credit.getSource())
-#      self.assertEquals("organisation_module/vifib_internet",
-#        simulation_movement_invoice_transaction_credit.getSourceSection())
-#      self.assertEquals("account_module/purchase",
-#        simulation_movement_invoice_transaction_credit.getDestination())
-#      self.assertEquals("person_module/test_vifib_customer",
-#        simulation_movement_invoice_transaction_credit.getDestinationSection())
-#      self.assertEquals("currency_module/EUR",
-#        simulation_movement_invoice_transaction_credit.getResource())
-#      self.assertEquals(open_order_line.getSpecialise(),
-#        simulation_movement_invoice_transaction_credit.getSpecialise())
-#      self.assertEquals("vifib/accounting",
-#        simulation_movement_invoice_transaction_credit.getTradePhase())
-#      self.assertEquals(expected_start_date,
-#        simulation_movement_invoice_transaction_credit.getStartDate())
-#      self.assertEquals(expected_stop_date,
-#        simulation_movement_invoice_transaction_credit.getStopDate())
-#
-#      self.assertEquals(1.0,
-#        simulation_movement_invoice_transaction_debit.getQuantity())
-#      self.assertEquals("unit/piece",
-#        simulation_movement_invoice_transaction_debit.getQuantityUnit())
-#      self.assertEquals(1.0,
-#        simulation_movement_invoice_transaction_debit.getPrice())
-#      self.assertEquals(None,
-#        simulation_movement_invoice_transaction_debit.getPriceCurrency())
-#      self.assertEquals("account_module/receivable",
-#        simulation_movement_invoice_transaction_debit.getSource())
-#      self.assertEquals("organisation_module/vifib_internet",
-#        simulation_movement_invoice_transaction_debit.getSourceSection())
-#      self.assertEquals("account_module/payable",
-#        simulation_movement_invoice_transaction_debit.getDestination())
-#      self.assertEquals("person_module/test_vifib_customer",
-#        simulation_movement_invoice_transaction_debit.getDestinationSection())
-#      self.assertEquals("currency_module/EUR",
-#        simulation_movement_invoice_transaction_debit.getResource())
-#      self.assertEquals(open_order_line.getSpecialise(),
-#        simulation_movement_invoice_transaction_debit.getSpecialise())
-#      self.assertEquals("vifib/accounting",
-#        simulation_movement_invoice_transaction_debit.getTradePhase())
-#      self.assertEquals(expected_start_date,
-#        simulation_movement_invoice_transaction_debit.getStartDate())
-#      self.assertEquals(expected_stop_date,
-#        simulation_movement_invoice_transaction_debit.getStopDate())
-#
-#      # credit simulation movement has no content
-#      self.assertEquals([],
-#        simulation_movement_invoice_transaction_credit.contentValues(
-#          portal_type="Applied Rule"))
-#
-#      # fetch payment level simulation
-#      applied_rule_credit_payment_list = \
-#        simulation_movement_invoice_transaction_debit.contentValues(
-#          portal_type="Applied Rule")
-#      self.assertEquals(1, len(applied_rule_credit_payment_list))
-#      applied_rule_credit_payment = \
-#        applied_rule_credit_payment_list[0].getObject()
-#      self.assertNotEquals(None, applied_rule_credit_payment)
-#      simulation_movement_credit_payment_list = \
-#        applied_rule_credit_payment.contentValues(
-#          portal_type="Simulation Movement")
-#      self.assertEquals(2, len(simulation_movement_credit_payment_list))
-#      simulation_movement_credit_payment_credit = None
-#      simulation_movement_credit_payment_debit = None
-#      for simulation_movement_credit_payment in \
-#        simulation_movement_credit_payment_list:
-#        if "business_process_module/vifib_sale_business_process/payment_credit_path" \
-#          in simulation_movement_credit_payment.getCausalityList():
-#            simulation_movement_credit_payment_credit = \
-#              simulation_movement_credit_payment.getObject()
-#        if "business_process_module/vifib_sale_business_process/payment_debit_path" \
-#          in simulation_movement_credit_payment.getCausalityList():
-#            simulation_movement_credit_payment_debit = \
-#              simulation_movement_credit_payment.getObject()
-#      self.assertNotEquals(None, simulation_movement_credit_payment_credit)
-#      # not delivered nor buildable
-#      self.assertEqual(None, simulation_movement_credit_payment_credit\
-#        .getDelivery())
-#      self.assertFalse(simulation_movement_credit_payment_credit\
-#        .isBuildable())
-#      self.assertNotEquals(None, simulation_movement_credit_payment_debit)
-#      # not delivered nor buildable
-#      self.assertEqual(None, simulation_movement_credit_payment_debit\
-#        .getDelivery())
-#      self.assertFalse(simulation_movement_credit_payment_debit\
-#        .isBuildable())
-#
-#      # check payment level of simulation
-#      self.assertEquals(-1.0,
-#        simulation_movement_credit_payment_credit.getQuantity())
-#      self.assertEquals("unit/piece",
-#        simulation_movement_credit_payment_credit.getQuantityUnit())
-#      self.assertEquals(1.0,
-#        simulation_movement_credit_payment_credit.getPrice())
-#      self.assertEquals("currency_module/EUR",
-#        simulation_movement_credit_payment_credit.getResource())
-#      self.assertEquals("account_module/receivable",
-#        simulation_movement_credit_payment_credit.getSource())
-#      self.assertEquals("organisation_module/vifib_internet",
-#        simulation_movement_credit_payment_credit.getSourceSection())
-#      self.assertEquals("account_module/payable",
-#        simulation_movement_credit_payment_credit.getDestination())
-#      self.assertEquals("person_module/test_vifib_customer",
-#        simulation_movement_credit_payment_credit.getDestinationSection())
-#      self.assertEquals(open_order_line.getSpecialise(),
-#        simulation_movement_credit_payment_credit.getSpecialise())
-#      self.assertEquals("vifib/payment",
-#        simulation_movement_credit_payment_credit.getTradePhase())
-#      self.assertEquals(expected_start_date,
-#        simulation_movement_credit_payment_credit.getStartDate())
-#      self.assertEquals(expected_stop_date,
-#        simulation_movement_credit_payment_credit.getStopDate())
-#
-#      self.assertEquals(1.0,
-#        simulation_movement_credit_payment_debit.getQuantity())
-#      self.assertEquals("unit/piece",
-#        simulation_movement_credit_payment_debit.getQuantityUnit())
-#      self.assertEquals(1.0,
-#        simulation_movement_credit_payment_debit.getPrice())
-#      self.assertEquals("currency_module/EUR",
-#        simulation_movement_credit_payment_debit.getResource())
-#      self.assertEquals("account_module/bank",
-#        simulation_movement_credit_payment_debit.getSource())
-#      self.assertEquals("organisation_module/vifib_internet",
-#        simulation_movement_credit_payment_debit.getSourceSection())
-#      self.assertEquals("account_module/bank",
-#        simulation_movement_credit_payment_debit.getDestination())
-#      self.assertEquals("person_module/test_vifib_customer",
-#        simulation_movement_credit_payment_debit.getDestinationSection())
-#      self.assertEquals(open_order_line.getSpecialise(),
-#        simulation_movement_credit_payment_debit.getSpecialise())
-#      self.assertEquals("vifib/payment",
-#        simulation_movement_credit_payment_debit.getTradePhase())
-#      self.assertEquals(expected_start_date,
-#        simulation_movement_credit_payment_debit.getStartDate())
-#      self.assertEquals(expected_stop_date,
-#        simulation_movement_credit_payment_debit.getStopDate())
-#
       # check next simulation movement
       idx += 1
 
+  def stepIncreaseOpenOrderCoverage(self, sequence, **kw):
+    person = self.portal.person_module['test_vifib_customer']
+    open_order = \
+      person.getDestinationDecisionRelatedValue(portal_type="Open Sale Order")
+    open_order_line_list = \
+      open_order.contentValues(portal_type="Open Sale Order Line")
+    self.assertEquals(1, len(open_order_line_list))
+    open_order_line = open_order_line_list[0]
+    open_order_line.setStopDate(getClosestDate(
+      target_date=open_order_line.getStartDate(), precision='month', before=0))
+    self.portal.portal_alarms.vifib_update_open_sale_order_line.activeSense(
+      params={'stop_date': addToDate(getClosestDate(target_date=DateTime(),
+        precision='month', before=1), month=3)})
+
+
+  def stepCheckThreeTopLevelSimulationMovement(self, sequence, **kw):
+    person = self.portal.person_module['test_vifib_customer']
+    open_order = \
+      person.getDestinationDecisionRelatedValue(portal_type="Open Sale Order")
+    open_order_line_list = \
+      open_order.contentValues(portal_type="Open Sale Order Line")
+    self.assertEquals(1, len(open_order_line_list))
+    open_order_line = open_order_line_list[0]
+    hosting_subscription = \
+      open_order_line.getAggregateValue(portal_type="Hosting Subscription")
+    applied_rule = \
+      hosting_subscription.getCausalityRelatedValue(portal_type="Applied Rule")
+    self.assertEquals(
+      "portal_rules/default_subscription_item_rule",
+      applied_rule.getSpecialise())
+    simulation_movement_list = self.portal.portal_catalog(
+      portal_type='Simulation Movement',
+      parent_uid=applied_rule.getUid(),
+      sort_on=(('movement.start_date', 'desc'),)
+    )
+    # Check that simulation is created by the periodicity for two months
+    self.assertEquals(3,
+                      len(simulation_movement_list))
+
   def test_OpenOrder_request_changeSoftwareType(self):
     """
     Check that requesting the same instance with a different software type
@@ -415,6 +209,12 @@ class TestVifibOpenOrderSimulation(TestVifibSlapWebServiceMixin):
       Tic
       SlapLogout
 
+      LoginERP5TypeTestCase
+      IncreaseOpenOrderCoverage
+      Tic
+      CheckThreeTopLevelSimulationMovement
+      Logout
+
       LoginTestVifibCustomer
       RequestSoftwareInstanceStart
       Tic
@@ -437,8 +237,6 @@ class TestVifibOpenOrderSimulation(TestVifibSlapWebServiceMixin):
     """
     sequence_list.addSequenceString(sequence_string)
     sequence_list.play(self)
-    raise NotImplementedError('Check using vifib_update_open_sale_order_line '
-      'alarm')
 
 def test_suite():
   suite = unittest.TestSuite()