diff --git a/osmclient/common/utils.py b/osmclient/common/utils.py
index 6d5ebd8..94bd72f 100644
--- a/osmclient/common/utils.py
+++ b/osmclient/common/utils.py
@@ -73,6 +73,22 @@
             result['type'] = 'nsd'
         else:
             result['type'] = 'vnfd'
+    if 'type' not in result:
+        for k1, v1 in list(dict.items()):
+            if not k1.endswith('-catalog'):
+                continue
+            for k2, v2 in v1.items():
+                if not k2.endswith('nsd') and not k2.endswith('vnfd'):
+                    continue
+                if 'nsd' in k2:
+                    result['type'] = 'nsd'
+                else:
+                    result['type'] = 'vnfd'
+                for entry in v2:
+                    for k3, v3 in list(entry.items()):
+                        # strip off preceeding chars before :
+                        key_name = k3.split(':').pop()
+                        result[key_name] = v3
 
     tar.close()
     return result
diff --git a/osmclient/scripts/osm.py b/osmclient/scripts/osm.py
index dc93b7a..7d8695c 100755
--- a/osmclient/scripts/osm.py
+++ b/osmclient/scripts/osm.py
@@ -427,7 +427,7 @@
         else:
             table = PrettyTable(['nsd name', 'id'])
         for nsd in resp:
-            name = nsd.get('name','-')
+            name = nsd.get('id','-')
             if long:
                 onb_state = nsd['_admin'].get('onboardingState','-')
                 op_state = nsd['_admin'].get('operationalState','-')
@@ -474,10 +474,10 @@
     else:
         table = PrettyTable(['nfpkg name', 'repository'])
     for vnfd in resp:
-        name = vnfd.get('product-name', '-')
+        name = vnfd.get('id', vnfd.get('name','-'))
         repository = vnfd.get('repository')
         if long:
-            vendor = vnfd.get('provider')
+            vendor = vnfd.get('provider', vnfd.get('vendor'))
             version = vnfd.get('version')
             description = vnfd.get('description')
             latest = vnfd.get('latest')
@@ -514,27 +514,28 @@
     fullclassname = ctx.obj.__module__ + "." + ctx.obj.__class__.__name__
     if fullclassname == 'osmclient.sol005.client.Client':
         if long:
