From 26c04d1cd24a080982a4006a84d234e0e9ee69d4 Mon Sep 17 00:00:00 2001 From: Habib Nuhu Date: Fri, 19 Dec 2025 09:22:11 +0100 Subject: [PATCH 1/2] Add Vulnerability kind support to ServiceNow integration documentation --- .../incident-management/servicenow.md | 180 +++++++++++++++++- 1 file changed, 179 insertions(+), 1 deletion(-) diff --git a/docs/build-your-software-catalog/sync-data-to-catalog/incident-management/servicenow.md b/docs/build-your-software-catalog/sync-data-to-catalog/incident-management/servicenow.md index fa0a4bdc8b..3672bd9ee9 100644 --- a/docs/build-your-software-catalog/sync-data-to-catalog/incident-management/servicenow.md +++ b/docs/build-your-software-catalog/sync-data-to-catalog/incident-management/servicenow.md @@ -37,6 +37,7 @@ The resources that can be ingested from ServiceNow into Port are listed below. - `Group` - (`/api/now/table/sys_user_group`) - `Service Catalog` - (`/api/now/table/sc_catalog`) - `Incident` - (`/api/now/table/incident`) +- `Vulnerability` - (`/api/now/table/sn_vul_vulnerable_item`) :::tip Ingesting extra resources While the section above only lists three supported resources, Port's ServiceNow integration uses the [ServiceNow Table API](https://developer.servicenow.com/dev.do#!/reference/api/xanadu/rest/c_TableAPI#table-GET) to ingest entities. @@ -982,8 +983,131 @@ resources: contactType: .contact_type createdOn: '.sys_created_on | (strptime("%Y-%m-%d %H:%M:%S") | strftime("%Y-%m-%dT%H:%M:%SZ"))' createdBy: .sys_created_by - isActive: .active + isActive: .active + priority: .priority +- kind: sn_vul_vulnerable_item + selector: + query: 'true' + apiQueryParams: + sysparmDisplayValue: 'true' + sysparmExcludeReferenceLink: 'false' + sysparmFields: 'sys_id,state,first_found,last_found,priority,risk_score,sys_created_on,sys_created_by,sys_updated_on,sys_updated_by,active' + port: + entity: + mappings: + identifier: .sys_id + title: (.number // "Vulnerability " + .sys_id) + blueprint: '"servicenowVulnerability"' + properties: + state: .state + priority: .priority + riskScore: .risk_score + firstFound: .first_found + lastFound: .last_found + createdOn: .sys_created_on + createdBy: .sys_created_by + updatedOn: .sys_updated_on + updatedBy: .sys_updated_by + isActive: .active +``` + + + +### Vulnerability + +
+Vulnerability blueprint + +```json showLineNumbers +{ + "identifier": "servicenowVulnerability", + "title": "Servicenow Vulnerability", + "icon": "Servicenow", + "schema": { + "properties": { + "state": { + "title": "State", + "type": "string" + }, + "priority": { + "title": "Priority", + "type": "string" + }, + "riskScore": { + "title": "Risk Score", + "type": "number" + }, + "firstFound": { + "title": "First Found", + "type": "string" + }, + "lastFound": { + "title": "Last Found", + "type": "string" + }, + "createdOn": { + "title": "Created On", + "type": "string" + }, + "createdBy": { + "title": "Created By", + "type": "string" + }, + "updatedOn": { + "title": "Updated On", + "type": "string" + }, + "updatedBy": { + "title": "Updated By", + "type": "string" + }, + "isActive": { + "title": "Is Active", + "type": "boolean" + } + }, + "required": [] + }, + "mirrorProperties": {}, + "calculationProperties": {}, + "aggregationProperties": {}, + "relations": {} +} +``` + +
+ +
+Integration configuration + +```yaml showLineNumbers +createMissingRelatedEntities: true +deleteDependentEntities: true +resources: + - kind: sn_vul_vulnerable_item + selector: + query: "true" + apiQueryParams: + sysparmDisplayValue: 'true' + sysparmExcludeReferenceLink: 'false' + sysparmFields: 'sys_id,state,first_found,last_found,priority,risk_score,sys_created_on,sys_created_by,sys_updated_on,sys_updated_by,active' + port: + entity: + mappings: + identifier: .sys_id + title: (.number // "Vulnerability " + .sys_id) + blueprint: '"servicenowVulnerability"' + properties: + state: .state priority: .priority + riskScore: .risk_score + firstFound: .first_found + lastFound: .last_found + createdOn: .sys_created_on + createdBy: .sys_created_by + updatedOn: .sys_updated_on + updatedBy: .sys_updated_by + isActive: .active ```
@@ -1225,6 +1349,28 @@ Here is an example of the payload structure from ServiceNow: +
+ Vulnerability response data + +```json showLineNumbers +{ + "sys_id": "b7ad7e0347b1f650360b3b12d16d434f", + "number": "VIT0010001", + "state": "Under Investigation", + "priority": "2 - High", + "risk_score": "75", + "first_found": "2024-01-15", + "last_found": "2024-12-18", + "sys_created_on": "2025-12-18 06:21:33", + "sys_created_by": "admin", + "sys_updated_on": "2025-12-18 06:21:33", + "sys_updated_by": "admin", + "active": "true" +} +``` + +
+ ### Mapping Result The combination of the sample payload and the Ocean configuration generates the following Port entity: @@ -1313,6 +1459,38 @@ The combination of the sample payload and the Ocean configuration generates the +
+ Vulnerability entity in Port + +```json showLineNumbers +{ + "identifier": "b7ad7e0347b1f650360b3b12d16d434f", + "title": "VIT0010001", + "icon": "ServiceNow", + "blueprint": "servicenowVulnerability", + "team": [], + "properties": { + "state": "Under Investigation", + "priority": "2 - High", + "riskScore": "75", + "firstFound": "2024-01-15", + "lastFound": "2024-12-18", + "createdOn": "2025-12-18 06:21:33", + "createdBy": "admin", + "updatedOn": "2025-12-18 06:21:33", + "updatedBy": "admin", + "isActive": "true" + }, + "relations": {}, + "createdAt": "2025-12-18T06:21:33.000Z", + "createdBy": "hBx3VFZjqgLPEoQLp7POx5XaoB0cgsxW", + "updatedAt": "2025-12-18T06:21:33.000Z", + "updatedBy": "hBx3VFZjqgLPEoQLp7POx5XaoB0cgsxW" +} +``` + +
+ ## Relevant Guides For relevant guides and examples, see the [guides section](https://docs.port.io/guides?tags=ServiceNow). From 179b5a66d65bf9d87a362c015cc89602a6575259 Mon Sep 17 00:00:00 2001 From: Habib Nuhu Date: Fri, 19 Dec 2025 09:25:46 +0100 Subject: [PATCH 2/2] Fix indentation for Vulnerability mapping in ServiceNow integration docs --- .../incident-management/servicenow.md | 52 +++++++++---------- 1 file changed, 26 insertions(+), 26 deletions(-) diff --git a/docs/build-your-software-catalog/sync-data-to-catalog/incident-management/servicenow.md b/docs/build-your-software-catalog/sync-data-to-catalog/incident-management/servicenow.md index 3672bd9ee9..831a63837a 100644 --- a/docs/build-your-software-catalog/sync-data-to-catalog/incident-management/servicenow.md +++ b/docs/build-your-software-catalog/sync-data-to-catalog/incident-management/servicenow.md @@ -983,32 +983,32 @@ resources: contactType: .contact_type createdOn: '.sys_created_on | (strptime("%Y-%m-%d %H:%M:%S") | strftime("%Y-%m-%dT%H:%M:%SZ"))' createdBy: .sys_created_by - isActive: .active - priority: .priority -- kind: sn_vul_vulnerable_item - selector: - query: 'true' - apiQueryParams: - sysparmDisplayValue: 'true' - sysparmExcludeReferenceLink: 'false' - sysparmFields: 'sys_id,state,first_found,last_found,priority,risk_score,sys_created_on,sys_created_by,sys_updated_on,sys_updated_by,active' - port: - entity: - mappings: - identifier: .sys_id - title: (.number // "Vulnerability " + .sys_id) - blueprint: '"servicenowVulnerability"' - properties: - state: .state - priority: .priority - riskScore: .risk_score - firstFound: .first_found - lastFound: .last_found - createdOn: .sys_created_on - createdBy: .sys_created_by - updatedOn: .sys_updated_on - updatedBy: .sys_updated_by - isActive: .active + isActive: .active + priority: .priority + - kind: sn_vul_vulnerable_item + selector: + query: 'true' + apiQueryParams: + sysparmDisplayValue: 'true' + sysparmExcludeReferenceLink: 'false' + sysparmFields: 'sys_id,state,first_found,last_found,priority,risk_score,sys_created_on,sys_created_by,sys_updated_on,sys_updated_by,active' + port: + entity: + mappings: + identifier: .sys_id + title: (.number // "Vulnerability " + .sys_id) + blueprint: '"servicenowVulnerability"' + properties: + state: .state + priority: .priority + riskScore: .risk_score + firstFound: .first_found + lastFound: .last_found + createdOn: .sys_created_on + createdBy: .sys_created_by + updatedOn: .sys_updated_on + updatedBy: .sys_updated_by + isActive: .active ```