diff --git a/stack/erp5/buildout.cfg b/stack/erp5/buildout.cfg
index 18ffa6ac9bc08a5694b90e73240e1044d09ce679..7c91d54c5327acbff22c1e474e04e66982f84ab8 100644
--- a/stack/erp5/buildout.cfg
+++ b/stack/erp5/buildout.cfg
@@ -213,7 +213,7 @@ md5sum = 564006953b7d7a12d40a14b6648b32f0
 # XXX: "template.cfg" is hardcoded in instanciation recipe
 filename = template.cfg
 template = ${:_profile_base_location_}/instance.cfg.in
-md5sum = 77e6819ded20747d7f2fb6991d568f48
+md5sum = 826e50b6465ce9e9a7534c1707e88e82
 extra-context =
     key mariadb_link_binary template-mariadb:link-binary
     key zope_link_binary template-zope:link-binary
diff --git a/stack/erp5/instance.cfg.in b/stack/erp5/instance.cfg.in
index 1bb0fb8d600dc40abb0b3b726250db92d30fc76a..7e618c7c8c5535ac8170f4ee8dd927bc2d0b90b0 100644
--- a/stack/erp5/instance.cfg.in
+++ b/stack/erp5/instance.cfg.in
@@ -200,9 +200,12 @@ script =
            "buildout:installed=.installed-${:_buildout_section_name_}.cfg")
   buildout = self.options[software_type]
   # Options.get (from zc.buildout) should deserialize.
-  try: override = self.options["override"][software_type]
+  try: override = open(self.options["override"][software_type]).read()
   except (KeyError, TypeError): pass
-  else: args.append("buildout:extends=" + buildout); buildout = override
+  else: \
+    override = "[buildout]\nextends = %%s\n\n" %% buildout + override; \
+    buildout = "${buildout:parts-directory}/${:_buildout_section_name_}.cfg"; \
+    open(buildout, "w", 0).write(override)
   subprocess.check_call(args + ["-oc", buildout])
 update_script = ${:script}
 slapos_promise =