# Request Fulfillment

> Service catalog request processing, fulfillment workflows, and task management

- Skill: `happy-technologies-llc/request-fulfillment` (Agent Skill)
- Install (CLI): `npx skillmds@latest add happy-technologies-llc/request-fulfillment`
- Raw SKILL.md: https://api.skillmd.com/api/skills/happy-technologies-llc/request-fulfillment/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Productivity
- Author: Happy-Technologies-LLC (https://skillmd.com/u/happy-technologies-llc)
- Updated: 2026-09-10
- Page: https://skillmd.com/skills/happy-technologies-llc/request-fulfillment

---


# Service Catalog Request Fulfillment

## Overview

This skill covers the end-to-end service catalog request fulfillment process:

- Understanding request structure (Request → Item → Task)
- Processing incoming requests
- Managing fulfillment tasks
- Approval workflows
- Closing requests properly

**When to use:** When fulfilling service catalog requests, managing request queues, or troubleshooting fulfillment issues.

## Prerequisites

- **Roles:** `catalog_admin`, `itil`, or fulfillment group membership
- **Access:** sc_request, sc_req_item, sc_task tables
- **Knowledge:** Service catalog structure, fulfillment workflows

## Procedure

### Step 1: Understand Request Hierarchy

ServiceNow uses a three-level hierarchy:

```
sc_request (Request)
├── sc_req_item (Requested Item) - One per catalog item ordered
│   ├── sc_task (Catalog Task) - Fulfillment tasks
│   └── sc_task (Catalog Task) - Additional tasks
└── sc_req_item (Requested Item) - If multiple items ordered
    └── sc_task (Catalog Task)
```

**Key Fields:**
| Table | Key Fields |
|-------|------------|
| sc_request | number, requested_for, stage, approval |
| sc_req_item | request, cat_item, stage, variables |
| sc_task | request_item, assignment_group, state |

### Step 2: Query Pending Requests

**Find requests awaiting fulfillment:**
```
Tool: SN-Query-Table
Parameters:
  table_name: sc_req_item
  query: stage=requested^assignment_group=[your_group_sys_id]
  fields: number,short_description,cat_item,requested_for,sys_created_on
  limit: 50
```

**Find tasks assigned to your group:**
```
Tool: SN-Query-Table
Parameters:
  table_name: sc_task
  query: state=1^assignment_group=[your_group_sys_id]
  fields: number,short_description,request_item,assigned_to,priority
  limit: 50
```

### Step 3: Review Request Details

**Get full request item with variables:**
```
Tool: SN-Query-Table
Parameters:
  table_name: sc_req_item
  query: number=RITM0012345
  fields: sys_id,number,short_description,description,cat_item,requested_for,opened_by,variables
```

**Variable Values** are stored in `sc_item_option_mtom` table:
```
Tool: SN-Query-Table
Parameters:
  table_name: sc_item_option_mtom
  query: request_item=[ritm_sys_id]
  fields: sc_item_option,item_option_new.value,item_option_new.item_option_new.question_text
```

### Step 4: Process Fulfillment Tasks

**Accept/Start a Task:**
```
Tool: SN-Update-Record
Parameters:
  table_name: sc_task
  sys_id: [task_sys_id]
  data:
    state: 2  # Work in Progress
    assigned_to: [your_user_sys_id]
    work_notes: "Starting fulfillment work"
```

**Document Progress:**
```
Tool: SN-Add-Work-Notes
Parameters:
  sys_id: [task_sys_id]
  table_name: sc_task
  work_notes: |
    Fulfillment Progress:
    1. ✅ Verified request details
    2. ✅ Checked inventory availability
    3. 🔄 Provisioning in progress
    4. ⏳ Pending: Delivery scheduling
```

### Step 5: Handle Approvals

**Check Approval Status:**
```
Tool: SN-Query-Table
Parameters:
  table_name: sysapproval_approver
  query: sysapproval=[ritm_sys_id]
  fields: approver,state,sys_updated_on,comments
```

**Approval States:**
- `not yet requested` - Approval not started
- `requested` - Waiting for approver
- `approved` - Approved
- `rejected` - Rejected
- `cancelled` - Cancelled

**If Rejected, Notify Requester:**
```
Tool: SN-Update-Record
Parameters:
  table_name: sc_req_item
  sys_id: [ritm_sys_id]
  data:
    stage: Request Cancelled
    comments: "Your request was not approved. Reason: [rejection reason]. Please contact your manager for more information."
```

### Step 6: Complete Fulfillment

**Close Fulfillment Task:**
```
Tool: SN-Update-Record
Parameters:
  table_name: sc_task
  sys_id: [task_sys_id]
  data:
    state: 3  # Closed Complete
    close_notes: |
      Fulfillment Complete:
      - Software installed on LAPTOP-12345
      - User notified via email
      - Verified user can access application
    work_notes: "Task completed successfully"
```

**Close Requested Item:**
When all tasks are complete, close the RITM:
```
Tool: SN-Update-Record
Parameters:
  table_name: sc_req_item
  sys_id: [ritm_sys_id]
  data:
    stage: Closed Complete
    close_notes: "All fulfillment tasks completed. User has been notified."
```

**Close Parent Request:**
When all RITMs are complete:
```
Tool: SN-Update-Record
Parameters:
  table_name: sc_request
  sys_id: [req_sys_id]
  data:
    stage: Closed Complete
    request_state: closed_complete
```

### Step 7: Handle Special Cases

**Request Cancellation:**
```
Tool: SN-Update-Record
Parameters:
  table_name: sc_req_item
  sys_id: [ritm_sys_id]
  data:
    stage: Request Cancelled
    close_notes: "Cancelled per user request via email dated 2026-02-06"
```

**Partial Fulfillment:**
```
Tool: SN-Update-Record
Parameters:
  table_name: sc_req_item
  sys_id: [ritm_sys_id]
  data:
    stage: Closed Incomplete
    close_notes: "Partial fulfillment: Software installed but license limit reached. Remaining 5 licenses on backorder."
```

## Request/Item Stages

```
Request Stages:
Requested → Approved → Delivery → Closed Complete
         ↘ Rejected → Request Cancelled

RITM Stages:
Waiting for Approval → Fulfillment → Delivery → Closed Complete
                    ↘ Request Cancelled
```

## Tool Usage Summary

| Operation | MCP Tool | Table |
|-----------|----------|-------|
| Find requests | SN-Query-Table | sc_request |
| Find items | SN-Query-Table | sc_req_item |
| Find tasks | SN-Query-Table | sc_task |
| Update status | SN-Update-Record | sc_task/sc_req_item |
| Add notes | SN-Add-Work-Notes | sc_task |
| Check approvals | SN-Query-Table | sysapproval_approver |

## Best Practices

- **Check Approvals First:** Don't start fulfillment until approved
- **Document Variables:** Record what was specifically requested
- **Update Regularly:** Keep work notes current for visibility
- **Verify Completion:** Confirm with requester before closing
- **Close Parent Records:** Ensure REQ closes when all RITMs complete
- **SLA Awareness:** Monitor fulfillment time against SLA targets

## Troubleshooting

### Request Stuck in "Waiting for Approval"

**Cause:** Approver hasn't responded or approval rule issue
**Solution:**
1. Check sysapproval_approver for the approver
2. Send reminder or escalate
3. Check workflow for errors

### Tasks Not Auto-Generated

**Cause:** Workflow not published or execution issue
**Solution:**
1. Check workflow context for errors
2. Verify workflow is published
3. Manually create tasks if needed

### Cannot Close RITM

**Cause:** Open child tasks
**Solution:** Close all sc_task records first, then close RITM

## Related Skills

- `catalog/item-creation` - Creating catalog items
- `itsm/incident-lifecycle` - If request becomes incident
- `admin/workflow-creation` - Fulfillment workflows

## References

- [ServiceNow Service Catalog](https://docs.servicenow.com/bundle/utah-it-service-management/page/product/service-catalog-management/concept/c_ServiceCatalogManagement.html)
- [ITIL Service Request Management](https://www.itil.org)

