Index: src/main/java/org/ow2/petals/bc/filetransfer/listeners/FileTransferJBIListener.java
===================================================================
--- workspace/petals-trunk/components-sls/components/petals-bc-filetransfer/src/main/java/org/ow2/petals/bc/filetransfer/listeners/FileTransferJBIListener.java	(revision 41443)
+++ workspace/petals-trunk/components-sls/components/petals-bc-filetransfer/src/main/java/org/ow2/petals/bc/filetransfer/listeners/FileTransferJBIListener.java	(working copy)
@@ -17,13 +17,11 @@
  */
 package org.ow2.petals.bc.filetransfer.listeners;
 
-import java.io.File;
 import java.util.logging.Level;
 
 import javax.jbi.messaging.MessagingException;
 import javax.xml.namespace.QName;
 
-import org.ow2.petals.bc.filetransfer.FileTransferComponent;
 import org.ow2.petals.bc.filetransfer.FileTransferConstants;
 import org.ow2.petals.bc.filetransfer.service.provide.AbstractFileService;
 import org.ow2.petals.bc.filetransfer.service.provide.CheckFileService;
@@ -34,10 +32,8 @@
 import org.ow2.petals.bc.filetransfer.service.provide.MGetFileService;
 import org.ow2.petals.bc.filetransfer.service.provide.MPutFileService;
 import org.ow2.petals.bc.filetransfer.service.provide.PutFileService;
-import org.ow2.petals.commons.log.PetalsExecutionContext;
 import org.ow2.petals.component.framework.api.message.Exchange;
 import org.ow2.petals.component.framework.listener.AbstractJBIListener;
-import org.ow2.petals.component.framework.logger.StepLogHelper;
 
 import com.ebmwebsourcing.easycommons.lang.StringHelper;
 
@@ -60,18 +56,6 @@
             if (exchange.isActiveStatus()) {
                 this.processActiveExchange(exchange);
             }
-        } else {
-            final File transferedfile = ((FileTransferComponent) getComponent()).getTransferedFile(exchange);
-            if (transferedfile != null) {
-                this.getLogger().fine("Received acknowledgment '" + exchange.getStatus().toString()
-                        + "' for transfered file '" + transferedfile.getAbsolutePath() + "'. Delete it");
-                StepLogHelper.addMonitExtEndOrFailureTrace(this.getLogger(), exchange.getMessageExchange(),
-                        PetalsExecutionContext.getFlowAttributes(), true);
-                if (!transferedfile.delete()) {
-                    this.getLogger().log(Level.WARNING,
-                            "Failed to delete file '" + transferedfile.getAbsolutePath() + "'");
-                }
-            }
         }
         return true;
     }
Index: src/main/java/org/ow2/petals/bc/filetransfer/service/consume/ExternalEventProcessor.java
===================================================================
--- workspace/petals-trunk/components-sls/components/petals-bc-filetransfer/src/main/java/org/ow2/petals/bc/filetransfer/service/consume/ExternalEventProcessor.java	(revision 41443)
+++ workspace/petals-trunk/components-sls/components/petals-bc-filetransfer/src/main/java/org/ow2/petals/bc/filetransfer/service/consume/ExternalEventProcessor.java	(working copy)
@@ -23,7 +23,6 @@
 
 import org.apache.commons.io.FileUtils;
 import org.ow2.easywsdl.wsdl.api.abstractItf.AbsItfOperation.MEPPatternConstants;
-import org.ow2.petals.bc.filetransfer.FileTransferComponent;
 import org.ow2.petals.bc.filetransfer.FileTransferConstants.TransfertMode;
 import org.ow2.petals.bc.filetransfer.FileTransferConsumeFlowStepBeginLogData;
 import org.ow2.petals.bc.filetransfer.listeners.FileTransferExternalListener;
@@ -138,9 +137,27 @@
                 FileTransferUtils.addFileAsAttachment(backupFile, fileName, exchange.getInMessage());
             }
 
-            this.consumeContext.send(exchange);
-            if (this.configuration.getBackupDirectory() == null) {
-                ((FileTransferComponent) this.consumeContext.getComponent()).addTransferedFile(exchange, backupFile);
+            // To process files by block, it is needed to use a synchronous send, otherwise the task will end just after
+            // to have send the exchange, not including service provider processing.
+            if (this.consumeContext.sendSync(exchange)) {
+                this.logger.fine(String.format("Received acknowledgment '%s' for transfered file '%s'. Delete it",
+                        exchange.getStatus().toString(), backupFile.getAbsolutePath()));
+                StepLogHelper.addMonitExtEndOrFailureTrace(logger, exchange.getMessageExchange(),
+                        PetalsExecutionContext.getFlowAttributes(), true);
+                if (this.configuration.getBackupDirectory() == null) {
+                    if (!backupFile.delete()) {
+                        this.logger.log(Level.WARNING,
+                                String.format("Failed to delete file '%s'", backupFile.getAbsolutePath()));
+                    }
+                }
+
+                if (exchange.isInOutPattern() || (exchange.isRobustInOnlyPattern() && exchange.isFaultMessage())) {
+                    exchange.setDoneStatus();
+                    this.consumeContext.send(exchange);
+                }
+            } else {
+                StepLogHelper.addMonitExtFailureTrace(this.logger, flowAttributes,
+                        String.format("A time out occurs processing file: %s", fileName), true);
             }
         } catch (final Exception me) {
             this.logger.log(Level.WARNING, "Can't process file " + fileName, me);
Index: src/main/java/org/ow2/petals/bc/filetransfer/FileTransferComponent.java
===================================================================
--- workspace/petals-trunk/components-sls/components/petals-bc-filetransfer/src/main/java/org/ow2/petals/bc/filetransfer/FileTransferComponent.java	(revision 41443)
+++ workspace/petals-trunk/components-sls/components/petals-bc-filetransfer/src/main/java/org/ow2/petals/bc/filetransfer/FileTransferComponent.java	(working copy)
@@ -17,15 +17,12 @@
  */
 package org.ow2.petals.bc.filetransfer;
 
-import java.io.File;
-import java.util.HashMap;
 import java.util.Map;
 import java.util.Map.Entry;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.Future;
 
 import org.ow2.petals.bc.filetransfer.listeners.FileTransferExternalListener;
-import org.ow2.petals.component.framework.api.message.Exchange;
 import org.ow2.petals.component.framework.bc.AbstractBindingComponent;
 import org.ow2.petals.component.framework.bc.BindingComponentServiceUnitManager;
 import org.ow2.petals.component.framework.listener.AbstractExternalListener;
@@ -45,12 +42,6 @@
      */
     private final Map<String, Future<?>> pendingProcessors = new ConcurrentHashMap<>();
 
-    private Map<String, File> transferedFileMap = new HashMap<>();
-
-    public void addTransferedFile(final Exchange exchange, final File file) {
-        this.transferedFileMap.put(exchange.getExchangeId(), file);
-    }
-
     /**
      * Remove from the map all done and cancelled task
      */
@@ -66,10 +57,6 @@
         return this.pendingProcessors;
     }
 
-    public File getTransferedFile(final Exchange exchange) {
-        return this.transferedFileMap.remove(exchange.getExchangeId());
-    }
-
     @Override
     protected AbstractServiceUnitManager createServiceUnitManager() {
         return new BindingComponentServiceUnitManager(this) {
