diff --git a/projecthandler/template/project/osm/descriptor/descriptorlist.html b/projecthandler/template/project/osm/descriptor/descriptorlist.html
index 734259f..b2222e2 100644
--- a/projecthandler/template/project/osm/descriptor/descriptorlist.html
+++ b/projecthandler/template/project/osm/descriptor/descriptorlist.html
@@ -30,46 +30,7 @@
                 </tr>
                 </thead>
                 <tbody>
-                {% for k in descriptors %}
-                    <tr role="row">
-                        <td>{{ k|get:"short-name" }} </td>
-                        <td>{{ k|get:"_id" }}</td>
-                        <td>{{ k|get:"description" }} </td>
-                        <td>{{ k|get:"vendor" }} </td>
-                        <td>{{ k|get:"version" }} </td>
-                        <td>
-                            <div class="btn-group">
-                                {% if descriptor_type == "nsd" %}
-                                    <button type="button" class="btn btn-default" data-container="body"
-                                            data-toggle="tooltip" data-placement="top" title="Instantiate NS"
-                                            onclick="javascript:openModalCreateNS({ 'project_id':'{{ project_id }}', 'descriptor_type': '{{ descriptor_type }}', 'descriptor_name':'{{ k|get:"name" }}', 'descriptor_id':'{{ k|get:"_id" }}','vim_list_url': '{% url "vims:list"  %}',  'nsd_list_url': '{% url "projects:list_descriptors"  descriptor_type=descriptor_type %}' })">
-                                        <i class="fa fa-paper-plane"></i></button>
-                                {% endif %}
-                                <button type="button" class="btn btn-default" data-container="body"
-                                        data-toggle="tooltip" data-placement="top" title="Edit"
-                                        onclick="javascript:openDescriptorView('{{ descriptor_type }}', '{{ k|get:"_id" }}')">
-                                    <i class="fa fa-edit"></i></button>
-                                <button type="button" class="btn btn-default" data-container="body"
-                                        data-toggle="tooltip" data-placement="top" title="Show content"
-                                        onclick="javascript:openPackageContentList('{{ descriptor_type }}', '{{ k|get:"_id" }}')">
-                                    <i class="fa fa-folder-open"></i></button>
-                                <button type="button" class="btn btn-default" data-container="body"
-                                        data-toggle="tooltip" data-placement="top" title="Show Graph"
-                                        onclick="location.href='/projects/graph?type={{ descriptor_type }}&id={{ k|get:"_id" }}'"
-                                        disabled><i class="fa fa-sitemap fa-fw"></i></button>
-                                <button type="button" class="btn btn-default" data-container="body"
-                                        data-toggle="tooltip" data-placement="top" title="Download package"
-                                        onclick="location.href='{% url 'projects:custom_action'  descriptor_type=descriptor_type descriptor_id=k|get:'_id' action_name='download_pkg' %}'">
-                                    <i class="fa fa-download fa-fw"></i></button>
-                                <button type="button" class="btn btn-default" data-container="body"
-                                        data-toggle="tooltip" data-placement="top" title="Delete"
-                                        onclick="javascript:deletePackage( '{{ descriptor_type }}', '{{ k|get:"_id" }}')">
-                                    <i class="far fa-trash-alt"></i></button>
-                            </div>
 
-                        </td>
-                    </tr>
-                {% endfor %}
                 </tbody>
 
             </table>
diff --git a/projecthandler/template/project/osm/osm_project_descriptors.html b/projecthandler/template/project/osm/osm_project_descriptors.html
index 182c8cc..4478ade 100644
--- a/projecthandler/template/project/osm/osm_project_descriptors.html
+++ b/projecthandler/template/project/osm/osm_project_descriptors.html
@@ -76,7 +76,7 @@
             "columns": [
                 {
                     "render": function (data, type, row) {
-                       return row['short-name'];
+                       return row['short-name'] || '';
                     },
                     "targets": 0
                 },
@@ -120,6 +120,10 @@
                            '        data-toggle="tooltip" data-placement="top" title="Show content"\n' +
                            '        onclick="javascript:openPackageContentList(\''+ descriptor_type +'\', \''+row["_id"]+'\')">\n' +
                            '    <i class="fa fa-folder-open"></i></button>\n' +
+                            '<button type="button" class="btn btn-default" data-container="body"\n' +
+                           '        data-toggle="tooltip" data-placement="top" title="Clone"\n' +
+                           '        onclick="javascript:clonePackage(\''+ descriptor_type +'\', \''+row["_id"]+'\')">\n' +
+                           '    <i class="fa fa-clone"></i></button>\n' +
                            '<button type="button" class="btn btn-default" data-container="body"\n' +
                            '        data-toggle="tooltip" data-placement="top" title="Show Graph"\n' +
                            '        onclick="location.href=\'/projects/graph?type='+descriptor_type+'&id='+row["_id"] +'\'"\n' +
@@ -130,7 +134,7 @@
                            '    <i class="fa fa-download fa-fw"></i></button>\n' +
                            '<button type="button" class="btn btn-default" data-container="body"\n' +
                            '        data-toggle="tooltip" data-placement="top" title="Delete"\n' +
-                           '        onclick="javascript:deletePackage( \'' + descriptor_type + '\', \''+row["_id"] + '\')">\n' +
+                           '        onclick="javascript:deletePackage( \'' + descriptor_type + '\', \''+row["_id"] + '\', \''+row["name"] + '\')">\n' +
                            '    <i class="far fa-trash-alt"></i></button>\n' +
                            '</div>';
 
diff --git a/projecthandler/urls/project.py b/projecthandler/urls/project.py
index 9d653b6..91c79c7 100644
--- a/projecthandler/urls/project.py
+++ b/projecthandler/urls/project.py
@@ -30,6 +30,9 @@
     url(r'^descriptors/(?P<descriptor_type>\w+)/(?P<descriptor_id>[-\w]+)/delete$',
         views.delete_descriptor,
         name='delete_descriptor'),
+    url(r'^descriptors/(?P<descriptor_type>\w+)/(?P<descriptor_id>[-\w]+)/clone',
+        views.clone_descriptor,
+        name='clone_descriptor'),
     url(r'^descriptors/(?P<descriptor_type>\w+)/(?P<descriptor_id>[-\w]+)/action/(?P<action_name>[-\w]+)',
         views.custom_action,
         name='custom_action'),
diff --git a/projecthandler/views.py b/projecthandler/views.py
index 06b4770..1f1573d 100644
--- a/projecthandler/views.py
+++ b/projecthandler/views.py
@@ -376,6 +376,32 @@
     }, url)
 
 
+@login_required
+def clone_descriptor(request, descriptor_type=None, descriptor_id=None):
+    user = osmutils.get_user(request)
+    project_id = user.project_id
+
+    try:
+        client = Client()
+        if descriptor_type == 'nsd':
+            result = client.nsd_clone(user.get_token(), descriptor_id)
+        elif descriptor_type == 'vnfd':
+            result = client.vnfd_clone(user.get_token(), descriptor_id)
+        else:
+            log.debug('Update descriptor: Unknown data type')
+            result = {'error': True, 'data': 'Update descriptor: Unknown data type'}
+    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)
+
+    else:
+        return __response_handler(request, {}, url=None, status=200)
+
+
 
 @login_required
 def new_descriptor(request, descriptor_type=None):
