diff --git a/static/src/instancehandler/instance_create.js b/static/src/instancehandler/instance_create.js
index fd6ecfa..124fb05 100644
--- a/static/src/instancehandler/instance_create.js
+++ b/static/src/instancehandler/instance_create.js
@@ -14,6 +14,7 @@
    limitations under the License.
 */
 
+
 function openModalCreatePDU(args) {
     var select2_groups = $('#pdu_vim_accounts').select2({
         placeholder: 'Select Vims',
diff --git a/static/src/instancehandler/instance_list.js b/static/src/instancehandler/instance_list.js
index 5580bbf..d04f465 100644
--- a/static/src/instancehandler/instance_list.js
+++ b/static/src/instancehandler/instance_list.js
@@ -54,7 +54,7 @@
                     }
                     else {
                         dialog.modal('hide');
-                        location.reload();
+                        table.ajax.reload();
                     }
                 },
                 error: function (result) {
@@ -100,7 +100,7 @@
                     }
                     else {
                         dialog.modal('hide');
-                        location.reload();
+                        table.ajax.reload();
                     }
                 },
                 error: function (result) {
@@ -138,7 +138,7 @@
                     }
                     else {
                         dialog.modal('hide');
-                        location.reload();
+                        table.ajax.reload();
                     }
                 },
                 error: function (error) {
@@ -265,6 +265,35 @@
     $(document).on('click', '.interface-group .btn-add', addInterfaceGroup);
     $(document).on('click', '.interface-group .btn-remove', removeInterfaceGroup);
 
+    
+    $("#formCreateNS").submit(function (event) {
+        event.preventDefault(); //prevent default action
+        var post_url = $(this).attr("action"); //get form action url
+        var request_method = $(this).attr("method"); //get form GET/POST method
+        var form_data = new FormData(this); //Encode form elements for submission
+        $.ajax({
+            url: post_url,
+            type: request_method,
+            data: form_data,
+            headers: {
+                "Accept": 'application/json'
+            },
+            contentType: false,
+            processData: false
+        }).done(function (response, textStatus, jqXHR) {
+            table.ajax.reload();
+            $('#modal_new_instance').modal('hide');
+        }).fail(function (result) {
+            var data = result.responseJSON;
+            var title = "Error " + (data.code ? data.code : 'unknown');
+            var message = data.detail ? data.detail : 'No detail available.';
+            bootbox.alert({
+                title: title,
+                message: message
+            });
+        });
+    });
+
     $("#formCreatePDU").submit(function (event) {
         event.preventDefault(); //prevent default action
         var post_url = $(this).attr("action"); //get form action url
