diff --git a/osm_mon/collector/infra_collectors/base_osinfra.py b/osm_mon/collector/infra_collectors/base_osinfra.py
index 3541dbd..9c8447c 100644
--- a/osm_mon/collector/infra_collectors/base_osinfra.py
+++ b/osm_mon/collector/infra_collectors/base_osinfra.py
@@ -46,12 +46,19 @@
     def collect(self) -> List[Metric]:
         metrics = []
         vim_status = self.is_vim_ok()
-        vim_status_metric = Metric({'vim_account_id': self.vim_account['_id']}, 'vim_status', vim_status)
+        vim_project_id = self.vim_account['_admin']['projects_read'][0]
+        vim_tags = {
+            'vim_account_id': self.vim_account['_id'],
+            'project_id': vim_project_id
+        }
+        vim_status_metric = Metric(vim_tags, 'vim_status', vim_status)
         metrics.append(vim_status_metric)
         vnfrs = self.common_db.get_vnfrs(vim_account_id=self.vim_account['_id'])
         for vnfr in vnfrs:
             nsr_id = vnfr['nsr-id-ref']
+            ns_name = self.common_db.get_nsr(nsr_id)['name']
             vnf_member_index = vnfr['member-vnf-index-ref']
+            vnfr_project_id = vnfr['_admin']['projects_read'][0]
             for vdur in vnfr['vdur']:
                 if 'vim-id' not in vdur:
                     log.debug("Field vim-id is not present in vdur")
@@ -61,8 +68,10 @@
                     'vim_account_id': self.vim_account['_id'],
                     'resource_uuid': resource_uuid,
                     'nsr_id': nsr_id,
+                    'ns_name': ns_name,
                     'vnf_member_index': vnf_member_index,
-                    'vdur_name': vdur['name']
+                    'vdur_name': vdur['name'],
+                    'project_id': vnfr_project_id
                 }
                 try:
                     vm = self.nova.servers.get(resource_uuid)
diff --git a/osm_mon/collector/infra_collectors/onos.py b/osm_mon/collector/infra_collectors/onos.py
index ea2e505..21ef85d 100644
--- a/osm_mon/collector/infra_collectors/onos.py
+++ b/osm_mon/collector/infra_collectors/onos.py
@@ -42,7 +42,12 @@
     def collect(self) -> List[Metric]:
         metrics = []
         sdnc_status = self.is_sdnc_ok()
-        sdnc_status_metric = Metric({'sdnc_id': self.sdnc['_id']}, 'sdnc_status', sdnc_status)
+        sdnc_project_id = self.sdnc['_admin']['projects_read'][0]
+        sdnc_tags = {
+            'sdnc_id': self.sdnc['_id'],
+            'project_id': sdnc_project_id
+        }
+        sdnc_status_metric = Metric(sdnc_tags, 'sdnc_status', sdnc_status)
         metrics.append(sdnc_status_metric)
 
         return metrics
diff --git a/osm_mon/collector/infra_collectors/vmware.py b/osm_mon/collector/infra_collectors/vmware.py
index 0f40d48..c5db5ec 100644
--- a/osm_mon/collector/infra_collectors/vmware.py
+++ b/osm_mon/collector/infra_collectors/vmware.py
@@ -50,6 +50,7 @@
         self.admin_password = vim_account['admin_password']
         self.vim_uuid = vim_account['vim_uuid']
         self.org_name = vim_account['orgname']
+        self.vim_project_id = vim_account['project_id']
 
     def connect_vim_as_admin(self):
         """ Method connect as pvdc admin user to vCloud director.
@@ -95,6 +96,7 @@
                                                                           vim_account_info['schema_version'],
                                                                           vim_account_id)
         vim_account['vim_uuid'] = vim_account_info['_id']
+        vim_account['project_id'] = vim_account_info['_admin']['projects_read'][0]
 
         vim_config = vim_account_info['config']
         vim_account['admin_username'] = vim_config['admin_username']
@@ -171,20 +173,30 @@
     def collect(self) -> List[Metric]:
         metrics = []
         vim_status = self.check_vim_status()
-        vim_status_metric = Metric({'vim_account_id': self.vim_account_id}, 'vim_status', vim_status)
+        vim_account_id = self.vim_account_id
+        vim_project_id = self.vim_project_id
+        vim_tags = {
+            'vim_account_id': vim_account_id,
+            'project_id': vim_project_id
+        }
+        vim_status_metric = Metric(vim_tags, 'vim_status', vim_status)
         metrics.append(vim_status_metric)
-        vnfrs = self.common_db.get_vnfrs(vim_account_id=self.vim_account_id)
+        vnfrs = self.common_db.get_vnfrs(vim_account_id=vim_account_id)
         for vnfr in vnfrs:
             nsr_id = vnfr['nsr-id-ref']
+            ns_name = self.common_db.get_nsr(nsr_id)['name']
             vnf_member_index = vnfr['member-vnf-index-ref']
+            vnfr_project_id = vnfr['_admin']['projects_read'][0]
             for vdur in vnfr['vdur']:
                 resource_uuid = vdur['vim-id']
                 tags = {
                     'vim_account_id': self.vim_account_id,
                     'resource_uuid': resource_uuid,
                     'nsr_id': nsr_id,
+                    'ns_name': ns_name,
                     'vnf_member_index': vnf_member_index,
-                    'vdur_name': vdur['name']
+                    'vdur_name': vdur['name'],
+                    'project_id': vnfr_project_id
                 }
                 try:
                     vm_list = self.check_vm_status(resource_uuid)
