ServiceNow · Arazzo Workflow

ServiceNow Assign Open Task

Version 1.0.0

Find the oldest unassigned task on a table, claim it, then mark it work in progress.

1 workflow 1 source API 1 provider
View Spec View on GitHub AutomationCloud ServicesDigital WorkflowsEnterprise PlatformIT Service ManagementITSMProcessesT1Workflow AutomationWorkflowsArazzoWorkflows

Provider

servicenow

Workflows

assign-open-task
Claim and start the oldest unassigned open task on a table.
Finds the oldest unassigned, open record on a task table and, when one exists, assigns it to a user and moves it to a working state.
3 steps inputs: assignedTo, tableName, workingState outputs: taskSysId
1
findOpenTask
listRecords
Query the table for the single oldest open, unassigned task, ordered by creation date ascending.
2
claimTask
patchRecord
Assign the matched task to the supplied user.
3
startTask
patchRecord
Move the claimed task into the work-in-progress state.

Source API Descriptions

Arazzo Workflow Specification

servicenow-assign-open-tasks-workflow.yml Raw ↑
arazzo: 1.0.1
info:
  title: ServiceNow Assign Open Task
  summary: Find the oldest unassigned task on a table, claim it, then mark it work in progress.
  description: >-
    A find-then-act flow for queue triage over the Table API. The workflow
    queries a task-based table for the oldest unassigned, open record, branches
    on whether a candidate was found, assigns the record to a supplied user,
    and then moves it into a work-in-progress state. Because ServiceNow task
    types all extend the task table, this same flow works across sc_task,
    change_task, and incident-style queues. Every request is written inline,
    with the Table API returning lists under a result array.
  version: 1.0.0
sourceDescriptions:
- name: tableApi
  url: ../openapi/servicenow-table-api-openapi.yml
  type: openapi
workflows:
- workflowId: assign-open-task
  summary: Claim and start the oldest unassigned open task on a table.
  description: >-
    Finds the oldest unassigned, open record on a task table and, when one
    exists, assigns it to a user and moves it to a working state.
  inputs:
    type: object
    required:
    - tableName
    - assignedTo
    properties:
      tableName:
        type: string
        description: The task-based table to triage (e.g. sc_task, change_task).
      assignedTo:
        type: string
        description: The sys_id of the user to assign the claimed task to.
      workingState:
        type: string
        description: The state value representing Work in Progress (e.g. "2").
  steps:
  - stepId: findOpenTask
    description: >-
      Query the table for the single oldest open, unassigned task, ordered by
      creation date ascending.
    operationId: listRecords
    parameters:
    - name: tableName
      in: path
      value: $inputs.tableName
    - name: sysparm_query
      in: query
      value: "active=true^assigned_toISEMPTY^ORDERBYsys_created_on"
    - name: sysparm_limit
      in: query
      value: 1
    - name: sysparm_fields
      in: query
      value: sys_id,number,short_description
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      taskSysId: $response.body#/result/0/sys_id
    onSuccess:
    - name: taskFound
      type: goto
      stepId: claimTask
      criteria:
      - context: $response.body
        condition: $.result.length > 0
        type: jsonpath
    - name: noTask
      type: end
      criteria:
      - context: $response.body
        condition: $.result.length == 0
        type: jsonpath
  - stepId: claimTask
    description: >-
      Assign the matched task to the supplied user.
    operationId: patchRecord
    parameters:
    - name: tableName
      in: path
      value: $inputs.tableName
    - name: sys_id
      in: path
      value: $steps.findOpenTask.outputs.taskSysId
    requestBody:
      contentType: application/json
      payload:
        assigned_to: $inputs.assignedTo
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      claimedSysId: $response.body#/result/sys_id
  - stepId: startTask
    description: >-
      Move the claimed task into the work-in-progress state.
    operationId: patchRecord
    parameters:
    - name: tableName
      in: path
      value: $inputs.tableName
    - name: sys_id
      in: path
      value: $steps.findOpenTask.outputs.taskSysId
    requestBody:
      contentType: application/json
      payload:
        state: $inputs.workingState
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      taskSysId: $response.body#/result/sys_id
      updatedOn: $response.body#/result/sys_updated_on
  outputs:
    taskSysId: $steps.startTask.outputs.taskSysId