Marketplace Pricing Download

TPRM Issue Summarization

Summarize Third-Party Risk Management issues including vendor risk exposure, assessment gaps, remediation status, and compliance impact across the TPRM lifecycle

ID: general.regulatory.tprm-issue-summarization Version: 0.1.0 License: Apache-2.0 Author: Happy-Technologies-LLC Language: en Added: 2026-06-01
⬇ Download

TPRM Issue Summarization

Overview

This skill generates comprehensive summaries of Third-Party Risk Management (TPRM) issues in ServiceNow. It covers:

  • Aggregating TPRM issues by vendor, risk tier, and assessment cycle
  • Evaluating vendor risk exposure across security, operational, financial, and compliance dimensions
  • Identifying assessment gaps where vendors lack current or complete assessments
  • Tracking remediation status for open findings and overdue corrective actions
  • Measuring compliance impact by mapping vendor issues to regulatory requirements
  • Producing executive-ready dashboards for vendor risk committees

When to use:

  • Preparing for vendor risk committee meetings or board reporting
  • During annual or periodic third-party assessment reviews
  • When onboarding new vendors and evaluating risk posture
  • After a vendor security incident requiring rapid exposure analysis
  • For regulatory examinations requiring third-party risk documentation

Prerequisites

  • Roles: sn_tprm.viewer, sn_tprm.manager, sn_grc.manager, or admin
  • Plugins: com.sn_tprm (Third-Party Risk Management), com.sn_grc
  • Access: Read access to sn_tprm_assessment, sn_tprm_issue, sn_tprm_vendor_assessment, sn_grc_profile, core_company tables
  • Knowledge: Understanding of vendor risk tiering methodology and organizational third-party risk appetite

Key TPRM Tables

Table Purpose Key Fields
sn_tprm_assessment TPRM assessment records number, short_description, state, assessment_type, vendor, risk_tier, due_date, score
sn_tprm_issue Issues found during assessments number, short_description, state, priority, vendor, assessment, remediation_plan, due_date
sn_tprm_vendor_assessment Vendor-level assessment rollups vendor, assessment_status, overall_risk, last_assessment_date, next_assessment_date
core_company Vendor/company master records name, sys_id, vendor_type, stock_symbol, city, state, country
sn_grc_profile GRC profile linked to vendors number, short_description, profile_type, applies_to
sn_grc_risk Risk records associated with vendor profiles number, risk_score, state, treatment, residual_risk, inherent_risk

Procedure

Step 1: Retrieve Open TPRM Issues

Query all active TPRM issues to establish the current issue landscape.

Using MCP (Claude Code/Desktop):

Tool: SN-Query-Table
Parameters:
  table_name: sn_tprm_issue
  query: active=true^ORDERBYDESCpriority
  fields: sys_id,number,short_description,description,state,priority,vendor,assessment,remediation_plan,due_date,assigned_to,category,risk_rating,sys_created_on
  limit: 200

Using REST API:

GET /api/now/table/sn_tprm_issue?sysparm_query=active=true^ORDERBYDESCpriority&sysparm_fields=sys_id,number,short_description,description,state,priority,vendor,assessment,remediation_plan,due_date,assigned_to,category,risk_rating&sysparm_limit=200&sysparm_display_value=true

Step 2: Gather Vendor Assessment Context

For each vendor with issues, retrieve their assessment history and current risk posture.

Using MCP:

Tool: SN-Query-Table
Parameters:
  table_name: sn_tprm_vendor_assessment
  query: vendor=[vendor_sys_id]
  fields: sys_id,vendor,assessment_status,overall_risk,last_assessment_date,next_assessment_date,risk_tier,assessment_score
  limit: 10

Using REST API:

GET /api/now/table/sn_tprm_vendor_assessment?sysparm_query=vendor=[vendor_sys_id]&sysparm_fields=sys_id,vendor,assessment_status,overall_risk,last_assessment_date,next_assessment_date,risk_tier,assessment_score&sysparm_limit=10&sysparm_display_value=true

Step 3: Identify Assessment Gaps

Find vendors with overdue or missing assessments to highlight blind spots.

Using MCP:

