diff -ru OLD/InventoryTransactionTypeAlgorithm.java NEW/InventoryTransactionTypeAlgorithm.java
--- a/modules/org.openbravo.warehouse.advancedwarehouseoperations/src/org/openbravo/warehouse/advancedwarehouseoperations/centralbroker/InventoryTransactionTypeAlgorithm.java	2020-01-21 13:01:06.000000000 +0100
+++ b/modules/org.openbravo.warehouse.advancedwarehouseoperations/src/org/openbravo/warehouse/advancedwarehouseoperations/centralbroker/InventoryTransactionTypeAlgorithm.java	2020-01-27 12:07:11.109629000 +0100
@@ -237,7 +237,8 @@
       init(baseOBObject_, mapObjects.get(id), action_, userAssignedId_, taskStatus_,
           extraParameters_ != null ? extraParameters_.get(id) : null, taskRequirementsCache_);
       validate();
-      tasksGenerator.run(getTaskRequirements());
+      tasksGenerator.run(getTaskRequirements(),
+          extraParameters_ != null ? extraParameters_.get(id) : null);
       batchOfTaskInfo.setInfo(getDocumentNumber(), getReferencedInventory(), getWarehouse());
     }
     batchOfTaskInfo.saveInfoIntoBatchOfTask();
diff -ru OLD/TasksGenerator.java NEW/TasksGenerator.java
--- a/modules/org.openbravo.warehouse.advancedwarehouseoperations/src/org/openbravo/warehouse/advancedwarehouseoperations/task/TasksGenerator.java	2020-01-21 13:01:06.000000000 +0100
+++ b/modules/org.openbravo.warehouse.advancedwarehouseoperations/src/org/openbravo/warehouse/advancedwarehouseoperations/task/TasksGenerator.java	2020-01-27 12:04:52.740152000 +0100
@@ -10,6 +10,7 @@
 package org.openbravo.warehouse.advancedwarehouseoperations.task;
 
 import java.util.List;
+import java.util.Map;
 
 import javax.enterprise.context.Dependent;
 import javax.inject.Inject;
@@ -62,6 +63,13 @@
     }
   }
 
+  public void run(final List<TaskRequirement> taskRequirements, Map<String, Object> extraParameters)
+      throws Exception {
+    if (hasTaskRequirement(taskRequirements)) {
+      createTasksAndRunsPostCreateTaskHookForEachTask(taskRequirements, extraParameters);
+    }
+  }
+
   private boolean hasTaskRequirement(final List<TaskRequirement> taskRequirements) {
     if (taskRequirements == null || taskRequirements.isEmpty()) {
       logLine(AWOVerbosityLevel.INFO, OBMessageUtils.messageBD("OBAWO_NoTasksGenerated"));
@@ -88,6 +96,33 @@
         postCreateTaskHookRunner.run();
         autoConfirmatorIndividualTask.setIttAlgorithm(ittAlgorithm);
         autoConfirmatorIndividualTask.run(task);
+        OBDal.getInstance().flush(); // Changes by PostCreateTaskHookRunner and
+                                     // AutoConfirmatorIndividualTask are not lost
+        OBDal.getInstance().getSession().clear();
+      }
+    }
+  }
+
+  private void createTasksAndRunsPostCreateTaskHookForEachTask(
+      final List<TaskRequirement> taskRequirements, Map<String, Object> extraParameters)
+      throws Exception {
+    for (final TaskRequirement taskRequirement : taskRequirements) {
+      final List<TaskProposalLocatorTo> taskProposalLocatorToList = getTaskProposalsLocatorTo(
+          taskRequirement);
+      for (final TaskProposalLocatorTo taskProposalLocatorTo : taskProposalLocatorToList) {
+        final OBAWOTask task = createTask(taskRequirement, taskProposalLocatorTo);
+        OBDal.getInstance().flush(); // Task is seen by DB and taken into account for following task
+        // requirements
+        postCreateTaskHookRunner.setIttAlgorithm(ittAlgorithm);
+        if (extraParameters != null) {
+          extraParameters.putAll(taskRequirement.getExtraParameters());
+          postCreateTaskHookRunner.setParameters(task, extraParameters);
+        } else {
+          postCreateTaskHookRunner.setParameters(task, taskRequirement.getExtraParameters());
+        }
+        postCreateTaskHookRunner.run();
+        autoConfirmatorIndividualTask.setIttAlgorithm(ittAlgorithm);
+        autoConfirmatorIndividualTask.run(task);
         OBDal.getInstance().flush(); // Changes by PostCreateTaskHookRunner and
                                      // AutoConfirmatorIndividualTask are not lost
         OBDal.getInstance().getSession().clear();
