diff --git a/software/neoppod/cluster.cfg.in b/software/neoppod/cluster.cfg.in
index f2f2f43da9c0eb33b6050094a2abda3d50b76ab2..e3b44395a03796f55d7c64e39b88656cc201c256 100644
--- a/software/neoppod/cluster.cfg.in
+++ b/software/neoppod/cluster.cfg.in
@@ -2,10 +2,14 @@
 {% macro section(name) %}{% do part_list.append(name) %}{{ name }}{% endmacro -%}
 {% set part_list = [] -%}
 {% set section_id_list = [] -%}
+{% set sla_dict = {} -%}
+{% for sla, ref_list in slapparameter_dict.get('sla-dict', {}).iteritems() -%}
+{%   do sla_dict.update(dict.fromkeys(ref_list, sla)) -%}
+{% endfor -%}
+
 [request-common]
 recipe = slapos.cookbook:request.serialised
 software-url = ${slap-connection:software-release-url}
-sla-computer_guid = ${slap-connection:computer-id}
 server-url = ${slap-connection:server-url}
 key-file = ${slap-connection:key-file}
 cert-file = ${slap-connection:cert-file}
@@ -19,6 +23,16 @@ config-upstream-cluster = {{ dumps(slapparameter_dict.get('upstream-cluster', ''
 config-upstream-masters = {{ dumps(slapparameter_dict.get('upstream-masters', '')) }}
 software-type = neo
 
+{% macro sla(name) -%}
+{% if name in sla_dict -%}
+{%   for k, (v,) in urlparse.parse_qs(sla_dict.pop(name), strict_parsing=1).iteritems() -%}
+sla-{{ k }} = {{ v }}
+{%   endfor -%}
+{% else -%}
+sla-computer_guid = ${slap-connection:computer-id}
+{% endif -%}
+{% endmacro -%}
+
 [publish]
 recipe = slapos.cookbook:publish.serialised
 masters = ${node-0-final:connection-masters}
@@ -35,6 +49,7 @@ name = {{ section_id }}
 {%   for k, v in node.iteritems() -%}
 config-{{ k }} = {{ dumps(v) }}
 {%   endfor -%}
+{{ sla(section_id) }}
 
 [{{ section_id }}]
 <= request-common
diff --git a/software/neoppod/instance.cfg.in b/software/neoppod/instance.cfg.in
index 4646f254162e86f8ec49300605ac785934240b11..da94601a0302e8de666f645573839a389c3df772 100644
--- a/software/neoppod/instance.cfg.in
+++ b/software/neoppod/instance.cfg.in
@@ -26,6 +26,8 @@ context =
 [neo-cluster]
 <= jinja2-template-base
 template = {{ cluster }}
+extra-context =
+    import urlparse urlparse
 
 [neo-admin]
 <= jinja2-template-base
diff --git a/software/neoppod/software.cfg b/software/neoppod/software.cfg
index f98a73b30618969842ff92f01b41d66a77437b14..a547036e99eb3e429e28173d4ac0ce3bdacd3c40 100644
--- a/software/neoppod/software.cfg
+++ b/software/neoppod/software.cfg
@@ -41,7 +41,7 @@ scripts =
 [cluster]
 recipe = slapos.recipe.build:download
 url = ${:_profile_base_location_}/${:_buildout_section_name_}.cfg.in
-md5sum = 5e422ddd4ecfe85daa3e151cde261c75
+md5sum = 02d7d576ef30f7d440b703d6fc57866a
 # XXX: following mode should be the default
 mode = 644
 
@@ -65,7 +65,7 @@ md5sum = febd3ed58043ce1367b86cf6e4e69700
 [template]
 recipe = slapos.recipe.template:jinja2
 template = ${:_profile_base_location_}/instance.cfg.in
-md5sum = 6101da4361793eddde62b6be1639c25e
+md5sum = e0917a4a4aa102d6fa4274530d56959e
 # XXX: "template.cfg" is hardcoded in instanciation recipe
 rendered = ${buildout:directory}/template.cfg
 context =