diff --git a/haas-java-client/src/main/java/cz/it4i/fiji/haas_java_client/MidlewareTunnel.java b/haas-java-client/src/main/java/cz/it4i/fiji/haas_java_client/MidlewareTunnel.java
index ab3b862123c6997f5a01c6c8f17b8085535d57b4..0bade38db272dcfa913cecbc55fdc1f8f592087d 100644
--- a/haas-java-client/src/main/java/cz/it4i/fiji/haas_java_client/MidlewareTunnel.java
+++ b/haas-java-client/src/main/java/cz/it4i/fiji/haas_java_client/MidlewareTunnel.java
@@ -12,6 +12,7 @@ import java.net.SocketException;
 import java.net.SocketTimeoutException;
 import java.net.UnknownHostException;
 import java.nio.channels.Channels;
+import java.util.concurrent.CompletableFuture;
 import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Future;
@@ -181,12 +182,14 @@ class MidlewareTunnel implements Closeable {
 			}
 			sendEOF2Middleware();
 		} catch (InterruptedIOException e) {
+			log.error(e.getMessage(), e);
 			return;
 		} catch (SocketException e) {
 			if (!e.getMessage().equals("Socket closed")) {
 				log.error(e.getMessage(), e);
 			}
 		} catch (IOException e) {
+			log.error(e.getMessage(), e);
 			return;
 		} finally {
 			if (log.isDebugEnabled()) {
@@ -196,7 +199,7 @@ class MidlewareTunnel implements Closeable {
 	}
 
 	private void sendEOF2Middleware() {
-		dataTransfer.sendDataToJobNode(null, jobId, ipAddress, sessionCode);
+		dataTransfer.writeDataToJobNode(null, jobId, ipAddress, sessionCode, true);
 	}
 
 	private boolean sendToMiddleware(byte[] buffer, int len) {
@@ -211,7 +214,7 @@ class MidlewareTunnel implements Closeable {
 			} else {
 				sending = buffer;
 			}
-			int reallySend = dataTransfer.sendDataToJobNode(sending, jobId, ipAddress, sessionCode);
+			int reallySend = dataTransfer.writeDataToJobNode(sending, jobId, ipAddress, sessionCode, false);
 			if (reallySend == -1) {
 				return false;
 			}
@@ -292,7 +295,8 @@ class MidlewareTunnel implements Closeable {
 
 		private final Runnable[] runnable = new Runnable[2];
 
-		private final Future<?>[] futures = new Future[2];
+		
+		private final CompletableFuture<?>[] futures = new CompletableFuture[2];
 		
 		private final CountDownLatch latchFromClient = new CountDownLatch(1);
 		
@@ -318,13 +322,17 @@ class MidlewareTunnel implements Closeable {
 			
 			for (int i = 0; i < runnable.length; i++) {
 				int final_i = i;
-				futures[i] = executorService.submit(() -> {
+				futures[i] = CompletableFuture.runAsync(() -> {
 					runnable[final_i].run();
-					if(final_i == FROM_CLIENT) {
+				}, executorService).whenComplete((id,e) -> {
+					if (final_i == FROM_CLIENT) {
 						latchFromClient.countDown();
 					}
+
 					latchOfBothDirections.countDown();
-					return null;
+					if(e != null) {
+						log.error(e.getMessage(), e);
+					}
 				});
 			}
 
diff --git a/haas-java-client/src/main/resources/META-INF/wsdl/DataTransferWs.wsdl b/haas-java-client/src/main/resources/META-INF/wsdl/DataTransferWs.wsdl
index dfa4897e697c864092a25a99fc3d62cb97449a4b..d036153118e6cd2550d3395724e63fb4cb27a01c 100644
--- a/haas-java-client/src/main/resources/META-INF/wsdl/DataTransferWs.wsdl
+++ b/haas-java-client/src/main/resources/META-INF/wsdl/DataTransferWs.wsdl
@@ -37,20 +37,21 @@
       <s:element name="EndDataTransferResponse">
         <s:complexType/>
       </s:element>
-      <s:element name="SendDataToJobNode">
+      <s:element name="WriteDataToJobNode">
         <s:complexType>
           <s:sequence>
             <s:element minOccurs="0" maxOccurs="1" name="data" type="s:base64Binary"/>
             <s:element minOccurs="1" maxOccurs="1" name="submittedJobInfoId" type="s:long"/>
             <s:element minOccurs="0" maxOccurs="1" name="ipAddress" type="s:string"/>
             <s:element minOccurs="0" maxOccurs="1" name="sessionCode" type="s:string"/>
+            <s:element minOccurs="1" maxOccurs="1" name="closeConnection" type="s:boolean"/>
           </s:sequence>
         </s:complexType>
       </s:element>
-      <s:element name="SendDataToJobNodeResponse">
+      <s:element name="WriteDataToJobNodeResponse">
         <s:complexType>
           <s:sequence>
-            <s:element minOccurs="1" maxOccurs="1" name="SendDataToJobNodeResult" type="s:int"/>
+            <s:element minOccurs="1" maxOccurs="1" name="WriteDataToJobNodeResult" type="s:int"/>
           </s:sequence>
         </s:complexType>
       </s:element>
@@ -84,11 +85,11 @@
   <wsdl:message name="EndDataTransferSoapOut">
     <wsdl:part name="parameters" element="tns:EndDataTransferResponse"/>
   </wsdl:message>
-  <wsdl:message name="SendDataToJobNodeSoapIn">
-    <wsdl:part name="parameters" element="tns:SendDataToJobNode"/>
+  <wsdl:message name="WriteDataToJobNodeSoapIn">
+    <wsdl:part name="parameters" element="tns:WriteDataToJobNode"/>
   </wsdl:message>
-  <wsdl:message name="SendDataToJobNodeSoapOut">
-    <wsdl:part name="parameters" element="tns:SendDataToJobNodeResponse"/>
+  <wsdl:message name="WriteDataToJobNodeSoapOut">
+    <wsdl:part name="parameters" element="tns:WriteDataToJobNodeResponse"/>
   </wsdl:message>
   <wsdl:message name="ReadDataFromJobNodeSoapIn">
     <wsdl:part name="parameters" element="tns:ReadDataFromJobNode"/>
@@ -105,9 +106,9 @@
       <wsdl:input message="tns:EndDataTransferSoapIn"/>
       <wsdl:output message="tns:EndDataTransferSoapOut"/>
     </wsdl:operation>
-    <wsdl:operation name="SendDataToJobNode">
-      <wsdl:input message="tns:SendDataToJobNodeSoapIn"/>
-      <wsdl:output message="tns:SendDataToJobNodeSoapOut"/>
+    <wsdl:operation name="WriteDataToJobNode">
+      <wsdl:input message="tns:WriteDataToJobNodeSoapIn"/>
+      <wsdl:output message="tns:WriteDataToJobNodeSoapOut"/>
     </wsdl:operation>
     <wsdl:operation name="ReadDataFromJobNode">
       <wsdl:input message="tns:ReadDataFromJobNodeSoapIn"/>
@@ -134,8 +135,8 @@
         <soap:body use="literal"/>
       </wsdl:output>
     </wsdl:operation>
-    <wsdl:operation name="SendDataToJobNode">
-      <soap:operation soapAction="http://hpcaas.it4i.cz/SendDataToJobNode" style="document"/>
+    <wsdl:operation name="WriteDataToJobNode">
+      <soap:operation soapAction="http://hpcaas.it4i.cz/WriteDataToJobNode" style="document"/>
       <wsdl:input>
         <soap:body use="literal"/>
       </wsdl:input>
@@ -173,8 +174,8 @@
         <soap12:body use="literal"/>
       </wsdl:output>
     </wsdl:operation>
-    <wsdl:operation name="SendDataToJobNode">
-      <soap12:operation soapAction="http://hpcaas.it4i.cz/SendDataToJobNode" style="document"/>
+    <wsdl:operation name="WriteDataToJobNode">
+      <soap12:operation soapAction="http://hpcaas.it4i.cz/WriteDataToJobNode" style="document"/>
       <wsdl:input>
         <soap12:body use="literal"/>
       </wsdl:input>