diff --git a/src/sunstone/public/js/plugins/oneflow-templates.js b/src/sunstone/public/js/plugins/oneflow-templates.js
index d1d43c955b..a10a30145a 100644
--- a/src/sunstone/public/js/plugins/oneflow-templates.js
+++ b/src/sunstone/public/js/plugins/oneflow-templates.js
@@ -1410,6 +1410,22 @@ function initialize_create_service_template_dialog(dialog){
         }
     });
 
+
+    $('#create_service_template_form_advanced',dialog).on('invalid', function () {
+        notifyError(tr("One or more required fields are missing or malformed."));
+        popFormDialog("create_service_template_form", $("#oneflow-templates"));
+    }).on('valid', function() {
+        if ($('#create_service_template_form_advanced',dialog).attr("action") == "create") {
+            var json_template = $("#template", this).val();
+            Sunstone.runAction("ServiceTemplate.create", JSON.parse(json_template) );
+            return false;
+        } else if ($('#create_service_template_form_advanced',dialog).attr("action") == "update") {
+            var json_template = $("#template", this).val();
+            Sunstone.runAction("ServiceTemplate.update",service_template_to_update_id, json_template);
+            return false;
+        }
+    });
+
     // TODO advanced
 
     dialog.foundation();
@@ -1575,6 +1591,9 @@ function generate_json_service_template_from_form(dialog) {
 
 function fillUpUpdateServiceTemplateDialog(response, dialog){
     var service_template = response[OpenNebula.ServiceTemplate.resource]
+
+    $("#template", dialog).val(JSON.stringify(service_template.TEMPLATE.BODY));
+
     $("#service_name", dialog).attr("disabled", "disabled");
     $("#service_name", dialog).val(htmlDecode(service_template.NAME));