diff --git a/Rakefile b/Rakefile
index 12bde6f7944649d84dfac1f9d76d9b1b1e7568e7..a6312f067fb46e2868afb78e2fb6f6659e6df615 100644
--- a/Rakefile
+++ b/Rakefile
@@ -608,18 +608,18 @@ task :deb_info do |f, args|
 ## When you package is ready, you will need to:
 ### Push upstream and merge modifications and tags
  First, push your changes on the master or 3.X branch. EXAMPLES:
-  git push origin master:refs/for/master
-  OR git push origin 3.2:refs/for/3.2
+  git push origin master
+  OR git push origin 3.2
  Then:
-  git push origin upstream#{suff}:refs/for/upstream#{suff}
-  git push origin debian#{suff}:refs/for/debian#{suff}
-  git push origin #{tag_version}:refs/tags/#{tag_version}
-  git push origin pristine-tar#{suff}:refs/for/pristine-tar#{suff}
-  git push origin upstream#{suff}/#{tag_version}:refs/tags/upstream#{suff}/#{tag_version}
+  git push origin upstream#{suff}
+  git push origin debian#{suff}
+  git push origin #{tag_version}
+  git push origin pristine-tar#{suff}
+  git push origin upstream#{suff}/#{tag_version}
 ### After the packaging work, tag the final Debian package, push the tag:
   git commit -m "Update Debian changelog for #{deb_version}" debian/changelog
   git-buildpackage --git-tag-only --git-no-hooks --git-ignore-new
-  git push origin debian#{suff}/#{tag_version}-1:refs/tags/debian#{suff}/#{tag_version}-1
+  git push origin debian#{suff}/#{tag_version}-1
 ### If you want to build a -dev package, use:
   DEB_BUILD_OPTIONS=devpkg=dev git-buildpackage -us -uc
 EOF
