diff --git a/software/palo/instance.cfg.in b/software/palo/instance.cfg.in
index cf730a31b31862e203606dc2284ff91a1db6137f..16c1f58f81c28af2ef39a621d9910aa493457c6d 100644
--- a/software/palo/instance.cfg.in
+++ b/software/palo/instance.cfg.in
@@ -2,7 +2,8 @@
 parts =
   instance-parameter
   directory
-  palo
+  palo_olap
+  palo_etl
   publish-connection-parameter
 
 eggs-directory = ${buildout:eggs-directory}
@@ -37,6 +38,16 @@ service = $${:etc}/service
 promise = $${:etc}/promise/
 log = $${:var}/log
 
+[directory_tomcat]
+<= directory
+catalina_base = $${:home}/var/palo_etl
+catalina_logs = $${:catalina_base}/logs
+catalina_temp = $${:catalina_base}/temp
+catalina_webapps = $${:catalina_base}/webapps
+catalina_work = $${:catalina_base}/work
+catalina_conf = $${:catalina_base}/conf
+
+
 [TODO]
 todo =
   tunnel
@@ -59,12 +70,35 @@ context = import json_module json
   key erp5_url instance-parameter:configuration.erp5_url
   raw erp5_login_worker_path ${erp5_login_worker:output}
 
-[palo]
-# This recipe will try to "exec" the command-line after separating parameters.
+[palo_olap]
 recipe = slapos.cookbook:wrapper
 command-line = ${palo:location}/bin/palo --init-file $${palo_ini:rendered} --chdir
 wrapper-path = $${directory:service}/palo_olap
 
+[palo_etl]
+recipe = slapos.cookbook:wrapper
+command-line = ${tomcat:location}/bin/catalina.sh run
+wrapper-path = $${directory:service}/palo_etl
+environment = JAVA_HOME = ${java:location}
+  CATALINA_BASE = $${directory_tomcat:catalina_base}
+dependencies = $${palo_etl_server_xml:rendered}
+
+[palo_etl_server_xml]
+recipe = slapos.recipe.template:jinja2
+template = ${:_profile_base_location_}/server.xml.in
+rendered = $${directory_tomcat:catalina_conf}/server.xml
+extensions = jinja2.ext.do
+context = import json_module json
+  section palo_etl_parameter palo_etl_parameter
+  raw palo_etl_server_war ${palo_etl_download:location}
+
+[palo_etl_parameter]
+tomcat_port = 8888
+tomcat_host = $${:ipv4}
+tomcat_server_port = 8005
+ipv4 = $${instance-parameter:ipv4-random}
+ipv6 = $${instance-parameter:ipv6-random}
+
 [publish-connection-parameter]
 recipe = slapos.cookbook:publish
 palo_olap_url = $${palo_olap_parameter:ipv4}:$${palo_olap_parameter:palo_olap_port}
diff --git a/software/palo/software.cfg b/software/palo/software.cfg
index 582464c36da5c9167ef32f747e17bf2f58c74326..399854ffeffa49a6b173bef0a3bab61e201056bb 100644
--- a/software/palo/software.cfg
+++ b/software/palo/software.cfg
@@ -9,6 +9,7 @@ extends =
 
 parts =
   palo
+  palo_etl_download
   slapos-cookbook
   instance-profile
 
@@ -43,4 +44,13 @@ environment =
   LDFLAGS=-L${gperf:location}/lib -Wl,-rpath=${gperf:location}/lib -L${openssl:location}/lib -Wl,-rpath=${openssl:location}/lib -L${boost-lib:location}/lib -Wl,-rpath=${boost-lib:location}/lib -Wl,-copy-dt-needed-entries -lboost_system
   PATH=${gperf:location}/bin:%(PATH)s
 
+[palo_etl_download]
+recipe = hexagonit.recipe.download
+url = http://switch.dl.sourceforge.net/project/palo-etl-server/etlserver/Palo%20ETL%20Server%203.2/etlserver.war
+download-only = true
+;destination = ${buildout:directory}/var/tomcat/webapps/
+
+[palo_etl]
+needs = ${palo_etl_download:url}
+
 [versions]