diff --git a/ChangeLog.d/bugfix/ZBX-23631 b/ChangeLog.d/bugfix/ZBX-23631
new file mode 100644
index 00000000000..ceb8b2010c7
--- /dev/null
+++ b/ChangeLog.d/bugfix/ZBX-23631
@@ -0,0 +1 @@
+.......PS. [ZBX-23631] removed tag 'tags' in case of an error collecting tags from *discovery items (MVekslers)
diff --git a/src/zabbix_server/poller/checks_simple_vmware.c b/src/zabbix_server/poller/checks_simple_vmware.c
index d707077acdc..2d48dc11d48 100644
--- a/src/zabbix_server/poller/checks_simple_vmware.c
+++ b/src/zabbix_server/poller/checks_simple_vmware.c
@@ -682,17 +682,21 @@ static int	custquery_read_result(zbx_vmware_cust_query_t *custom_query, AGENT_RE
  *                                                                            *
  * Parameters: entity_tags - [IN] the all tags and linked objects             *
  *             uuid        - [IN] the vmware object uuid                      *
+ *             tag_name    - [IN] the name of tags array                      *
  *             json_data   - [OUT] the json document                          *
  *             error       - [OUT] the error of tags receiving (optional)     *
  *                                                                            *
  ******************************************************************************/
-static void	vmware_tags_uuid_json(const zbx_vmware_data_tags_t *data_tags, const char *uuid,
+static void	vmware_tags_uuid_json(const zbx_vmware_data_tags_t *data_tags, const char *uuid, const char *tag_name,
 		struct zbx_json *json_data, char **error)
 {
 	int				i;
 	zbx_vmware_entity_tags_t	entity_cmp;
 	zbx_vector_vmware_tag_t		*tags;
 
+	if (NULL != tag_name)
+		return;
+
 	if (NULL != data_tags->error)
 	{
 		if (NULL != error)
@@ -717,6 +721,9 @@ static void	vmware_tags_uuid_json(const zbx_vmware_data_tags_t *data_tags, const
 
 	tags = &data_tags->entity_tags.values[i]->tags;
 
+	if (NULL != tag_name)
+		zbx_json_addarray(json_data, tag_name);
+
 	for (i = 0; i < tags->values_num; i++)
 	{
 		zbx_vmware_tag_t	*tag = tags->values[i];
@@ -727,6 +734,10 @@ static void	vmware_tags_uuid_json(const zbx_vmware_data_tags_t *data_tags, const
 		zbx_json_addstring(json_data, "category", tag->category, ZBX_JSON_TYPE_STRING);
 		zbx_json_close(json_data);
 	}
+
+	if (NULL != tag_name)
+		zbx_json_close(json_data);
+
 }
 
 /******************************************************************************
@@ -736,17 +747,18 @@ static void	vmware_tags_uuid_json(const zbx_vmware_data_tags_t *data_tags, const
  * Parameters: entity_tags - [IN] the all tags and linked objects             *
  *             type        - [IN] the HostSystem, VirtualMachine etc          *
  *             id          - [IN] the id of hv, vm etc                        *
+ *             tag_name    - [IN] the name of tags array                      *
  *             json_data   - [OUT] the json document                          *
  *             error       - [OUT] the error of tags receiving (optional)     *
  *                                                                            *
  ******************************************************************************/
 static void	vmware_tags_id_json(const zbx_vmware_data_tags_t *data_tags, const char *type,
-		const char *id, struct zbx_json *json_data, char **error)
+		const char *id, const char *tag_name, struct zbx_json *json_data, char **error)
 {
 	char	uuid[MAX_STRING_LEN / 8];
 
 	zbx_snprintf(uuid, sizeof(uuid),"%s:%s", type, id);
-	vmware_tags_uuid_json(data_tags, uuid, json_data, error);
+	vmware_tags_uuid_json(data_tags, uuid, tag_name, json_data, error);
 }
 
 int	check_vcenter_cluster_discovery(AGENT_REQUEST *request, const char *username, const char *password,
@@ -795,17 +807,14 @@ int	check_vcenter_cluster_discovery(AGENT_REQUEST *request, const char *username
 			zbx_json_addstring(&json_data, "rpid", rp->id, ZBX_JSON_TYPE_STRING);
 			zbx_json_addstring(&json_data, "rpath", rp->path, ZBX_JSON_TYPE_STRING);
 			zbx_json_adduint64(&json_data, "vm_count", rp->vm_num);
-			zbx_json_addarray(&json_data, "tags");
-			vmware_tags_id_json(&service->data_tags, ZBX_VMWARE_SOAP_RESOURCEPOOL, rp->id, &json_data,
-					NULL);
-			zbx_json_close(&json_data);
+			vmware_tags_id_json(&service->data_tags, ZBX_VMWARE_SOAP_RESOURCEPOOL, rp->id, "tags",
+					&json_data, NULL);
 			zbx_json_close(&json_data);
 		}
 
 		zbx_json_close(&json_data);
-		zbx_json_addarray(&json_data, "tags");
-		vmware_tags_id_json(&service->data_tags, ZBX_VMWARE_SOAP_CLUSTER, cluster->id, &json_data, NULL);
-		zbx_json_close(&json_data);
+		vmware_tags_id_json(&service->data_tags, ZBX_VMWARE_SOAP_CLUSTER, cluster->id, "tags", &json_data,
+				NULL);
 		zbx_json_addarray(&json_data, "datastore_uuid");
 
 		for (j = 0; j < cluster->dss_uuid.values_num; j++)
@@ -996,7 +1005,7 @@ int	check_vcenter_cluster_tags_get(AGENT_REQUEST *request, const char *username,
 	}
 
 	zbx_json_initarray(&json_data, ZBX_JSON_STAT_BUF_LEN);
-	vmware_tags_id_json(&service->data_tags, ZBX_VMWARE_SOAP_CLUSTER, cl->id, &json_data, &error);
+	vmware_tags_id_json(&service->data_tags, ZBX_VMWARE_SOAP_CLUSTER, cl->id, NULL, &json_data, &error);
 	zbx_json_close(&json_data);
 
 	if (NULL == error)
@@ -1489,17 +1498,13 @@ int	check_vcenter_hv_discovery(AGENT_REQUEST *request, const char *username, con
 			zbx_json_addstring(&json_data, "rpid", rp->id, ZBX_JSON_TYPE_STRING);
 			zbx_json_addstring(&json_data, "rpath", rp->path, ZBX_JSON_TYPE_STRING);
 			zbx_json_adduint64(&json_data, "vm_count", rp->vm_num);
-			zbx_json_addarray(&json_data, "tags");
-			vmware_tags_id_json(&service->data_tags, ZBX_VMWARE_SOAP_RESOURCEPOOL, rp->id, &json_data,
-					NULL);
-			zbx_json_close(&json_data);
+			vmware_tags_id_json(&service->data_tags, ZBX_VMWARE_SOAP_RESOURCEPOOL, rp->id, "tags",
+					&json_data, NULL);
 			zbx_json_close(&json_data);
 		}
 
 		zbx_json_close(&json_data);
-		zbx_json_addarray(&json_data, "tags");
-		vmware_tags_uuid_json(&service->data_tags, hv->uuid, &json_data, NULL);
-		zbx_json_close(&json_data);
+		vmware_tags_uuid_json(&service->data_tags, hv->uuid, "tags", &json_data, NULL);
 		zbx_json_close(&json_data);
 	}
 
@@ -2327,7 +2332,7 @@ int	check_vcenter_hv_tags_get(AGENT_REQUEST *request, const char *username, cons
 	}
 
 	zbx_json_initarray(&json_data, ZBX_JSON_STAT_BUF_LEN);
-	vmware_tags_uuid_json(&service->data_tags, hv->uuid, &json_data, &error);
+	vmware_tags_uuid_json(&service->data_tags, hv->uuid, NULL, &json_data, &error);
 	zbx_json_close(&json_data);
 
 	if (NULL == error)
@@ -2459,9 +2464,7 @@ int	check_vcenter_hv_datastore_discovery(AGENT_REQUEST *request, const char *use
 		}
 
 		zbx_json_close(&json_data);
-		zbx_json_addarray(&json_data, "tags");
-		vmware_tags_uuid_json(&service->data_tags, dsname->uuid, &json_data, NULL);
-		zbx_json_close(&json_data);
+		vmware_tags_uuid_json(&service->data_tags, dsname->uuid, "tags", &json_data, NULL);
 		zbx_json_close(&json_data);
 	}
 
@@ -3628,9 +3631,7 @@ int	check_vcenter_datastore_discovery(AGENT_REQUEST *request, const char *userna
 		}
 
 		zbx_json_close(&json_data);
-		zbx_json_addarray(&json_data, "tags");
-		vmware_tags_uuid_json(&service->data_tags, datastore->uuid, &json_data, NULL);
-		zbx_json_close(&json_data);
+		vmware_tags_uuid_json(&service->data_tags, datastore->uuid, "tags", &json_data, NULL);
 		zbx_json_close(&json_data);
 	}
 
@@ -3692,7 +3693,7 @@ int	check_vcenter_datastore_tags_get(AGENT_REQUEST *request, const char *usernam
 	}
 
 	zbx_json_initarray(&json_data, ZBX_JSON_STAT_BUF_LEN);
-	vmware_tags_uuid_json(&service->data_tags, ds->uuid, &json_data, &error);
+	vmware_tags_uuid_json(&service->data_tags, ds->uuid, NULL, &json_data, &error);
 	zbx_json_close(&json_data);
 
 	if (NULL == error)
@@ -4325,9 +4326,7 @@ int	check_vcenter_vm_discovery(AGENT_REQUEST *request, const char *username, con
 			}
 
 			zbx_json_close(&json_data);
-			zbx_json_addarray(&json_data, "tags");
-			vmware_tags_uuid_json(&service->data_tags, vm->uuid, &json_data, NULL);
-			zbx_json_close(&json_data);
+			vmware_tags_uuid_json(&service->data_tags, vm->uuid, "tags", &json_data, NULL);
 			zbx_json_close(&json_data);
 		}
 	}