Tool: SN-Execute-Background-Script
Parameters:
  script: |
    var gaps = [];
    var va = new GlideRecord('sn_tprm_vendor_assessment');
    va.addQuery('next_assessment_date', '<', new GlideDateTime().toString());
    va.addOrCondition('assessment_status', 'incomplete');
    va.addOrCondition('assessment_status', 'not_started');
    va.query();

    while (va.next()) {
      var vendor = new GlideRecord('core_company');
      vendor.get(va.vendor);
      gaps.push({
        vendor_name: vendor.name.toString(),
        vendor_sys_id: va.vendor.toString(),
        assessment_status: va.assessment_status.getDisplayValue(),
        overall_risk: va.overall_risk.getDisplayValue(),
        risk_tier: va.risk_tier.getDisplayValue(),
        last_assessment: va.last_assessment_date.toString(),
        next_assessment: va.next_assessment_date.toString(),
        days_overdue: gs.dateDiff(va.next_assessment_date.toString(), new GlideDateTime().toString(), true)
      });
    }

    gs.info('ASSESSMENT GAPS (' + gaps.length + ' vendors):\n' + JSON.stringify(gaps, null, 2));
  description: "TPRM: Identify vendors with overdue or incomplete assessments"

Step 4: Generate Vendor Risk Exposure Summary

Produce aggregate metrics across all vendors and risk tiers.

Using MCP:

Tool: SN-Execute-Background-Script
Parameters:
  script: |
    var summary = {
      generated_date: new GlideDateTime().toString(),
      issue_overview: { total_open: 0, critical: 0, high: 0, medium: 0, low: 0, overdue: 0 },
      by_vendor: {},
      by_category: {},
      remediation_status: { with_plan: 0, without_plan: 0, plan_overdue: 0 },
      assessment_coverage: { total_vendors: 0, assessed_current: 0, assessed_overdue: 0, never_assessed: 0 },
      risk_tier_distribution: {}
    };

    var now = new GlideDateTime();

    // Issue metrics
    var gr = new GlideRecord('sn_tprm_issue');
    gr.addQuery('active', true);
    gr.query();
    while (gr.next()) {
      summary.issue_overview.total_open++;
      var pri = gr.priority.toString();
      if (pri == '1') summary.issue_overview.critical++;
      else if (pri == '2') summary.issue_overview.high++;
      else if (pri == '3') summary.issue_overview.medium++;
      else summary.issue_overview.low++;

      if (gr.due_date.toString() && new GlideDateTime(gr.due_date.toString()).compareTo(now) < 0) {
        summary.issue_overview.overdue++;
      }

      var vendorName = gr.vendor.getDisplayValue() || 'Unknown';
      summary.by_vendor[vendorName] = (summary.by_vendor[vendorName] || 0) + 1;

      var cat = gr.category.getDisplayValue() || 'Uncategorized';
      summary.by_category[cat] = (summary.by_category[cat] || 0) + 1;

      if (gr.remediation_plan.toString()) {
        summary.remediation_status.with_plan++;
        if (gr.due_date.toString() && new GlideDateTime(gr.due_date.toString()).compareTo(now) < 0) {
          summary.remediation_status.plan_overdue++;
        }
      } else {
        summary.remediation_status.without_plan++;
      }
    }

    // Assessment coverage
    var va = new GlideRecord('sn_tprm_vendor_assessment');
    va.query();
    while (va.next()) {
      summary.assessment_coverage.total_vendors++;
      var tier = va.risk_tier.getDisplayValue() || 'Untiered';
      summary.risk_tier_distribution[tier] = (summary.risk_tier_distribution[tier] || 0) + 1;

      if (!va.last_assessment_date.toString()) {
        summary.assessment_coverage.never_assessed++;
      } else if (va.next_assessment_date.toString() && new GlideDateTime(va.next_assessment_date.toString()).compareTo(now) < 0) {
        summary.assessment_coverage.assessed_overdue++;
      } else {
        summary.assessment_coverage.assessed_current++;
      }
    }

    gs.info('TPRM EXECUTIVE SUMMARY:\n' + JSON.stringify(summary, null, 2));
  description: "TPRM: Generate executive risk exposure summary"

Step 5: Analyze Remediation Effectiveness

Evaluate how effectively issues are being remediated across the vendor portfolio.

Using MCP:

