Function: Sla(config)
Creates an SLA definition with conditional field requirements.
The SLA plugin enforces build-time validation rules where field requirements depend on other field values:
Duration Type Validations:
- When
durationTypeis empty (user specified duration):durationis mandatory, andscheduleis mandatory whenscheduleSourceis "sla_definition". Theconditions.pause,conditions.resume, andwhenTo.resumefields are allowed. - When
durationTypeis a relative duration:duration,conditions.pause,conditions.resume, andwhenTo.resumeare restricted (warning). Values from existing SLA definitions will be preserved but cannot be modified.
Schedule Source Validations:
- When
scheduleSourceis "no_schedule":schedule,timezoneSource,timezone, andscheduleSourceFieldare restricted (warning). Theschedulefield is automatically set to a default value. - When
scheduleSourceis "task_field":scheduleanddurationare restricted (warning), andscheduleSourceFieldis mandatory. - When
scheduleSourceis "sla_definition" (default):scheduleis mandatory.
Retroactive Start Validations:
- When
retroactive.startis false or not set:retroactive.setStartToandretroactive.pauseare restricted (warning). - When
retroactive.startis true:retroactive.setStartTois mandatory, andretroactive.pauseis allowed. - When
retroactive.startis true ANDdurationTypeis a relative duration:retroactive.pauseis restricted (warning).
Condition Field Validations:
- When
timezoneSourceis "sla.timezone": thetimezonefield is allowed. Otherwise, it is restricted (warning). - When
whenTo.resumeis "no_match":conditions.resumeis restricted (warning). - When
whenTo.cancelis not "on_condition":conditions.cancelis restricted (warning).
Usage
// Basic SLA with user specified duration
Sla({
$id: Now.ID['incident-priority-1-sla'],
name: 'Priority 1 Incident Response',
table: 'incident',
duration: Duration({ hours: 4 }),
schedule: 'schedule-sys-id',
conditions: {
start: 'priority=1',
stop: 'state=6',
},
})
// SLA with relative duration
Sla({
$id: Now.ID['incident-relative-sla'],
name: 'Relative Duration SLA',
table: 'incident',
durationType: 'relative-duration-sys-id',
schedule: 'schedule-sys-id',
// Note: duration, conditions.pause, conditions.resume, whenTo.resume are restricted
})
Parameters
config
Sla
The SLA configuration object
Examples
Basic SLA Example
Create an SLA that tracks resolution time for priority 1 incidents
/**
* @title Basic SLA Example
* @description Create an SLA that tracks resolution time for priority 1 incidents
*/
import { Sla } from '@servicenow/sdk/core'
export const Priority1ResolutionSla = Sla({
$id: Now.ID['priority-1-resolution-sla'],
name: 'Priority 1 Resolution',
table: 'incident',
active: true,
duration: Duration({ hours: 4 }),
schedule: '-replace-with-schedule-id-', // sys_id of a schedule record
conditions: {
start: 'priority=1',
stop: 'state=6',
},
})