@@ -4911,7 +4910,7 @@ int	check_vcenter_vm_tags_get(AGENT_REQUEST *request, const char *username, cons
 	}
 
 	zbx_json_initarray(&json_data, ZBX_JSON_STAT_BUF_LEN);
-	vmware_tags_uuid_json(&service->data_tags, vm->uuid, &json_data, &error);
+	vmware_tags_uuid_json(&service->data_tags, vm->uuid, NULL, &json_data, &error);
 	zbx_json_close(&json_data);
 
 	if (NULL == error)
@@ -5275,9 +5274,7 @@ int	check_vcenter_dc_discovery(AGENT_REQUEST *request, const char *username, con
 		zbx_json_addobject(&json_data, NULL);
 		zbx_json_addstring(&json_data, "{#DATACENTER}", datacenter->name, ZBX_JSON_TYPE_STRING);
 		zbx_json_addstring(&json_data, "{#DATACENTERID}", datacenter->id, ZBX_JSON_TYPE_STRING);
-		zbx_json_addarray(&json_data, "tags");
-		vmware_tags_id_json(&service->data_tags, ZBX_VMWARE_SOAP_DC, datacenter->id, &json_data, NULL);
-		zbx_json_close(&json_data);
+		vmware_tags_id_json(&service->data_tags, ZBX_VMWARE_SOAP_DC, datacenter->id, "tags", &json_data, NULL);
 		zbx_json_close(&json_data);
 	}
 
@@ -5348,7 +5345,7 @@ int	check_vcenter_dc_tags_get(AGENT_REQUEST *request, const char *username, cons
 	}
 
 	zbx_json_initarray(&json_data, ZBX_JSON_STAT_BUF_LEN);
-	vmware_tags_id_json(&service->data_tags, ZBX_VMWARE_SOAP_DC, dc->id, &json_data, &error);
+	vmware_tags_id_json(&service->data_tags, ZBX_VMWARE_SOAP_DC, dc->id, NULL, &json_data, &error);
 	zbx_json_close(&json_data);
 
 	if (NULL == error)