diff --git a/conf/version b/conf/version
index c28f5292427210f2ceb04f5e293e9a23e797df7f..e80871977d49607069d17bdb132986509d85edc1 100644
--- a/conf/version
+++ b/conf/version
@@ -1 +1 @@
-3.3.9.stable
+3.3.10.stable
diff --git a/doc/Kadeploy-3.3.9.stable.pdf b/doc/Kadeploy-3.3.10.stable.pdf
similarity index 80%
rename from doc/Kadeploy-3.3.9.stable.pdf
rename to doc/Kadeploy-3.3.10.stable.pdf
index a4bd41f04fd196072d53cab2a35083f9f38ef851..7ae3da77f2ff24c71c00ad54a6d9b94e94276694 100644
Binary files a/doc/Kadeploy-3.3.9.stable.pdf and b/doc/Kadeploy-3.3.10.stable.pdf differ
diff --git a/doc/api/api_specs-3.3.9.stable.html b/doc/api/api_specs-3.3.10.stable.html
similarity index 97%
rename from doc/api/api_specs-3.3.9.stable.html
rename to doc/api/api_specs-3.3.10.stable.html
index a0d52fe252b48f28e999e0ed587fe79ea05b6f16..84e59931cb8d4f6ad5d50705e2d7cb2dd8467194 100644
--- a/doc/api/api_specs-3.3.9.stable.html
+++ b/doc/api/api_specs-3.3.10.stable.html
@@ -1,4 +1,4 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"><HTML><HEAD><TITLE>Kadeploy 3.3.9.stable REST API specifications</TITLE><LINK rel="stylesheet" type="text/css" href="api.css"></HEAD><BODY><DIV class="apidoc_frame"><H1 class="apidoc_title"><A class="apidoc_title_link" id="title">Kadeploy 3.3.9.stable REST API specifications</A></H1><DIV class="apidoc_index_frame"><UL class="apidoc_index_list"><LI><A class="apidoc_index_link" href="#intro">Introduction</A></LI><UL class="operation_index_list"><LI><A class="intro_index_link" href="#request_parameters">Request's parameters</A></LI><LI><A class="intro_index_link" href="#output_type">Output type and encoding</A></LI><LI><A class="intro_index_link" href="#Global parameters">Global parameters</A></LI><LI><A class="intro_index_link" href="#Authentication">Authentication</A></LI><LI><A class="intro_index_link" href="#Errors management">Errors management</A></LI><LI><A class="intro_index_link" href="#workflow_operations">Workflow based operations</A></LI><LI><A class="intro_index_link" href="#file_export">Exporting files for the server</A></LI><LI><A class="intro_index_link" href="#API documentation notations">API documentation notations</A></LI></UL><LI><A class="apidoc_index_link" href="#Workflow-based operations">Workflow-based operations</A></LI><UL class="operation_index_list"><LI><A class="operation_index_link" href="#POST/%OPERATION"><SPAN class="resource_id_method_POST">POST</SPAN> <SPAN class="resource_id_path">/%OPERATION</SPAN></A></LI><LI><A class="operation_index_link" href="#GET/%OPERATION"><SPAN class="resource_id_method_GET">GET</SPAN> <SPAN class="resource_id_path">/%OPERATION</SPAN></A></LI><LI><A class="operation_index_link" href="#GET/%OPERATION/:id"><SPAN class="resource_id_method_GET">GET</SPAN> <SPAN class="resource_id_path">/%OPERATION/:id</SPAN></A></LI><LI><A class="operation_index_link" href="#GET/%OPERATION/:id/logs/:cluster?"><SPAN class="resource_id_method_GET">GET</SPAN> <SPAN class="resource_id_path">/%OPERATION/:id/logs/:cluster?</SPAN></A></LI><LI><A class="operation_index_link" href="#GET/%OPERATION/:id/debugs/:node?"><SPAN class="resource_id_method_GET">GET</SPAN> <SPAN class="resource_id_path">/%OPERATION/:id/debugs/:node?</SPAN></A></LI><LI><A class="operation_index_link" href="#GET/%OPERATION/:id/state"><SPAN class="resource_id_method_GET">GET</SPAN> <SPAN class="resource_id_path">/%OPERATION/:id/state</SPAN></A></LI><LI><A class="operation_index_link" href="#GET/%OPERATION/:id/status"><SPAN class="resource_id_method_GET">GET</SPAN> <SPAN class="resource_id_path">/%OPERATION/:id/status</SPAN></A></LI><LI><A class="operation_index_link" href="#GET/%OPERATION/:id/error"><SPAN class="resource_id_method_GET">GET</SPAN> <SPAN class="resource_id_path">/%OPERATION/:id/error</SPAN></A></LI><LI><A class="operation_index_link" href="#DELETE/%OPERATION/:id"><SPAN class="resource_id_method_DELETE">DELETE</SPAN> <SPAN class="resource_id_path">/%OPERATION/:id</SPAN></A></LI></UL><LI><A class="apidoc_index_link" href="#Reboot operations">Reboot operations</A></LI><UL class="operation_index_list"><LI><A class="operation_index_link" href="#POST/reboot"><SPAN class="resource_id_method_POST">POST</SPAN> <SPAN class="resource_id_path">/reboot</SPAN></A></LI></UL><LI><A class="apidoc_index_link" href="#Rights management">Rights management</A></LI><UL class="operation_index_list"><LI><A class="operation_index_link" href="#POST/rights"><SPAN class="resource_id_method_POST">POST</SPAN> <SPAN class="resource_id_path">/rights</SPAN></A></LI><LI><A class="operation_index_link" href="#GET/rights/:username?/:node?"><SPAN class="resource_id_method_GET">GET</SPAN> <SPAN class="resource_id_path">/rights/:username?/:node?</SPAN></A></LI><LI><A class="operation_index_link" href="#PUT/rights/:username?/:node?"><SPAN class="resource_id_method_PUT">PUT</SPAN> <SPAN class="resource_id_path">/rights/:username?/:node?</SPAN></A></LI><LI><A class="operation_index_link" href="#DELETE/rights/:username/:node?/:partition?"><SPAN class="resource_id_method_DELETE">DELETE</SPAN> <SPAN class="resource_id_path">/rights/:username/:node?/:partition?</SPAN></A></LI></UL><LI><A class="apidoc_index_link" href="#Statistics">Statistics</A></LI><UL class="operation_index_list"><LI><A class="operation_index_link" href="#GET/stats/%OPERATION?"><SPAN class="resource_id_method_GET">GET</SPAN> <SPAN class="resource_id_path">/stats/%OPERATION?</SPAN></A></LI></UL><LI><A class="apidoc_index_link" href="#Nodes information">Nodes information</A></LI><UL class="operation_index_list"><LI><A class="operation_index_link" href="#GET/nodes/:nodename?"><SPAN class="resource_id_method_GET">GET</SPAN> <SPAN class="resource_id_path">/nodes/:nodename?</SPAN></A></LI></UL><LI><A class="apidoc_index_link" href="#Environments management">Environments management</A></LI><UL class="operation_index_list"><LI><A class="operation_index_link" href="#POST/environments"><SPAN class="resource_id_method_POST">POST</SPAN> <SPAN class="resource_id_path">/environments</SPAN></A></LI><LI><A class="operation_index_link" href="#GET/environments?username=:username?&amp;amp;name=:name?&amp;amp;version=:version?"><SPAN class="resource_id_method_GET">GET</SPAN> <SPAN class="resource_id_path">/environments?username=:username?&name=:name?&version=:version?</SPAN></A></LI><LI><A class="operation_index_link" href="#PUT/environments/:username/:name/:version?"><SPAN class="resource_id_method_PUT">PUT</SPAN> <SPAN class="resource_id_path">/environments/:username/:name/:version?</SPAN></A></LI><LI><A class="operation_index_link" href="#PUT/environments/:username?/:name?/:version?"><SPAN class="resource_id_method_PUT">PUT</SPAN> <SPAN class="resource_id_path">/environments/:username?/:name?/:version?</SPAN></A></LI><LI><A class="operation_index_link" href="#DELETE/environments/:username/:name/:version?"><SPAN class="resource_id_method_DELETE">DELETE</SPAN> <SPAN class="resource_id_path">/environments/:username/:name/:version?</SPAN></A></LI></UL><LI><A class="apidoc_index_link" href="#Global information">Global information</A></LI><UL class="operation_index_list"><LI><A class="operation_index_link" href="#GET/clusters"><SPAN class="resource_id_method_GET">GET</SPAN> <SPAN class="resource_id_path">/clusters</SPAN></A></LI><LI><A class="operation_index_link" href="#GET/auth_headers_prefix"><SPAN class="resource_id_method_GET">GET</SPAN> <SPAN class="resource_id_path">/auth_headers_prefix</SPAN></A></LI><LI><A class="operation_index_link" href="#GET/info"><SPAN class="resource_id_method_GET">GET</SPAN> <SPAN class="resource_id_path">/info</SPAN></A></LI><LI><A class="operation_index_link" href="#GET/version"><SPAN class="resource_id_method_GET">GET</SPAN> <SPAN class="resource_id_path">/version</SPAN></A></LI></UL><LI><A class="apidoc_index_link" href="#Deployment">Deployment</A></LI><UL class="operation_index_list"><LI><A class="operation_index_link" href="#POST/deployment"><SPAN class="resource_id_method_POST">POST</SPAN> <SPAN class="resource_id_path">/deployment</SPAN></A></LI></UL><LI><A class="apidoc_index_link" href="#Console">Console</A></LI><UL class="operation_index_list"><LI><A class="operation_index_link" href="#POST/console"><SPAN class="resource_id_method_POST">POST</SPAN> <SPAN class="resource_id_path">/console</SPAN></A></LI><LI><A class="operation_index_link" href="#GET/console"><SPAN class="resource_id_method_GET">GET</SPAN> <SPAN class="resource_id_path">/console</SPAN></A></LI><LI><A class="operation_index_link" href="#GET/console/:id"><SPAN class="resource_id_method_GET">GET</SPAN> <SPAN class="resource_id_path">/console/:id</SPAN></A></LI><LI><A class="operation_index_link" href="#GET/console/:id/error"><SPAN class="resource_id_method_GET">GET</SPAN> <SPAN class="resource_id_path">/console/:id/error</SPAN></A></LI><LI><A class="operation_index_link" href="#DELETE/console/:id"><SPAN class="resource_id_method_DELETE">DELETE</SPAN> <SPAN class="resource_id_path">/console/:id</SPAN></A></LI></UL><LI><A class="apidoc_index_link" href="#Power operations">Power operations</A></LI><UL class="operation_index_list"><LI><A class="operation_index_link" href="#PUT/power"><SPAN class="resource_id_method_PUT">PUT</SPAN> <SPAN class="resource_id_path">/power</SPAN></A></LI><LI><A class="operation_index_link" href="#GET/power"><SPAN class="resource_id_method_GET">GET</SPAN> <SPAN class="resource_id_path">/power</SPAN></A></LI></UL></UL></DIV><HR class="apidoc_index_sep"><DIV class="intro_frame"><H1 class="intro_title"><A class="intro_title_link" id="intro">Introduction</A></H1><DIV class="section_frame"><H2 class="section_title"><A id="request_parameters">Request's parameters</A></H2><P class="section_paragraph">There is several ways to specify parameters when using the network API. Parameters can be specified in the query's URI parameter but also in the query's body. Remark: it's only possible to use String and Array data structures when specifying parameters using the query's URI to specify more advanced parameters (Numbers, Hashs, ...) it's necessary to specify the parameters using a more advanced description language (JSON/YAML) in the query's body.</P><P class="section_paragraph">The following examples are equivalent:</P><P class="section_paragraph"><B>Specifying parameters in the query's URI</B></P><P class="section_paragraph"><PRE class="code_sample">      POST /deploy?nodes=node-1.testbed.lan&nodes=node-2.testbed.lan HTTP/1.1
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"><HTML><HEAD><TITLE>Kadeploy 3.3.10.stable REST API specifications</TITLE><LINK rel="stylesheet" type="text/css" href="api.css"></HEAD><BODY><DIV class="apidoc_frame"><H1 class="apidoc_title"><A class="apidoc_title_link" id="title">Kadeploy 3.3.10.stable REST API specifications</A></H1><DIV class="apidoc_index_frame"><UL class="apidoc_index_list"><LI><A class="apidoc_index_link" href="#intro">Introduction</A></LI><UL class="operation_index_list"><LI><A class="intro_index_link" href="#request_parameters">Request's parameters</A></LI><LI><A class="intro_index_link" href="#output_type">Output type and encoding</A></LI><LI><A class="intro_index_link" href="#Global parameters">Global parameters</A></LI><LI><A class="intro_index_link" href="#Authentication">Authentication</A></LI><LI><A class="intro_index_link" href="#Errors management">Errors management</A></LI><LI><A class="intro_index_link" href="#workflow_operations">Workflow based operations</A></LI><LI><A class="intro_index_link" href="#file_export">Exporting files for the server</A></LI><LI><A class="intro_index_link" href="#API documentation notations">API documentation notations</A></LI></UL><LI><A class="apidoc_index_link" href="#Workflow-based operations">Workflow-based operations</A></LI><UL class="operation_index_list"><LI><A class="operation_index_link" href="#POST/%OPERATION"><SPAN class="resource_id_method_POST">POST</SPAN> <SPAN class="resource_id_path">/%OPERATION</SPAN></A></LI><LI><A class="operation_index_link" href="#GET/%OPERATION"><SPAN class="resource_id_method_GET">GET</SPAN> <SPAN class="resource_id_path">/%OPERATION</SPAN></A></LI><LI><A class="operation_index_link" href="#GET/%OPERATION/:id"><SPAN class="resource_id_method_GET">GET</SPAN> <SPAN class="resource_id_path">/%OPERATION/:id</SPAN></A></LI><LI><A class="operation_index_link" href="#GET/%OPERATION/:id/logs/:cluster?"><SPAN class="resource_id_method_GET">GET</SPAN> <SPAN class="resource_id_path">/%OPERATION/:id/logs/:cluster?</SPAN></A></LI><LI><A class="operation_index_link" href="#GET/%OPERATION/:id/debugs/:node?"><SPAN class="resource_id_method_GET">GET</SPAN> <SPAN class="resource_id_path">/%OPERATION/:id/debugs/:node?</SPAN></A></LI><LI><A class="operation_index_link" href="#GET/%OPERATION/:id/state"><SPAN class="resource_id_method_GET">GET</SPAN> <SPAN class="resource_id_path">/%OPERATION/:id/state</SPAN></A></LI><LI><A class="operation_index_link" href="#GET/%OPERATION/:id/status"><SPAN class="resource_id_method_GET">GET</SPAN> <SPAN class="resource_id_path">/%OPERATION/:id/status</SPAN></A></LI><LI><A class="operation_index_link" href="#GET/%OPERATION/:id/error"><SPAN class="resource_id_method_GET">GET</SPAN> <SPAN class="resource_id_path">/%OPERATION/:id/error</SPAN></A></LI><LI><A class="operation_index_link" href="#DELETE/%OPERATION/:id"><SPAN class="resource_id_method_DELETE">DELETE</SPAN> <SPAN class="resource_id_path">/%OPERATION/:id</SPAN></A></LI></UL><LI><A class="apidoc_index_link" href="#Reboot operations">Reboot operations</A></LI><UL class="operation_index_list"><LI><A class="operation_index_link" href="#POST/reboot"><SPAN class="resource_id_method_POST">POST</SPAN> <SPAN class="resource_id_path">/reboot</SPAN></A></LI></UL><LI><A class="apidoc_index_link" href="#Rights management">Rights management</A></LI><UL class="operation_index_list"><LI><A class="operation_index_link" href="#POST/rights"><SPAN class="resource_id_method_POST">POST</SPAN> <SPAN class="resource_id_path">/rights</SPAN></A></LI><LI><A class="operation_index_link" href="#GET/rights/:username?/:node?"><SPAN class="resource_id_method_GET">GET</SPAN> <SPAN class="resource_id_path">/rights/:username?/:node?</SPAN></A></LI><LI><A class="operation_index_link" href="#PUT/rights/:username?/:node?"><SPAN class="resource_id_method_PUT">PUT</SPAN> <SPAN class="resource_id_path">/rights/:username?/:node?</SPAN></A></LI><LI><A class="operation_index_link" href="#DELETE/rights/:username/:node?/:partition?"><SPAN class="resource_id_method_DELETE">DELETE</SPAN> <SPAN class="resource_id_path">/rights/:username/:node?/:partition?</SPAN></A></LI></UL><LI><A class="apidoc_index_link" href="#Statistics">Statistics</A></LI><UL class="operation_index_list"><LI><A class="operation_index_link" href="#GET/stats/%OPERATION?"><SPAN class="resource_id_method_GET">GET</SPAN> <SPAN class="resource_id_path">/stats/%OPERATION?</SPAN></A></LI></UL><LI><A class="apidoc_index_link" href="#Nodes information">Nodes information</A></LI><UL class="operation_index_list"><LI><A class="operation_index_link" href="#GET/nodes/:nodename?"><SPAN class="resource_id_method_GET">GET</SPAN> <SPAN class="resource_id_path">/nodes/:nodename?</SPAN></A></LI></UL><LI><A class="apidoc_index_link" href="#Environments management">Environments management</A></LI><UL class="operation_index_list"><LI><A class="operation_index_link" href="#POST/environments"><SPAN class="resource_id_method_POST">POST</SPAN> <SPAN class="resource_id_path">/environments</SPAN></A></LI><LI><A class="operation_index_link" href="#GET/environments?username=:username?&amp;amp;name=:name?&amp;amp;version=:version?"><SPAN class="resource_id_method_GET">GET</SPAN> <SPAN class="resource_id_path">/environments?username=:username?&name=:name?&version=:version?</SPAN></A></LI><LI><A class="operation_index_link" href="#PUT/environments/:username/:name/:version?"><SPAN class="resource_id_method_PUT">PUT</SPAN> <SPAN class="resource_id_path">/environments/:username/:name/:version?</SPAN></A></LI><LI><A class="operation_index_link" href="#PUT/environments/:username?/:name?/:version?"><SPAN class="resource_id_method_PUT">PUT</SPAN> <SPAN class="resource_id_path">/environments/:username?/:name?/:version?</SPAN></A></LI><LI><A class="operation_index_link" href="#DELETE/environments/:username/:name/:version?"><SPAN class="resource_id_method_DELETE">DELETE</SPAN> <SPAN class="resource_id_path">/environments/:username/:name/:version?</SPAN></A></LI></UL><LI><A class="apidoc_index_link" href="#Global information">Global information</A></LI><UL class="operation_index_list"><LI><A class="operation_index_link" href="#GET/clusters"><SPAN class="resource_id_method_GET">GET</SPAN> <SPAN class="resource_id_path">/clusters</SPAN></A></LI><LI><A class="operation_index_link" href="#GET/auth_headers_prefix"><SPAN class="resource_id_method_GET">GET</SPAN> <SPAN class="resource_id_path">/auth_headers_prefix</SPAN></A></LI><LI><A class="operation_index_link" href="#GET/info"><SPAN class="resource_id_method_GET">GET</SPAN> <SPAN class="resource_id_path">/info</SPAN></A></LI><LI><A class="operation_index_link" href="#GET/version"><SPAN class="resource_id_method_GET">GET</SPAN> <SPAN class="resource_id_path">/version</SPAN></A></LI></UL><LI><A class="apidoc_index_link" href="#Deployment">Deployment</A></LI><UL class="operation_index_list"><LI><A class="operation_index_link" href="#POST/deployment"><SPAN class="resource_id_method_POST">POST</SPAN> <SPAN class="resource_id_path">/deployment</SPAN></A></LI></UL><LI><A class="apidoc_index_link" href="#Console">Console</A></LI><UL class="operation_index_list"><LI><A class="operation_index_link" href="#POST/console"><SPAN class="resource_id_method_POST">POST</SPAN> <SPAN class="resource_id_path">/console</SPAN></A></LI><LI><A class="operation_index_link" href="#GET/console"><SPAN class="resource_id_method_GET">GET</SPAN> <SPAN class="resource_id_path">/console</SPAN></A></LI><LI><A class="operation_index_link" href="#GET/console/:id"><SPAN class="resource_id_method_GET">GET</SPAN> <SPAN class="resource_id_path">/console/:id</SPAN></A></LI><LI><A class="operation_index_link" href="#GET/console/:id/error"><SPAN class="resource_id_method_GET">GET</SPAN> <SPAN class="resource_id_path">/console/:id/error</SPAN></A></LI><LI><A class="operation_index_link" href="#DELETE/console/:id"><SPAN class="resource_id_method_DELETE">DELETE</SPAN> <SPAN class="resource_id_path">/console/:id</SPAN></A></LI></UL><LI><A class="apidoc_index_link" href="#Power operations">Power operations</A></LI><UL class="operation_index_list"><LI><A class="operation_index_link" href="#PUT/power"><SPAN class="resource_id_method_PUT">PUT</SPAN> <SPAN class="resource_id_path">/power</SPAN></A></LI><LI><A class="operation_index_link" href="#GET/power"><SPAN class="resource_id_method_GET">GET</SPAN> <SPAN class="resource_id_path">/power</SPAN></A></LI></UL></UL></DIV><HR class="apidoc_index_sep"><DIV class="intro_frame"><H1 class="intro_title"><A class="intro_title_link" id="intro">Introduction</A></H1><DIV class="section_frame"><H2 class="section_title"><A id="request_parameters">Request's parameters</A></H2><P class="section_paragraph">There is several ways to specify parameters when using the network API. Parameters can be specified in the query's URI parameter but also in the query's body. Remark: it's only possible to use String and Array data structures when specifying parameters using the query's URI to specify more advanced parameters (Numbers, Hashs, ...) it's necessary to specify the parameters using a more advanced description language (JSON/YAML) in the query's body.</P><P class="section_paragraph">The following examples are equivalent:</P><P class="section_paragraph"><B>Specifying parameters in the query's URI</B></P><P class="section_paragraph"><PRE class="code_sample">      POST /deploy?nodes=node-1.testbed.lan&nodes=node-2.testbed.lan HTTP/1.1
       Accept: */*
       Host: kadeploy.testbed.lan:25300
       X-Kadeploy-User: frontend
diff --git a/lib/kadeploy3/common/fetchfile.rb b/lib/kadeploy3/common/fetchfile.rb
index ccd69527101bf710d805bad8559a9d089ec0bdb8..d48a8cab32067a1a83d678d9203e9c95d9219a1a 100644
--- a/lib/kadeploy3/common/fetchfile.rb
+++ b/lib/kadeploy3/common/fetchfile.rb
@@ -168,7 +168,7 @@ end
 class LocalFetchFile < HTTPFetchFile
   def initialize(origin_uri,client=nil)
     super(origin_uri,client)
-    raise KadeployError.new(APIError::INVALID_CLIENT,nil,'No client was specified') unless @client
+    raise KadeployError.new(APIError::INVALID_CLIENT,nil,"There is no way to retrieve #{origin_uri} from the Kadeploy server. Consider using a server:// or a http:// URL") unless @client
 
     @origin_uri = File.join(@client.to_s,Base64.urlsafe_encode64(@origin_uri))
     begin
diff --git a/lib/kadeploy3/server/automata.rb b/lib/kadeploy3/server/automata.rb
index 90ced57602c4b93a9fc8b3a3385c9a89ed9aa1a6..b2e2a40f96d17649fe3f8f9fec4c0c66237c3ee6 100644
--- a/lib/kadeploy3/server/automata.rb
+++ b/lib/kadeploy3/server/automata.rb
@@ -413,7 +413,7 @@ module Automata
         to_delete2.clear
 
         # Treatment of this task is done, cleaning everything
-        if @threads[task] and @threads[task].empty? and task.nodes.empty?
+        if @threads[task] and @threads[task].empty? and !task.nodes.nil? and task.nodes.empty?
           if task.cleaner
             task.cleaner.kill if task.cleaner.alive?
             task.cleaner.join
diff --git a/lib/kadeploy3/server/microsteps.rb b/lib/kadeploy3/server/microsteps.rb
index 5439ad05572e37566881130dc53fb80a22339f27..6cd42510731435320a3b28ac8cfcc267a249b076 100644
--- a/lib/kadeploy3/server/microsteps.rb
+++ b/lib/kadeploy3/server/microsteps.rb
@@ -16,6 +16,7 @@ class Microstep < Automata::QueueTask
     @runthread = nil
     @current_operation = nil
     @waitreboot_threads = ThreadGroup.new
+    @waitreboot_threads_lock = Mutex.new
     @timestart = Time.now.to_i
     @done = false
     @lock = Mutex.new
@@ -81,14 +82,18 @@ class Microstep < Automata::QueueTask
   end
 
   def status
-    {
-      :nodes => {
-        :OK => @nodes_ok.make_array_of_hostname,
-        :KO => @nodes_ko.make_array_of_hostname,
-        :'**' => @nodes.diff(@nodes_ok).diff(@nodes_ko).make_array_of_hostname,
-      },
-      :time => (Time.now.to_i - @timestart),
-    }
+    if @nodes.nil?
+      return { :nodes => { :OK => [], :KO => [], :'**' => [] }, :time => 0 }
+    else
+      return {
+        :nodes => {
+          :OK => @nodes_ok.make_array_of_hostname,
+          :KO => @nodes_ko.make_array_of_hostname,
+          :'**' => @nodes.diff(@nodes_ok).diff(@nodes_ko).make_array_of_hostname,
+        },
+        :time => (Time.now.to_i - @timestart),
+      }
+    end
   end
 
   def done?()
@@ -96,8 +101,12 @@ class Microstep < Automata::QueueTask
   end
 
   def kill(dofree=true)
-    @waitreboot_threads.list.each do |thr|
-      thr.kill if thr.alive?
+    @waitreboot_threads_lock.synchronize do
+      if @waitreboot_threads
+        @waitreboot_threads.list.each do |thr|
+          thr.kill if thr.alive?
+        end
+      end
     end
     @lock.synchronize do
       @current_operation.kill unless @current_operation.nil?
@@ -129,7 +138,9 @@ class Microstep < Automata::QueueTask
     @output = nil
     @debugger = nil
     @current_operation.free if @current_operation
-    @waitreboot_threads = nil
+    @waitreboot_threads_lock.synchronize do
+      @waitreboot_threads = nil
+    end
     @timestart = nil
     @done = nil
   end
@@ -1962,14 +1973,18 @@ class Microstep < Automata::QueueTask
               debug(5,"#{node.hostname} is here after #{Time.now.tv_sec - start}s")
             end
           end
-          @waitreboot_threads.add(thr)
+          @waitreboot_threads_lock.synchronize do
+            @waitreboot_threads.add(thr)
+          end
         end
 
         #let's wait everybody
-        @waitreboot_threads.list.each do |thr|
-          thr.join
+        @waitreboot_threads_lock.synchronize do
+          @waitreboot_threads.list.each do |thr|
+            thr.join
+          end
+          @waitreboot_threads = ThreadGroup.new
         end
-        @waitreboot_threads = ThreadGroup.new
       end
       nodes_to_test = nil
     end
diff --git a/man/kaconsole3.1 b/man/kaconsole3.1
index 08837b1524b0b2ea77d1e0a0f7ec7a7a9aa04a1e..5ceac77dbefae6145ea85a726b8f5028406bd82f 100644
--- a/man/kaconsole3.1
+++ b/man/kaconsole3.1
@@ -1,5 +1,5 @@
 .\" DO NOT MODIFY THIS FILE!  It was generated by help2man 1.46.4.
-.TH KACONSOLE3 "1" "May 2016" "kaconsole3 3.3.9.stable" "User Commands"
+.TH KACONSOLE3 "1" "June 2016" "kaconsole3 3.3.10.stable" "User Commands"
 .SH NAME
 kaconsole3 \- access the console of deploying nodes
 .SH SYNOPSIS
diff --git a/man/kadeploy3.1 b/man/kadeploy3.1
index 013fbb55a3e33ff7098f50af432355e626ae2a17..d00df4fa83e6ea22125512f3d168a8ef1ff1a194 100644
--- a/man/kadeploy3.1
+++ b/man/kadeploy3.1
@@ -1,5 +1,5 @@
 .\" DO NOT MODIFY THIS FILE!  It was generated by help2man 1.46.4.
-.TH KADEPLOY3 "1" "May 2016" "kadeploy3 3.3.9.stable" "User Commands"
+.TH KADEPLOY3 "1" "June 2016" "kadeploy3 3.3.10.stable" "User Commands"
 .SH NAME
 kadeploy3 \- Kadeploy client -- perform efficient deployments on cluster nodes
 .SH SYNOPSIS
diff --git a/man/kadeploy3d.8 b/man/kadeploy3d.8
index 3b6f00d2a3c05783dd071bcfc50584b2f29587e4..9d8ffe297829820c019e8af5e15286afd4719ea7 100644
--- a/man/kadeploy3d.8
+++ b/man/kadeploy3d.8
@@ -1,5 +1,5 @@
 .\" DO NOT MODIFY THIS FILE!  It was generated by help2man 1.46.4.
-.TH KADEPLOY3D "8" "May 2016" "kadeploy3d 3.3.9.stable" "System Administration Utilities"
+.TH KADEPLOY3D "8" "June 2016" "kadeploy3d 3.3.10.stable" "System Administration Utilities"
 .SH NAME
 kadeploy3d \- Kadeploy server
 .SH SYNOPSIS
diff --git a/man/kaenv3.1 b/man/kaenv3.1
index 5427faca6ccb7fa119d383ecac6d81c2fcf9f9ea..ce279fb8f211f97c5d15ab5122828c539771f214 100644
--- a/man/kaenv3.1
+++ b/man/kaenv3.1
@@ -1,5 +1,5 @@
 .\" DO NOT MODIFY THIS FILE!  It was generated by help2man 1.46.4.
-.TH KAENV3 "1" "May 2016" "kaenv3 3.3.9.stable" "User Commands"
+.TH KAENV3 "1" "June 2016" "kaenv3 3.3.10.stable" "User Commands"
 .SH NAME
 kaenv3 \- manage the Kadeploy environments
 .SH SYNOPSIS
diff --git a/man/kanodes3.1 b/man/kanodes3.1
index a37b3ebd674e6ded290b04740c8bb364db19c506..6070a523b1399e55ab3092326ea1dc100b61d756 100644
--- a/man/kanodes3.1
+++ b/man/kanodes3.1
@@ -1,5 +1,5 @@
 .\" DO NOT MODIFY THIS FILE!  It was generated by help2man 1.46.4.
-.TH KANODES3 "1" "May 2016" "kanodes3 3.3.9.stable" "User Commands"
+.TH KANODES3 "1" "June 2016" "kanodes3 3.3.10.stable" "User Commands"
 .SH NAME
 kanodes3 \- get information on the current deployments
 .SH SYNOPSIS
diff --git a/man/kapower3.1 b/man/kapower3.1
index eea5c95204a0fbc5aa91b553cd191b9b9662ccbe..83f174ef3ca5c2ab9577bc68c51dea6de2d0ac91 100644
--- a/man/kapower3.1
+++ b/man/kapower3.1
@@ -1,5 +1,5 @@
 .\" DO NOT MODIFY THIS FILE!  It was generated by help2man 1.46.4.
-.TH KAPOWER3 "1" "May 2016" "kapower3 3.3.9.stable" "User Commands"
+.TH KAPOWER3 "1" "June 2016" "kapower3 3.3.10.stable" "User Commands"
 .SH NAME
 kapower3 \- control the power status of nodes
 .SH SYNOPSIS
diff --git a/man/kareboot3.1 b/man/kareboot3.1
index cb193a424f6606d005052226134e3e8da0b792ee..5d639b95bb6956743b3ece9212d42c4b8d9e8104 100644
--- a/man/kareboot3.1
+++ b/man/kareboot3.1
@@ -1,5 +1,5 @@
 .\" DO NOT MODIFY THIS FILE!  It was generated by help2man 1.46.4.
-.TH KAREBOOT3 "1" "May 2016" "kareboot3 3.3.9.stable" "User Commands"
+.TH KAREBOOT3 "1" "June 2016" "kareboot3 3.3.10.stable" "User Commands"
 .SH NAME
 kareboot3 \- perform reboot operations on the nodes involved in a deployment
 .SH SYNOPSIS
diff --git a/man/karights3.8 b/man/karights3.8
index 49d9e3d56e2f3e36a9eb81b93758c246eff0d03d..81e0a01fc2663f7bac0652e0d67aecd7aaddc494 100644
--- a/man/karights3.8
+++ b/man/karights3.8
@@ -1,5 +1,5 @@
 .\" DO NOT MODIFY THIS FILE!  It was generated by help2man 1.46.4.
-.TH KARIGHTS3 "8" "May 2016" "karights3 3.3.9.stable" "System Administration Utilities"
+.TH KARIGHTS3 "8" "June 2016" "karights3 3.3.10.stable" "System Administration Utilities"
 .SH NAME
 karights3 \- manage users deployment rights
 .SH SYNOPSIS
diff --git a/man/kastat3.1 b/man/kastat3.1
index 9824b99b715c18710b1c3887e82d3903fbfe9293..998e4b673bc5fabde004994c4e3bd7331d7e59bf 100644
--- a/man/kastat3.1
+++ b/man/kastat3.1
@@ -1,5 +1,5 @@
 .\" DO NOT MODIFY THIS FILE!  It was generated by help2man 1.46.4.
-.TH KASTAT3 "1" "May 2016" "kastat3 3.3.9.stable" "User Commands"
+.TH KASTAT3 "1" "June 2016" "kastat3 3.3.10.stable" "User Commands"
 .SH NAME
 kastat3 \- get statistics on the deployments
 .SH SYNOPSIS
diff --git a/minor_version b/minor_version
index ec635144f60048986bc560c5576355344005e6e7..f599e28b8ab0d8c9c57a486c89c4a5132dcbd3b2 100644
--- a/minor_version
+++ b/minor_version
@@ -1 +1 @@
-9
+10