diff --git a/openo-portal/portal-lifecyclemgr/src/main/webapp/lifecyclemgr/gsolcmmain.html b/openo-portal/portal-lifecyclemgr/src/main/webapp/lifecyclemgr/gsolcmmain.html
index b373f3a..b464245 100644
--- a/openo-portal/portal-lifecyclemgr/src/main/webapp/lifecyclemgr/gsolcmmain.html
+++ b/openo-portal/portal-lifecyclemgr/src/main/webapp/lifecyclemgr/gsolcmmain.html
@@ -96,10 +96,17 @@
 
         function hideBasic() {
             $("#basicInfoTab").hide();
+            initParameterTab();
+            $("#templateParameterTab").show();
         }
 
         function showBasic() {
             $("#basicInfoTab").show();
+            $("#templateParameterTab").hide();
+        }
+
+        function serviceTemplateChanged() {
+            templateParameters.changed = true;
         }
 
         function showTopoCont() {
@@ -497,7 +504,7 @@
                                     </label>
                                     <div class="col-sm-7">
                                         <select class="form-control" style="padding-top: 0px;padding-bottom: 0px;"
-                                                id="svcTempl" name="svcTempl">
+                                                id="svcTempl" name="svcTempl" onchange="serviceTemplateChanged();">
                                             <option value="select">--select--</option>
                                             <option value="1.1">1.1</option>
                                             <option value="1.2">1.2</option>
@@ -506,6 +513,10 @@
                                 </div>
                             </div>
 
+                            <div id="templateParameterTab">
+
+                            </div>
+
                         </div>
                         <div class="modal-footer">
                             <button type="button" style="width:80px;" class="btn SDBtn" data-dismiss="modal"
diff --git a/openo-portal/portal-lifecyclemgr/src/main/webapp/lifecyclemgr/js/gsolcm.js b/openo-portal/portal-lifecyclemgr/src/main/webapp/lifecyclemgr/js/gsolcm.js
index 42a5aa7..bd90682 100644
--- a/openo-portal/portal-lifecyclemgr/src/main/webapp/lifecyclemgr/js/gsolcm.js
+++ b/openo-portal/portal-lifecyclemgr/src/main/webapp/lifecyclemgr/js/gsolcm.js
@@ -14,31 +14,31 @@
  * limitations under the License.
  */
 var templateParameters = {
-    templateName: '',
+    changed: true,
     parameters: []
 };
 
-var service_instance_insert_index = 0;
-
 var lcmHandler = function () {
     this._addOwnEvents();
 };
 
 lcmHandler.prototype = {
     _addOwnEvents: function () {
-        $('a[data-toggle="tab"]').on('show.bs.tab', this.beforeParameterTabShow);
         $('#createNS').click(this.okAction);
     },
-    beforeParameterTabShow: function (event) {
-        renderTemplateParametersTab();
-    },
-    okAction: function (event) {
+    okAction: function () {
+        var vimLocation = $('#vim_location').val();
+        if(vimLocation == undefined || vimLocation == 'select') {
+            alert('Location must be selected in Template Parameters');
+            return;
+        }
+
         var serviceInstance = {
-            serviceTemplateId: $('#svcTempl').val(),
+            serviceTemplateId: $("#svcTempl").val(),
             serviceName: $('#svcName').val(),
-            serviceDescription: $('#svcDesc').val(),
-            serviceParameters: collectServiceParameters(templateParameters.parameters),
-            vimLocation: $('#vim_location').val()
+            description: $('#svcDesc').val(),
+            inputParameters: collectServiceParameters(templateParameters.parameters),
+            vimLocation: vimLocation
         };
         var gatewayService = 'http://localhost:8080/openoapi/servicegateway/v1/services';
         $.when(
@@ -46,6 +46,7 @@
         ).then(
             function(template) {
                 serviceInstance.templateName = template.name;
+                serviceInstance.serviceType = template.serviceType;
                 return createNetworkServiceInstance(template, serviceInstance, gatewayService);
             }
         ).then(
@@ -57,17 +58,23 @@
     }
 };
 
-function renderTemplateParametersTab() {
+function initParameterTab() {
+    if (!templateParameters.changed) {
+        return;
+    }
+    var svcTempl = $("#svcTempl").val();
+    if ('select' === svcTempl) {
+        document.getElementById("templateParameterTab").innerHTML = '';
+        return;
+    }
     $.when(
         fetchTemplateParameterDefinitions(templateParameters),
         fetchVimInfo()
-    ).then(function(templateParameterResponse, vimsInfoResponse) {
+    ).then(function (templateParameterResponse, vimsInfoResponse) {
         templateParameters = translateToTemplateParameters(templateParameterResponse[0].inputs);
         var vims = translateToVimInfo(vimsInfoResponse[0]);
-        var components = transfromToComponents(templateParameters.parameters, vims);
-
-		//TODO need to address the issue of the dynamic loading of parameter tab,,,
-     //   document.getElementById("parameterTab").innerHTML = components;
+        var components = transformToComponents(templateParameters.parameters, vims);
+        document.getElementById("templateParameterTab").innerHTML = components;
     });
 }
 
@@ -102,7 +109,7 @@
             value: inputs[i].defaultValue
         };
     }
-    return {name: $("#svcTempl").val(), parameters: inputParameters};
+    return {changed: false, parameters: inputParameters};
 }
 
 function translateToVimInfo(vims) {
@@ -118,11 +125,11 @@
     return result;
 }
 
-function transfromToComponents(parameters, vims) {
+function transformToComponents(parameters, vims) {
     var components = '';
     var i;
     for (i = 0; i < parameters.length; i += 1) {
-        var component = '<div class="form-group">' +
+        var component = '<div class="mT15 form-group" style="margin-left:25px;">' +
             '<label class="col-sm-3 control-label">' +
             '<span>' + parameters[i].description + '</span>' + generateRequiredLabel(parameters[i]) +
             '</label>' +
@@ -145,7 +152,7 @@
 }
 
 function generateLocationComponent(vims) {
-    var component = '<div class="form-group">' +
+    var component = '<div class="form-group" style="margin-left:25px;margin-bottom:15px;">' +
         '<label class="col-sm-3 control-label">' +
         '<span>Location</span>' +
         '<span class="required">*</span>' +
@@ -159,7 +166,7 @@
 }
 
 function transformToOptions(vims) {
-    var options = '';
+    var options = '<option value="select">--select--</option>';
     var i;
     for (i = 0; i < vims.length; i += 1) {
         var option = '<option value="' + vims[i].vimId + '">' + vims[i].vimName + '</option>';
@@ -191,7 +198,13 @@
         }
     ).then(
         function(response) {
-            template.csarType = response.type;
+            if(response.type === 'GSAR') {
+                template.serviceType = 'GSO';
+            } else if(response.type === 'NSAR' || response.type === 'NFAR') {
+                template.serviceType = 'NFVO';
+            } else if(response.type === 'SSAR') {
+                template.serviceType = "SDNO";
+            }
             defer.resolve(template)
         }
     );
@@ -199,27 +212,27 @@
 }
 
 function createNetworkServiceInstance(template, serviceInstance, gatewayService) {
-    if (template.csarType === 'GSAR') {
+    if (template.serviceType === 'GSO') {
         return createGsoServiceInstance(gatewayService, serviceInstance, template);
-    } else if (template.csarType === 'NSAR' || template.csarType === 'NFAR') {
+    } else if (template.serviceType === 'NFVO') {
         return createNfvoServiceInstance(gatewayService, serviceInstance);
-    } else if (template.csarType === 'SSAR') {
+    } else if (template.serviceType === 'SDNO') {
         return createSdnoServiceInstance(gatewayService, serviceInstance);
     }
 }
 
 function createGsoServiceInstance(gatewayService, serviceInstance, serviceTemplate) {
     var defer = $.Deferred();
-    serviceInstance.serviceParameters.location = serviceInstance.vimLocation;
+    serviceInstance.inputParameters.location = serviceInstance.vimLocation;
     var gsoLcmUri = '/openoapi/lifecyclemgr/v1/services';
     var parameter = {
         'name': serviceInstance.serviceName,
-        'description': serviceInstance.serviceDescription,
+        'description': serviceInstance.description,
         'serviceDefId': serviceTemplate.gsarId,
         'templatedId': serviceInstance.serviceTemplateId,
         'templateName': serviceTemplate.templateName,
         'getewayUri': gsoLcmUri,
-        'parameters': serviceInstance.serviceParameters
+        'parameters': serviceInstance.inputParameters
     };
     $.when($.ajax({
         type: "POST",
@@ -228,21 +241,21 @@
         dataType: "json",
         data: JSON.stringify(parameter)
     })).then(function(response) {
-        serviceInstance.serviceInstanceId = response.serviceId;
+        serviceInstance.serviceId = response.serviceId;
         defer.resolve(serviceInstance);
-    })
+    });
     return defer;
 }
 
 function createNfvoServiceInstance(gatewayService, serviceInstance) {
-    var nfvoLcmNsUrl = '/openoapi/nslcm/v1.0/ns';
-    serviceInstance.serviceParameters.location = serviceInstance.vimLocation;
-    return createServiceInstance(gatewayService, nfvoLcmNsUrl, serviceInstance);
+    var nfvoLcmNsUri = '/openoapi/nslcm/v1.0/ns';
+    serviceInstance.inputParameters.location = serviceInstance.vimLocation;
+    return createServiceInstance(gatewayService, nfvoLcmNsUri, serviceInstance);
 }
 
 function createSdnoServiceInstance(gatewayService, serviceInstance) {
-    var sdnoLcmNsUrl = '/openoapi/sdnonslcm/v1.0/ns';
-    return createServiceInstance(gatewayService, sdnoLcmNsUrl, serviceInstance);
+    var sdnoLcmNsUri = '/openoapi/sdnonslcm/v1.0/ns';
+    return createServiceInstance(gatewayService, sdnoLcmNsUri, serviceInstance);
 }
 
 function createServiceInstance(gatewayService, nsUri, serviceInstance) {
@@ -250,7 +263,7 @@
     var sParameter = {
         'nsdId': serviceInstance.serviceTemplateId,
         'nsName': serviceInstance.serviceName,
-        'description': serviceInstance.serviceDescription,
+        'description': serviceInstance.description,
         'gatewayUri': nsUri
     };
     $.when($.ajax({
@@ -260,12 +273,13 @@
         dataType: "json",
         data: JSON.stringify(sParameter)
     })).then(function(response) {
-        var nsInstanceId = response[0].nsInstanceId;
-        var initNsUrl = nsUri + '/' + nsInstanceId + '/Instantiate'
+        var nsInstanceId = response.nsInstanceId;
+        serviceInstance.serviceId = nsInstanceId;
+        var initNsUrl = nsUri + '/' + nsInstanceId + '/Instantiate';
         var parameter = {
             'gatewayUri': initNsUrl,
             'nsInstanceId': nsInstanceId,
-            'additionalParamForNs': serviceInstance.serviceParameters
+            'additionalParamForNs': serviceInstance.inputParameters
         };
         return $.ajax({
             type: "POST",
@@ -274,7 +288,7 @@
             dataType: "json",
             data: JSON.stringify(parameter)
         });
-    }).then(function(response) {
+    }).then(function() {
         defer.resolve(serviceInstance);
     });
     return defer;
@@ -291,21 +305,8 @@
 }
 
 function updateTable(serviceInstance) {
-    appendOenRow(serviceInstance);
-    addDeleteEventRegistration();
-}
-
-function appendOenRow(serviceInstance) {
-    var index = service_instance_insert_index;
-    var creator = '';
-    $('#sai').append('<tr id="service_instance_' + index + '"></tr>');
-    $("#service_instance_" + index).html('<td><div class="DataTables_sort_wrapper openo-ellipsis "><span id="service_name" class="openo-table-th-sorticon overflow_elip  leftHeaderAlign  openo-table-disable-element ">' + serviceInstance.serviceName + '</span></td>' +
-        '<td><span class="openo-table-th-sorticon overflow_elip  leftHeaderAlign  openo-table-disable-element ">' + serviceInstance.templateName + '</span></td>' +
-        '<td class="service_template_id"><span class="openo-table-th-sorticon overflow_elip  leftHeaderAlign  openo-table-disable-element ">' + serviceInstance.serviceTemplateId + '</span><input type="hidden" value="' + serviceInstance.serviceInstanceId + '"/></td>' +
-        '<td><span class="openo-table-th-sorticon overflow_elip  leftHeaderAlign  openo-table-disable-element ">' + formatDate(new Date()) + '</span></td>' +
-        '<td><span class="openo-table-th-sorticon overflow_elip  leftHeaderAlign  openo-table-disable-element ">' + creator + '</span></td>' +
-        '<td><button class="data_delete_action"><img id="delete_action" class="openo-table-th-sorticon overflow_elip  leftHeaderAlign  openo-table-disable-element " src="images/delete.png"></img></button></td>');
-    service_instance_insert_index += 1;
+    serviceInstance.createTime = formatDate(new Date());
+    $('#sai').bootstrapTable("append", serviceInstance);
 }
 
 function formatDate(date) {
@@ -318,64 +319,47 @@
     return year + "-" + month + "-" + day + " " + hh + ":" + mm + ":" + ss;
 }
 
-function addDeleteEventRegistration() {
-    $(".data_delete_action").click(function (event) {
-        var trElement = $(this).parents("tr")[0];
-        var tdElement = $(trElement).children("td.service_template_id")[0];
-        var spanElement = $(tdElement).children("span")[0];
-        var templateId = $(spanElement).text();
-        var inputElement = $(tdElement).children("input")[0];
-        var instanceId = $(inputElement).val();
-
-        var gatewayService = 'http://localhost:8080/openoapi/servicegateway/v1/services';
-        $.when(
-            fetchServiceTemplateBy(templateId)
-        ).then(
-            function(template) {
-                if (template.csarType === 'GSAR') {
-                    return deleteGsoServiceInstance(gatewayService, instanceId);
-                } else if (template.csarType === 'NSAR' || serviceTemplate.csarType === 'NFAR') {
-                    var nfvoNsUri = '/openoapi/nslcm/v1.0/ns';
-                    return deleteServiceInstance(gatewayService, nfvoNsUri, instanceId);
-                } else if (template.csarType === 'SSAR') {
-                    var sdnoNsUri = '/openoapi/sdnonslcm/v1.0/ns';
-                    return deleteServiceInstance(gatewayService, sdnoNsUri, instanceId);
-                }
-            }
-        ).then(
-            function() {
-                trElement.remove();
-            }
-        );
-    });
+function deleteNe(rowId, row) {
+    var instanceId = row.serviceId;
+    var serviceType = row.serviceType;
+    var gatewayService = 'http://localhost:8080/openoapi/servicegateway/v1/services';
+    var remove = function () {
+        $('#sai').bootstrapTable("removeByUniqueId", rowId);
+    };
+    if(serviceType === 'GSO') {
+        deleteGsoServiceInstance(gatewayService, instanceId, remove)
+    } else if (serviceType === 'NFVO') {
+        var nfvoNsUri = '/openoapi/nslcm/v1.0/ns';
+        deleteNonGsoServiceInstance(gatewayService, nfvoNsUri, instanceId, remove);
+    } else if (serviceType === 'SDNO') {
+        var sdnoNsUri = '/openoapi/sdnonslcm/v1.0/ns';
+        deleteNonGsoServiceInstance(gatewayService, sdnoNsUri, instanceId, remove);
+    }
 }
 
-function deleteGsoServiceInstance(gatewayService, instanceId) {
-    var defer = $.Deferred();
+function deleteGsoServiceInstance(gatewayService, instanceId, remove) {
     var gsoLcmUri = '/openoapi/lifecyclemgr/v1/services';
     $.when(
-        deleteNetworkServiceInstance(gatewayService, gsoLcmUri, instanceId);
+        deleteNetworkServiceInstance(gatewayService, gsoLcmUri, instanceId)
     ).then(
-        function(response) {
-        defer.resolve();
-    });
-    return defer;
+        function() {
+            remove();
+        }
+    );
 }
 
-function deleteServiceInstance(gatewayService, nsUri, instanceId) {
-    var defer = $.Deferred();
+function deleteNonGsoServiceInstance(gatewayService, nsUri, instanceId, remove) {
     $.when(
         terminateNetworkServiceInstance(gatewayService, nsUri, instanceId)
     ).then(
-        function(response) {
+        function() {
             return deleteNetworkServiceInstance(gatewayService, nsUri, instanceId);
         }
     ).then(
-        function(response) {
-            defer.resolve();
+        function() {
+            remove();
         }
     )
-    return defer;
 }
 
 function deleteNetworkServiceInstance(gatewayService, nsUri, instanceId) {
diff --git a/openo-portal/portal-package/pom.xml b/openo-portal/portal-package/pom.xml
index e93419e..a1a45ee 100644
--- a/openo-portal/portal-package/pom.xml
+++ b/openo-portal/portal-package/pom.xml
@@ -101,6 +101,26 @@
           </overlays>
         </configuration>
       </plugin>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-antrun-plugin</artifactId>
+        <executions>
+          <execution>
+            <id>zip</id>
+            <phase>package</phase>
+            <goals>
+              <goal>run</goal>
+            </goals>
+            <configuration>
+              <tasks name="${project.artifactId}">
+                <zip destfile="target/openo-portal-${project.version}.zip" update="true">
+                  <zipfileset dir="target" includes="*.war"/>
+                </zip>
+              </tasks>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
     </plugins>
   </build>
 </project>