Tool: SN-Execute-Background-Script
Parameters:
  script: |
    var remediation = {
      avg_days_to_close: 0,
      closed_on_time: 0,
      closed_late: 0,
      still_open_on_time: 0,
      still_open_overdue: 0,
      top_overdue_vendors: []
    };

    var now = new GlideDateTime();
    var closedDays = [];

    // Closed issues - resolution time
    var closed = new GlideRecord('sn_tprm_issue');
    closed.addQuery('active', false);
    closed.addQuery('closed_at', '>=', gs.daysAgo(180));
    closed.query();
    while (closed.next()) {
      var created = new GlideDateTime(closed.sys_created_on.toString());
      var closedAt = new GlideDateTime(closed.closed_at.toString());
      var days = gs.dateDiff(created.toString(), closedAt.toString(), true);
      closedDays.push(parseInt(days));

      if (closed.due_date.toString() && closedAt.compareTo(new GlideDateTime(closed.due_date.toString())) <= 0) {
        remediation.closed_on_time++;
      } else {
        remediation.closed_late++;
      }
    }

    if (closedDays.length > 0) {
      var total = 0;
      for (var i = 0; i < closedDays.length; i++) total += closedDays[i];
      remediation.avg_days_to_close = Math.round(total / closedDays.length);
    }

    // Open issues - on-time vs overdue
    var vendorOverdue = {};
    var open = new GlideRecord('sn_tprm_issue');
    open.addQuery('active', true);
    open.query();
    while (open.next()) {
      if (open.due_date.toString() && new GlideDateTime(open.due_date.toString()).compareTo(now) < 0) {
        remediation.still_open_overdue++;
        var v = open.vendor.getDisplayValue() || 'Unknown';
        vendorOverdue[v] = (vendorOverdue[v] || 0) + 1;
      } else {
        remediation.still_open_on_time++;
      }
    }

    // Sort vendors by overdue count
    var sorted = Object.keys(vendorOverdue).sort(function(a, b) { return vendorOverdue[b] - vendorOverdue[a]; });
    for (var j = 0; j < Math.min(5, sorted.length); j++) {
      remediation.top_overdue_vendors.push({ vendor: sorted[j], overdue_count: vendorOverdue[sorted[j]] });
    }

    gs.info('REMEDIATION ANALYSIS:\n' + JSON.stringify(remediation, null, 2));
  description: "TPRM: Analyze remediation effectiveness across vendor portfolio"

Step 6: Generate Compliance Impact Narrative

Search for issues with regulatory or compliance implications.

Using MCP:

Tool: SN-Natural-Language-Search
Parameters:
  table_name: sn_tprm_issue
  query: "third-party vendor issues related to data privacy, GDPR, SOC 2, regulatory compliance, or security controls"
  limit: 30

Post the summary as work notes:

Tool: SN-Add-Work-Notes
Parameters:
  table_name: sn_tprm_vendor_assessment
  sys_id: [vendor_assessment_sys_id]
  work_notes: |
    === TPRM ISSUE SUMMARY ===
    Vendor: [vendor_name]
    Report Date: [current_date]
    Risk Tier: [tier]

    OPEN ISSUES: [count] ([critical] critical, [high] high)
    OVERDUE ISSUES: [overdue_count]

    ASSESSMENT STATUS:
    - Last Completed: [date]
    - Next Due: [date]
    - Coverage Gaps: [gap_details]

    COMPLIANCE IMPACT:
    - Regulatory Findings: [count]
    - Affected Frameworks: [SOC 2, GDPR, HIPAA, etc.]
    - Remediation Timeline: [estimated_completion]

    RECOMMENDED ACTIONS:
    1. [action_1]
    2. [action_2]
    3. [action_3]

Tool Usage

Operation MCP Tool REST Endpoint
Query TPRM Issues SN-Query-Table GET /api/now/table/sn_tprm_issue
Search Issues by Theme SN-Natural-Language-Search N/A
Query Assessments SN-Query-Table GET /api/now/table/sn_tprm_assessment
Query Vendor Assessments SN-Query-Table GET /api/now/table/sn_tprm_vendor_assessment
Aggregate Analysis SN-Execute-Background-Script POST /api/now/table/sys_trigger
Schema Discovery SN-Discover-Table-Schema GET /api/now/table/sys_dictionary
Post Summary Notes SN-Add-Work-Notes PATCH /api/now/table/{table}/{sys_id}

Best Practices

  • Risk Tiering: Always segment vendor analysis by risk tier (critical, high, medium, low) to prioritize attention and resources appropriately
  • Assessment Currency: Flag any Tier 1 or Tier 2 vendor whose assessment is more than 12 months old as an immediate gap
  • Remediation SLAs: Define clear remediation timelines by issue severity: Critical (30 days), High (60 days), Medium (90 days), Low (180 days)
  • Trend Analysis: Include quarter-over-quarter trends to show whether the vendor risk posture is improving or degrading
  • Concentration Risk: Highlight vendors with disproportionate numbers of open issues, which may indicate systemic risk management failures
  • Fourth-Party Awareness: Note any vendor issues that stem from their subcontractors or fourth-party dependencies
  • Regulatory Mapping: Map TPRM issues to specific regulatory requirements (OCC, FFIEC, GDPR) for examination readiness

