ToolUtil.fromJson(std.getOperations(), ServiceTemplateOperation[].class);
     String downloadUri = buildSTDownloadUri(std.getCsarId(), std.getDownloadUri());
     
-    return new ServiceTemplate(std.getServiceTemplateId(), std.getTemplateName(), std.getVendor(),
+    return new ServiceTemplate(std.getServiceTemplateId(), std.getTemplateName(), std.getTemplateName(), std.getVendor(),
         std.getVersion(), std.getCsarId(), std.getType(), downloadUri,
         parameters.getInputs(), parameters.getOutputs(), operations);
   }
 
   
   private String serviceTemplateId;
   
+  private String id;
+  
   private String templateName;
   
   private String vendor;
 
    * @return
    */
   public String parserServiceTemplateName(Map<String, String> metadata) {
-    if (metadata.containsKey("name")) {
-      return metadata.get("name");
+    if (metadata.containsKey("id")) {
+      return metadata.get("id");
     }
     return metadata.get("template_name");
   }
 
     ServiceTemplate st = new ServiceTemplate();
 
     st.setServiceTemplateId(ToolUtil.generateId());
+    st.setId(parserServiceTemplateName(result.getInstance().getMetadata()));  // TODO
     st.setTemplateName(parserServiceTemplateName(result.getInstance().getMetadata()));
     st.setVendor(parserServiceTemplateVendor(result.getInstance().getMetadata()));
     st.setVersion(parserServiceTemplateVersion(result.getInstance().getMetadata()));
 
     
     // service template
     ServiceTemplate st = parseServiceTemplate(
-        packageId, result, parseServiceTemplateFileName(packageId, fileLocation));
+        result, packageId, parseServiceTemplateFileName(packageId, fileLocation));
     // workflow
     ServiceTemplateOperation[] operations = parseOperations(fileLocation);
     st.setOperations(operations);
         stm.getCapabilityList());
   }
 
-  private ServiceTemplate parseServiceTemplate(String packageId, ParseYamlResult result,
+  private ServiceTemplate parseServiceTemplate(ParseYamlResult result, String packageId,
       String stDownloadUri) {
     ServiceTemplate st = new ServiceTemplate();
 
     st.setServiceTemplateId(ToolUtil.generateId());
+    st.setId(parserServiceTemplateName(result.getMetadata()));  // TODO
     st.setTemplateName(parserServiceTemplateName(result.getMetadata()));
     st.setVendor(parserServiceTemplateVendor(result.getMetadata()));
     st.setVersion(parserServiceTemplateVersion(result.getMetadata()));
 
       SubstitutionMapping stm = getSubstitutionMappingsByNodeTypeId(nodeTypeIds[i]);
       if (stm == null) {
         sts[i] = null;
-      } else {
-        sts[i] = getServiceTemplateById(stm.getServiceTemplateId());
+        continue;
       }
+      sts[i] = getServiceTemplate(stm, nodeTypeIds[i]);
     }
 
     return sts;
   }
 
+  private ServiceTemplate getServiceTemplate(SubstitutionMapping stm, String nodeTypeId) {
+    try {
+       return getServiceTemplateById(stm.getServiceTemplateId());
+    } catch (CatalogResourceException e) {
+      logger.warn("Get Nesting ServiceTemplate Failed. NodeTypeIds = " + nodeTypeId, e);
+      return null;
+    }
+  }
+
   /**
    * get substitution mappings by nodeTpe id.
    * @param nodeTypeId nodeType id
 
     OutputParameter[] outputs = getOutputs();
     serviceTemplate.setOutputs(outputs);
     serviceTemplate.setServiceTemplateId("serviceTemplateId");
+    serviceTemplate.setId("templateName");
     serviceTemplate.setTemplateName("templateName");
     serviceTemplate.setType("NS");
     serviceTemplate.setVendor("ZTE");