Update ServiceNow Record

Action ID: servicenow:now:table:updateRecord
NPM Package:

@backstage-community/plugin-scaffolder-backend-module-servicenow

Description

Updates the specified record with the name-value pairs included in the request body

Input Schema

PropertyTypeDescriptionRequired
sysIdstring-
tableNamestring-
requestBodyany-
sysparmViewstring-
sysparmFieldsarray-
sysparmDisplayValuestring-
sysparmQueryNoDomainboolean-
sysparmInputDisplayValueboolean-
sysparmExcludeReferenceLinkboolean-
sysparmSuppressAutoSysFieldboolean-

Output Schema

No output schema defined for this action.

Usage Examples

Update an incident with repository details after scaffolding

Updates an incident with repository information and assigns the ticket to a team using display values. Use this after fetching a template with fetch:template.

Copy
steps:
  - id: fetchBase
    action: fetch:template
    input:
      url: https://github.com/acme-org/software-templates/node-service
      targetPath: ./service
      values:
        name: ${{ parameters.serviceName }}
        owner: ${{ parameters.owner }}

  - id: updateIncident
    action: servicenow:now:table:updateRecord
    input:
      tableName: incident
      sysId: ${{ parameters.incidentSysId }}
      requestBody:
        short_description: "Service ${ { parameters.serviceName } } repository created"
        description: "Repository URL ${ { parameters.repoUrl } }"
        assignment_group: "Platform Engineering"
        state: "2"
      sysparmInputDisplayValue: true
      sysparmDisplayValue: "all"
      sysparmExcludeReferenceLink: true
      sysparmFields:
        - number
        - sys_id
        - short_description
        - assignment_group
        - state

Schedule a change request window and suppress auto sys fields

Sets the start and end of a change request and prevents automatic system fields from updating. Use this when applying precise scheduling values.

Copy
steps:
  - id: fetchTemplate
    action: fetch:template
    input:
      url: https://github.com/acme-org/software-templates/change-plan
      targetPath: ./change
      values:
        changeName: ${{ parameters.changeName }}

  - id: updateChange
    action: servicenow:now:table:updateRecord
    input:
      tableName: change_request
      sysId: ${{ parameters.changeSysId }}
      requestBody:
        start_date: "${{ parameters.changeWindow.start }}"   # e.g. 2025-02-10 09:00:00
        end_date: "${{ parameters.changeWindow.end }}"       # e.g. 2025-02-10 10:00:00
        risk: "2"
        assignment_group: "${{ parameters.changeAssignmentGroupSysId }}"
      sysparmInputDisplayValue: false
      sysparmDisplayValue: "false"
      sysparmSuppressAutoSysField: true
      sysparmQueryNoDomain: true
      sysparmFields:
        - number
        - sys_id
        - start_date
        - end_date
        - risk

Set a user manager and title in sys_user

Updates a user record to set the manager by sys_id and change the title. Use this to finalize onboarding metadata after template fetch with fetch:template.

Copy
steps:
  - id: fetchOnboarding
    action: fetch:template
    input:
      url: https://github.com/acme-org/software-templates/onboarding
      targetPath: ./onboarding
      values:
        employee: ${{ parameters.userName }}

  - id: updateUser
    action: servicenow:now:table:updateRecord
    input:
      tableName: sys_user
      sysId: ${{ parameters.userSysId }}
      requestBody:
        title: "Software Engineer"
        department: "${{ parameters.departmentSysId }}"
        manager: "${{ parameters.managerSysId }}"
        u_onboarding_repo: "${{ parameters.repoUrl }}"
      sysparmInputDisplayValue: false
      sysparmDisplayValue: "true"
      sysparmExcludeReferenceLink: true
      sysparmFields:
        - sys_id
        - name
        - title
        - department
        - manager
        - u_onboarding_repo

Update a CMDB service with environment and ownership using display values

Updates a cmdb_ci_service record using display values for reference fields and sets the view. Use this to align CMDB data with the newly created service.

Copy
steps:
  - id: fetchService
    action: fetch:template
    input:
      url: https://github.com/acme-org/software-templates/service
      targetPath: ./svc
      values:
        serviceId: ${{ parameters.serviceId }}

  - id: updateCmdbService
    action: servicenow:now:table:updateRecord
    input:
      tableName: cmdb_ci_service
      sysId: ${{ parameters.cmdbServiceSysId }}
      requestBody:
        name: "${{ parameters.serviceName }}"
        u_environment: "Production"
        owned_by: "Platform Engineering"
        support_group: "SRE"
        url: "${{ parameters.serviceUrl }}"
      sysparmInputDisplayValue: true
      sysparmDisplayValue: "true"
      sysparmExcludeReferenceLink: true
      sysparmView: "ess"
      sysparmFields:
        - sys_id
        - name
        - u_environment
        - owned_by
        - support_group
        - url

Update a problem record with impact and urgency and return minimal fields

Sets impact and urgency via display values and limits the response to key fields. Use this when adjusting problem severity from scaffolding metadata.

Copy
steps:
  - id: fetchProblemTemplate
    action: fetch:template
    input:
      url: https://github.com/acme-org/software-templates/problem-metadata
      targetPath: ./problem
      values:
        relatedService: ${{ parameters.serviceName }}

  - id: updateProblem
    action: servicenow:now:table:updateRecord
    input:
      tableName: problem
      sysId: ${{ parameters.problemSysId }}
      requestBody:
        impact: "High"
        urgency: "High"
        work_notes: "Service ${ { parameters.serviceName } } created. Repository ${ { parameters.repoUrl } }"
      sysparmInputDisplayValue: true
      sysparmDisplayValue: "true"
      sysparmExcludeReferenceLink: true
      sysparmFields:
        - number
        - sys_id
        - impact
        - urgency