Troubleshooting

Empty Vendor Assessment Records

Symptom: sn_tprm_vendor_assessment returns no results for known vendors Cause: Vendor assessments may use a different relationship model or the vendor record is in core_company but not linked to TPRM Solution:

Tool: SN-Discover-Table-Schema
Parameters:
  table_name: sn_tprm_vendor_assessment

Verify the vendor reference field name. Some configurations use entity or company instead of vendor.

Assessment Score Fields Return Null

Symptom: Assessment scores are empty despite completed assessments Cause: Scoring may be calculated at the questionnaire response level, not stored on the assessment record Solution: Query sn_tprm_assessment with the assessment sys_id to check for child questionnaire records or asmt_metric_result entries that hold the computed scores.

Issue-to-Vendor Linkage Missing

Symptom: Issues show no vendor association in query results Cause: Issues may be linked via the assessment record rather than directly to the vendor Solution: Join through the assessment reference: query the issue's assessment field, then read the assessment record to find its vendor field.

Examples

Example 1: Quarterly Vendor Risk Committee Report

Scenario: VP of Risk needs a portfolio-wide TPRM summary for the quarterly committee meeting.

Tool: SN-Natural-Language-Search
Parameters:
  table_name: sn_tprm_issue
  query: "all open third-party risk issues with critical or high priority updated in the last quarter"
  limit: 50

Generated Summary:

  • Total Open Issues: 83 across 34 vendors (down from 91 last quarter)
  • Critical/High Priority: 18 issues requiring immediate attention
  • Overdue Remediation: 12 issues past due date (14% overdue rate)
  • Top Risk Category: Data Security (28 issues, 34%)
  • Assessment Coverage: 92% of Tier 1 vendors current; 3 Tier 1 vendors overdue
  • Average Remediation Time: 47 days (target: 30 days for critical)
  • Recommendation: Escalate 3 Tier 1 vendors with overdue critical findings; initiate reassessment for 5 vendors approaching annual review

Example 2: Vendor-Specific Deep Dive After Incident

Scenario: A critical vendor reported a data breach; need immediate risk exposure summary.

Tool: SN-Query-Table
Parameters:
  table_name: sn_tprm_issue
  query: vendor=[vendor_sys_id]^active=true
  fields: sys_id,number,short_description,state,priority,category,due_date,remediation_plan
  limit: 50

Generated Detail:

  • Vendor: DataCorp International (Tier 1 - Critical)
  • Open Issues: 7 (2 critical, 3 high, 2 medium)
  • Pre-Existing Security Issues: 3 issues related to access controls and encryption
  • Last Assessment: 2025-11-15 (Score: 62/100 - Below Acceptable Threshold)
  • Overdue Remediations: 2 critical findings past 90-day SLA
  • Compliance Impact: SOC 2 Type II gaps; GDPR Article 28 processor requirements unmet
  • Recommended Actions: Invoke contractual audit rights; require 30-day remediation plan; evaluate alternative vendors

Related Skills

  • grc/issue-summarization - General GRC issue summarization for broader risk context
  • grc/risk-assessment-summarization - Deep risk analysis behind vendor risk scores
  • grc/regulatory-alert-analysis - Monitor regulatory changes affecting third-party requirements
  • grc/control-objective-management - Manage controls mapped to vendor risk areas
  • security/audit-compliance - Audit trail and compliance reporting for vendor assessments

References

Related Skills

GENERAL · regulatory

AI Content Detector

Identify content generated by AI systems.

GENERAL · regulatory

AI Governance Reviewer Skill

Use this skill when the user wants an AI governance, legal-risk, privacy, compliance, procurement, or vendor-risk review of an internal AI use case, …

Carl Ditzler
GENERAL · regulatory

ai-inventory

EU AI Act per-system inventory — track each AI system's role (provider, deployer, importer, distributor, authorized representative, product manufactu…

alexchlou
GENERAL · regulatory

ai-inventory-anthropics

EU AI Act per-system inventory — track each AI system's role (provider, deployer, importer, distributor, authorized representative, product manufactu…

anthropics
GENERAL · regulatory

aia-generation

Run an AI impact assessment — structured intake, risk analysis, regulatory classification per regime in scope, policy consistency diff, and recommend…

anthropics