diff --git a/product/ERP5/Document/BPMBuilder.py b/product/ERP5/Document/BPMBuilder.py
index e4201175c05012f651100471327b7809e49394d2..e86cc19cedbff1b075b6191cc518df88e742d0ff 100644
--- a/product/ERP5/Document/BPMBuilder.py
+++ b/product/ERP5/Document/BPMBuilder.py
@@ -82,7 +82,7 @@ class BPMBuilder(Alarm):
 
   security.declareProtected(Permissions.View, 'build')
   def build(self, tag=None, input_movement_list=None,
-        existing_delivery_list=None, select_method_dict=None, **kwargs):
+            existing_delivery_list=None, select_method_dict=None, **kwargs):
     """Builds document according to self configuration mixed with passed parameters
 
     Selecting parameters (like input movement list) might be passed directly
@@ -109,9 +109,13 @@ class BPMBuilder(Alarm):
         delivery_relative_url_list=existing_delivery_list,
         **select_method_dict)
     else:
-      # movements were passed directly
-      input_movement_value_list = [self.unrestrictedTraverse(relative_url) for
-          relative_url in input_movement_list]
+      # movements were passed directly either by url or by value
+      if isinstance(input_movement_list[0], str):
+        input_movement_value_list = [self.unrestrictedTraverse(relative_url) for
+                                     relative_url in input_movement_list]
+      else:
+        input_movement_value_list = input_movement_list
+        
     # Collect
     root_group_node = self.collectMovement(input_movement_value_list)
     # Build