diff --git a/projecthandler/template/project/descriptor/descriptor_view_base.html b/projecthandler/template/project/descriptor/descriptor_view_base.html
index e97649d..918e810 100644
--- a/projecthandler/template/project/descriptor/descriptor_view_base.html
+++ b/projecthandler/template/project/descriptor/descriptor_view_base.html
@@ -22,8 +22,8 @@
   	{{ block.super }}
 <div class="row">
     <div class="col-md-12">
-    <div class="nav-tabs-custom">
-    <ul class="nav nav-tabs">
+    <div class="nav-tabs-custom" style="position: relative;">
+    <ul class="nav nav-tabs" >
         {% block tab_pane_button_list %}
 
         {% endblock %}
@@ -33,6 +33,16 @@
         {% endblock %}
 
     </ul>
+        <div class="alert alert-success" id="success-alert" style="position: absolute; z-index: 100; top: 44px; left: 0;
+    width: 100%;
+    border-radius: 1px;
+    background-color: rgba(0, 166, 90, 0.8) !important;
+    text-align: center;
+    border-color: rgba(0, 141, 76, 0.4);" hidden>
+            <button type="button" class="close" onclick="$('#success-alert').toggle()">x</button>
+            <strong>Success! </strong>
+            Descriptor updated!
+        </div>
     <div class="tab-content">
         {% block tab_pane_list %}
 
diff --git a/projecthandler/template/project/osm/descriptor/descriptor_view.html b/projecthandler/template/project/osm/descriptor/descriptor_view.html
index 3fd70a2..aa43149 100644
--- a/projecthandler/template/project/osm/descriptor/descriptor_view.html
+++ b/projecthandler/template/project/osm/descriptor/descriptor_view.html
@@ -31,6 +31,7 @@
     <li class="pull-right"><button id="save" type="button" class="btn btn-block btn-primary btn-sm"  onclick="update(this.id)" ><i class="fa fa-save"></i> Update</button></li>
     <li class="pull-right"><button id="save_show_graph" type="button" class="btn btn-block btn-primary btn-sm"  onclick="update(this.id)" disabled><i class="fa fa-save"></i> Update and Show Graph</button></li>
     <li class="pull-right"><button type="button" class="btn btn-block btn-primary btn-sm"  onclick="goToGraph()" disabled><i class="fa fa-sitemap"></i> Show Graph</button></li>
+
 {% endblock %}
 
 {% block tab_pane_list %}
@@ -107,7 +108,12 @@
             },
             success: function (result) {
                 dialog.modal('hide');
+                $("#success-alert").fadeTo(2000, 500).slideDown(500, function(){
+                    setTimeout(function () {
+                        $("#success-alert").slideUp(500);
+                    }, 2000);
 
+                });
             },
             error: function (result) {
                 console.log(result);
diff --git a/projecthandler/views.py b/projecthandler/views.py
index 1f1573d..9d4055d 100644
--- a/projecthandler/views.py
+++ b/projecthandler/views.py
@@ -47,7 +47,6 @@
         project_data = dict(filter(lambda i: i[0] in keys and len(i[1]) > 0, new_project_dict.items()))
         result = client.project_create(user.get_token(), project_data)
         if isinstance(result, dict) and 'error' in result and result['error']:
-            print result
             return __response_handler(request, result['data'], url=None,
                                       status=result['data']['status'] if 'status' in result['data'] else 500)
         else:
@@ -275,7 +274,6 @@
                       {'project_overview': project_overview, 'project_id': project_id})
 
     except Exception as e:
-        print e
         return render(request, 'error.html', {'error_msg': 'Error open project! Please retry.'})
 
 
@@ -286,7 +284,6 @@
     client = Client()
     result = client.project_delete(user.get_token(), project_id)
     if isinstance(result, dict) and 'error' in result and result['error']:
-        print result
         return __response_handler(request, result['data'], url=None,
                                   status=result['data']['status'] if 'status' in result['data'] else 500)
     else:
@@ -310,7 +307,6 @@
         project_data = dict(filter(lambda i: i[0] in keys and len(i[1]) > 0, project_dict.items()))
         result = client.project_edit(user.get_token(), project_id, project_data)
         if isinstance(result, dict) and 'error' in result and result['error']:
-            print result
             return __response_handler(request, result['data'], url=None,
                                       status=result['data']['status'] if 'status' in result['data'] else 500)
         else:
@@ -322,7 +318,6 @@
     user = osmutils.get_user(request)
     project_id = user.project_id
     client = Client()
-    print request.GET.dict()
     try:
         if descriptor_type == 'nsd':
             descriptors = client.nsd_list(user.get_token())
@@ -393,7 +388,6 @@
     except Exception as e:
         log.exception(e)
         result = {'error': True, 'data': str(e)}
-    print result
     if result['error'] == True:
         return __response_handler(request, result['data'], url=None,
                                   status=result['data']['status'] if 'status' in result['data'] else 500)
@@ -418,7 +412,6 @@
         }, page)
     elif request.method == 'POST':
         data_type = request.POST.get('type')
-        print "TYPE", data_type
         if data_type == "file":
             file_uploaded = request.FILES['file']
 
@@ -439,7 +432,6 @@
             result = {'error': True, 'data': 'Create descriptor: Unknown data type'}
 
         if result['error']:
-            print result
             return __response_handler(request, result['data'], url=None, status=result['data']['status'] if 'status' in result['data'] else 500)
         else:
             return __response_handler(request, {}, url=None, status=200)
@@ -450,7 +442,6 @@
     user = osmutils.get_user(request)
     project_id = user.project_id
     if request.method == 'POST':
-        print "edit_descriptor"
         new_data = request.POST.get('text'),
         data_type = request.POST.get('type')
         #print new_data
@@ -461,14 +452,12 @@
                     new_data = yaml.load(request.POST.get('text'))
                 elif data_type == 'json':
                     new_data = json.loads(request.POST.get('text'))
-                print new_data
                 result = client.nsd_update(user.get_token(), descriptor_id, new_data)
             elif descriptor_type == 'vnfd':
                 if data_type == 'yaml':
                     new_data = yaml.load(request.POST.get('text'))
                 elif data_type == 'json':
                     new_data = json.loads(request.POST.get('text'))
-                print new_data
                 result = client.vnfd_update(user.get_token(), descriptor_id, new_data)
 
             else:
@@ -477,7 +466,6 @@
         except Exception as e:
             log.exception(e)
             result = {'error': True, 'data': str(e)}
-        print result
         if result['error'] == True:
             return __response_handler(request, result['data'], url=None, status=result['data']['status'] if 'status' in result['data'] else 500)
 
@@ -491,11 +479,9 @@
             client = Client()
             if descriptor_type == 'nsd':
                 result = client.nsd_get(user.get_token(), descriptor_id)
-                print result
             elif descriptor_type == 'vnfd':
                 result = client.vnfd_get(user.get_token(), descriptor_id)
 
-                print result
         except Exception as e:
             log.exception(e)
             result = {'error': True, 'data': str(e)}
@@ -558,7 +544,6 @@
 @login_required
 def custom_action(request, descriptor_id=None, descriptor_type=None, action_name=None):
     if request.method == 'GET':
-        print "Custom action: " + action_name
         return globals()[action_name](request, descriptor_id, descriptor_type)
 
 