-            table = PrettyTable(['nfpkg name', 'id', 'vendor', 'version', 'onboarding state', 'operational state',
+            table = PrettyTable(['nfpkg name', 'id', 'desc type', 'vendor', 'version', 'onboarding state', 'operational state',
                                   'usage state', 'date', 'last update'])
         else:
-            table = PrettyTable(['nfpkg name', 'id'])
+            table = PrettyTable(['nfpkg name', 'id', 'desc type'])
         for vnfd in resp:
-            name = vnfd['product-name'] if 'product-name' in vnfd else '-'
+            name = vnfd.get('id', vnfd.get('name','-'))
+            descriptor_type = 'sol005' if 'product-name' in vnfd else 'rel8'
             if long:
                 onb_state = vnfd['_admin'].get('onboardingState','-')
                 op_state = vnfd['_admin'].get('operationalState','-')
-                vendor = vnfd.get('provider')
+                vendor = vnfd.get('provider', vnfd.get('vendor'))
                 version = vnfd.get('version')
                 usage_state = vnfd['_admin'].get('usageState','-')
                 date = datetime.fromtimestamp(vnfd['_admin']['created']).strftime("%Y-%m-%dT%H:%M:%S")
                 last_update = datetime.fromtimestamp(vnfd['_admin']['modified']).strftime("%Y-%m-%dT%H:%M:%S")
-                table.add_row([name, vnfd['_id'], vendor, version, onb_state, op_state, usage_state, date, last_update])
+                table.add_row([name, vnfd['_id'], descriptor_type, vendor, version, onb_state, op_state, usage_state, date, last_update])
             else:
-                table.add_row([name, vnfd['_id']])
+                table.add_row([name, vnfd['_id'], descriptor_type])
     else:
         table = PrettyTable(['nfpkg name', 'id'])
         for vnfd in resp:
-            table.add_row([vnfd['product-name'], vnfd['id']])
+            table.add_row([vnfd['name'], vnfd['id']])
     table.align = 'l'
     print(table)
 
diff --git a/osmclient/sol005/vnfd.py b/osmclient/sol005/vnfd.py
index 9eb18ca..f80c000 100644
--- a/osmclient/sol005/vnfd.py
+++ b/osmclient/sol005/vnfd.py
@@ -67,6 +67,8 @@
             for vnfd in self.list():
                 if 'product-name' in vnfd and name == vnfd['product-name']:
                     return vnfd
+                elif 'name' in vnfd and name == vnfd['name']:
+                    return vnfd
         raise NotFound("vnfd {} not found".format(name))
 
     def get_individual(self, name):
@@ -194,40 +196,38 @@
 
                 for vcd_number, vcd in enumerate(vcd_list):
                     if override_epa:
-                        virtual_memory = {
-                            "mempage-size": "LARGE",
-                            "numa-node-policy": {
-                                "node-cnt": 1,
-                                "mem-policy": "STRICT"
-                            }
+                        virtual_memory = vcd["virtual-memory"]
+                        virtual_memory["mempage-size"] = "LARGE"
+                        virtual_memory["numa-enabled"] = True
+                        virtual_memory["numa-node-policy"] = {
+                            "node-cnt": 1,
+                            "mem-policy": "STRICT"
                         }
-                        virtual_cpu = {
-                            "pinning": {
-                                "policy": "static",
-                                "thread-policy": "PREFER"
-                            }
+                        virtual_cpu = vcd["virtual-cpu"]
+                        virtual_cpu["pinning"] = {
+                            "policy": "static",
+                            "thread-policy": "PREFER"
                         }
 
-                        memory_override_string = "virtual-compute-desc.{}.virtual-cpu={};"\
+                        cpu_override_string = "virtual-compute-desc.{}.virtual-cpu={};"\
                                                  .format(vcd_number, quote(yaml.safe_dump(virtual_cpu)))
-                        cpu_override_string = "virtual-compute-desc.{}.virtual-memory={};"\
+                        memory_override_string = "virtual-compute-desc.{}.virtual-memory={};"\
                                               .format(vcd_number, quote(yaml.safe_dump(virtual_memory)))
                         special_override_string = "{}{}{}".format(special_override_string,
                                                                   cpu_override_string, memory_override_string)
 
-                        headers['Query-String-Format'] = 'yaml'
+                    headers['Query-String-Format'] = 'yaml'
                     if override_nonepa:
-                        virtual_memory = {
-                            "mempage-size": "",
-                            "numa-node-policy": {}
-                        }
-                        virtual_cpu = {
-                            "pinning": {}
-                        }
+                        virtual_memory = vcd["virtual-memory"]
+                        virtual_memory["mempage-size"] = ""
+                        virtual_memory["numa-enabled"] = ""
+                        virtual_memory["numa-node-policy"] = {}
+                        virtual_cpu = vcd["virtual-cpu"]
+                        virtual_cpu["pinning"] = {}
 
-                        memory_override_string = "virtual-compute-desc.{}.virtual-cpu={};"\
+                        cpu_override_string = "virtual-compute-desc.{}.virtual-cpu={};"\
                                                  .format(vcd_number, quote(yaml.safe_dump(virtual_cpu)))
-                        cpu_override_string = "virtual-compute-desc.{}.virtual-memory={};"\
+                        memory_override_string = "virtual-compute-desc.{}.virtual-memory={};"\
                                               .format(vcd_number, quote(yaml.safe_dump(virtual_memory)))
                         special_override_string = "{}{}{}".format(special_override_string,
                                                                   cpu_override_string, memory_override_string)
