Skip to end of metadata
Go to start of metadata

You are viewing an old version of this content. View the current version.

Compare with Current View Version History

Version 1 Next »

5.4.0

A pass-through API to ServiceScheduling (when configured) which allows the ServiceScheduling's "Job Book Request API" API to be called.

Description

The sp:JobBookRequest API method creates a new job in ServiceOptimizer without having to go through the appointment offering process. It is normally used for business to business relationships where an exact appointment is not given to the customer; rather, an SLA or response time agreement is in place.

As with the Book Appointment API, this interface may be used to book long duration jobs (ones requiring more than one shift) with the system automatically choosing the best solution from the possible positions available

In this context, the ServiceScheduling "Book Appointment" API is the sp:JobBookRequest API API.

On this page:

Related pages:

Resource URL Summary


Pass Through Call to ServiceScheduling's "Job Book Request" API

PUT /up/v5/rest/scheduling/BookJob

HTTP Headers

This API uses the standard ServiceBroker HTTP Headers.


API Specifics


Pass Through Call to ServiceScheduling's "Job Book Request" API

This RESTified API will perform a pass-through call to the ServiceScheduling sub-system's "Book Job Request" API (when configured).

URL

PUT /up/v5/rest/scheduling/BookJob

HTTP Request Body

This request requires a JSON object supplied in the HTTP request body, which defines the parameters that will be passed through to the ServiceScheduling "Book Job Request" API.

Book Job Request Object Format

Book Job Request JSON
{
	"Id": "",
	"WorkType": {
		"Name": "",
		"Skills": [{
			"Id": "",
			"Comp": ""
		}]
	},
	"Location": {
		"Address": {
			"AddrLine1": "",
			"AddrLine2": "",
			"City": "",
			"PostalCode": "",
			"Region": "",
			"Latitude": "",
			"Longitude": ""
		},
		"LocationNum": "",
		"Name": "",
		"SiteId": "",
		"Contacts": [{
			"FirstName": "",
			"LastName": "",
			"ContactPoint": [{
					"Mode": "Phone",
					"Value": "7637548024"
				},
				{
					"Mode": "Phone",
					"Value": "223123123"
				}
			]
		}]
	},
	"vwdlLocationType": "",
	"RestrictionRef": "",
	"Flags": {
		"AllowRebook": false
	},
	"ExtraDuraton": "",
	"ExtraOverhead": "",
	"ReqProvider": [{
		"Id": "",
		"MPX": ""
	}],
	"ReqUnit": {
		"unitType": "",
		"RUID": ""
	},
	"Priority": "",
	"Importance": "",
	"Booking": {
		"BookLocID": "",
		"ContractEarliest": "",
		"ContractLatest": "",
		"Offer": {
			"GroupID": ""
		},
		"OpenAccHoursOvrs": {
			"OpenType": "",
			"OpenHours": [{
				"Start": "",
				"End": ""
			}]
		},
		"ClosedAccHoursOvrs": {
			"ClosedHours": [{
				"Start": "",
				"End": ""
			}]
		},
		"ClosedPubHols": {
			"PubHolSets": [
				"",
				""
			]
		},
		"ClosedDates": [{
			"Start": "",
			"End": ""
		}]
	},
	"ServHoursPreDefPatts": {
		"ServHoursPreDef": [{
			"DateRange": {
				"Start": "",
				"End": "",
				"ServHoursPattID": ""
			}
		}]
	},
	"ServHoursPatts": [{
		"DateRange": {
			"Start": "",
			"End": ""
		},
		"DayAndTimes": {
			"Day": "",
			"Start": "",
			"End": ""
		},
		"GracePeriod": ""
	}],
	"AccHoursPatts": [{
		"DateRange": {
			"Start": "",
			"End": ""
		},
		"DayAndTimes": {
			"Day": "",
			"Start": "",
			"End": ""
		}
	}],
	"BookOptions": {
		"AllowEmpOT": false,
		"SpareIgnVanStock": false,
		"FixToEmp": false,
		"ServAsAccHours": false,
		"CallToFix": false,
		"ReqConfirm": false,
		"NonConsecShift": false,
		"ConsecShift": false,
		"ContigShift": false
	},
	"ForceOptions": {
		"InTray": false,
		"InTrayWithSkill": false,
		"InTrayAfterAll": false,
		"SpareForceGo": false,
		"Reassign": false,
		"IgnoreCapacity": false,
		"NoTravel": false,
		"NoLocalKnowledge": false,
		"IgnoreAvailable": false,
		"IgnoreSkills": false
	},
	"ReqSpares": [{
		"spare": "",
		"qty": ""
	}],
	"DeliverySize": "",
	"PickupSize": "",
	"CapacityCategory": "",
	"Desc": [
		"",
		""
	],
	"Desc2": ""
}

Book Job Request Object Properties (bold property names indicate required field)

PropertyTypeLengthDescriptionReq?
Id

string

SS: JobID (string)

SS: 50

Caller’s identifier of the job to be booked. It must be unique in the ServiceOptimizer database, unless AllowRebook (below) is True

SS Field: jobID

Yes

WorkTypeobject
PropertyTypeLengthDescriptionReq?

Name

string

SS:JobTypeID (string)

SS: 30

Must be one of the job types (aka task codes) set up in ServiceOptimizer

SS Field: jobType

Yes
Skillsarray
A list of the extra Skills  (skill IDs) needed to do this job, in addition to those specified in ServiceOptimizer for this job’s type. If one or more of the supplied ExtraSkills is already required by the JobType, it will be ignored unless it’s the first ExtraSkill and the ExtraSkillLevel (below) is different from that specified for the JobType.  The maximum number of skills that can be supplied is 10 however, only the skillLevel for the first skillID in the list has any meaning other skills are assumed to require no specific level.


PropertyTypeLengthDescriptionReq?

Id

string

SS:SkillID

SS: 30

SS Field: extraSkills.reqSkills[].skillID

Yes

skillLevel

string

SS: integer



Level of the skillID required in the skillID field above. If the first of the skillID (above) specifies a skill which is already required by the JobType, then ExtraSkillLevel will replace the skill level required by the JobType for the first of the skillID. If a skill level is not required, the supplied value for this field should be 1.

SS Field: extraSkills.reqSkills[].skillLevel

Yes

No

Yes

Location

object
PropertyTypeLengthDescriptionReq?

Address

object

This represents the customer's address associated with the job.

PropertyTypeLengthDescriptionReq?

AddrLine1

string

SS: CustAddress (string)

SS: 50

SS Field: customer.custAddress[0]

AddrLine2

string

SS: CustAddress (string)

SS: 50

SS Field: customer/custAddress[1]

City

string

SS: CustAddress (string)

SS: 50

SS Field: customer/custAddress[2]

PostalCode

string

SS: Postcode (string)

SS: 30

SM: 10

SS Field: postcodeYes

Region

string

SS: CustAddress (string)

SS: 50

SS Field: customer/custAddress[3]

Latitude

string

SS: double



SS Field: latitude


Longitude

string

SS: double



SS Field: longitude


Yes

LocationNum

string


SS: 20

An identifier for the customer for whom this job is booked.

SS Field: customer.custID


Name

string

SS: CustName (string)

SS: 50

The name of the customer.

SS Field: customer.custName


SiteId

string

SS: SiteID

SS: 20

Each job can optionally have a Site Identifier.  ServiceOptimizer will attempt to schedule jobs with the same SiteIDs: (a) consecutively, so that there’s zero travel time between them, and (b) with the overhead time (from the Job Type and the supplied ExtraOverhead) removed from all but the first of them.  ServiceOptimizer treats the SiteID as an opaque value that it uses only to group jobs together.

SS Field: siteID


Contacts

array
PropertyTypeLengthDescription

contactName

string

SS:ContactName

SS: 50

The first name of a person who can be contacted about this job.

SS Field: customer.contactName

ContactPoint

array of 2
PropertyTypeLengthDescription

Mode

stringSS: See Values

Contains 'Phone' for first element in the array.

Contains 'Mobile' for second element in the array.

ValuestringSS: 40SS Field: customer.phoneNum[0] for first element in the array and customer.phoneNum[1] for second element in the array.


Yes

vwdlLocationType

string

SS: EmpLocType

SS: See Valid Values

When set, indicates that the appointment is virtual, with a dynamic location. The dynamic location to be used for the appointment is based on the assigned employee. Currently, only the EmpLocType value of Home is supported.

SS Field: vwdlLocationType

SS Valid Values: "Home", "Work", "Depot", "Supplied", "None"

No

RestrictionRef

string

SS: RestrictionRef (string)

SS: 30

Each job may optionally have a restrictionRef. If specified, it must exist in the ServiceOptimizer database. Jobs with a restrictionRef will not show sensitive information for the job on the Gantt, unless the Gantt user has been given permission to view the full jobs details.

SS Field: restrictionRef


Flags

object
PropertyTypeDescription
AllowRebookBoolean

Jobs of long duration cannot be rebooked – if this field is true, and the JobID already exists and is a long job, then SP_MULTIJOBID_ALREADY_EXISTS (539) will be returned

For all other jobs, if this field has the value SP_True, the call to JobBookRequest will not fail if the JobID already exists in the ServiceOptimizer database. Instead, the existing job is deleted and replaced by this one. If AllowRebook is set and the job doesn’t already exist, the JobBookRequest call continues anyway.

SS Field: allowRebook

No

ExtraDuraton

string

SS: integer


Time (in minutes) required to complete the job in addition to what is defined in ServiceOptimizer for this job type. The maximum value which will be accepted for this field plus ExtraOverhead (below) is specified by the SJEDMax database parameter. The maximum total duration for the job is specified by the SJTDMax database parameter. Where this booking is based on offers from a previous call to OfferAppts, the values supplied in this field in this booking request must be the same as those supplied on the OfferAppts call.

SS Field: extraDuration

No

ReqProvider

array

Allows for a list of up to 10 reqEmps to be specified. 

Property

Type

Length

Description

Req?

Id

string

SS: EmpID

SS: 25

Names preferred, mandatory or excluded operatives for this job.

SS Field: ListReqEmps.empID

Yes

MPXstringSS: See Valid Values
  • Must do the job (i.e. Mandatory, or M);
  • Are Preferred (or P) to do the job; or
  • Must not do the job (i.e. Excluded, or X).

Accordingly, the Mandatory, Preferred and Excluded options are referred to simply as MPX.

SS Field: ListReqEmps.MPX

SS Valid Values: "None", "Preferred", "Mandatory","PreferredOrdered", "MandatoryOrdered", "MandatoryNot","MAX"


Yes

No

ReqUnit

object
PropertyTypeLengthDescriptionReq?
unitType

string

SS: UnitType

SS: See Valid Values

If Mandatory, specifies that the job must only be assigned to an employee in the FRU or DRU supplied in the supplied Unit field (below), i.e. the supplied FRU or DRU is mandatory. Values other than Mandatory are not implemented and will cause SP_REQTYPE_INVALID (74) to be returned. The only supported combinations of this and the next two fields are: (1) MandatoryFinal and an FRU ID, or (2) MandatorySPUT_D and an DRU ID.

SS Field: reqUnit.unitType

SS Valid Values: "FRU", "DRU"

Yes

RUID

string

SS: RUID (string)

SS: 8


SS Field: reqUnit/RUID

Yes

No

Priority

string

SS: integer


Used to determine the cost of the job being overdue. The ABS and the optimizer will normally cost the lateness of a high priority (SLA) job higher than a low priority job. This should have the effect of making it less likely that a high priority job will be significantly overdue (late). (Lateness is the amount by which a job’s scheduled start time (or finish time in the case of call-to-fix jobs – see callToFix, below)) exceeds its time.  

Priority the job should have. If priority isn’t being used, it should be set to 50. Must be set between 1 and 99.

SS Field: priority

No

Importance

string

SS: integer


Used to try and ensure that the jobs left in the in-tray are the less important ones and that the more important jobs are in the schedule. Must take a value between 0 and 9. Where this booking is based on offers from a previous call to OfferAppts, the values supplied in this field in this booking request must be the same as those supplied on the OfferAppts call.

SS Field: importance

No

Bookingobject
PropertyTypeLengthDescriptionReq?

BookLocID

string

SS: BookLocID (string)

SS: 4

Unique identifier of the location (or service) from which the job is booked. If at a later time, for example when a job becomes earmarked, ServiceOptimizer needs to send out a message, this location is used to look up (in the ServiceOptimizer database) the address of the service it is sent to.

SS Field: bookLoc

No

ContractEarliest

string

SS: spDateTime (string) 

SS: 16

The earliest time that the job should be started (ETA). If  ContractEarliest is not supplied, then ContractEarliest will be defaulted to <now>.

SS Field: contractEarliest

No

ContractLatest

string

SS: spDateTime (string) 

SS: 16

The time by which the job should either be started (ETA) or completed, depending on the value of callToFix.

SS Field: contractLatest

Yes

Offer

object
PropertyTypeLengthDescription

GroupID

string

SS: GroupID (string)

SS: 30

Jobs with the same groupID should be allocated in the minimum number of contiguous groups that are needed to meet their Access Hours constraints.  Like a siteID, a groupID is treated as an opaque value by ServiceOptimizer. Where this booking is based on offers from a previous call to OfferAppts, the values supplied in this field in this booking request must be the same as those supplied on the OfferAppts call.

SS Field: groupID


OpenAccHoursOvrs

object

A set of open Access Hours overrides for this job. 

If overlapping open Access Hours override periods are supplied, the overlaps are silently removed – two overlapping open Access Hours overrides will be merged into one, for example.  Similarly, overlapping closed Access Hours overrides periods are also merged.

PropertyTypeLengthDescriptionReq?
OpenType

string

SS: OpenHoursOvrType

SS: See Valid Values

If OpenType is Add, then the open overrides are added to the existing Access Hours for the job.

If OpenType is Replace, the supplied replace open overrides work in a per-calendar-day manner, i.e. the overrides replace the existing Access Hours time periods that start on the same day that the supplied open overrides start on.  So, for example, if a job has two existing Access Hours periods starting on a particular day, and there’s only one replace open override starting on that day, then the end result is to only have one Access Hours time period starting on that day

SS Field: openAccHoursOvrs.openType

SS Valid Values: "Add", "Replace"

Yes

OpenHoursarray of objects
PropertyTypeLengthDescriptionReq?
Start

string

SS: spDateTime

SS: 16

SS Field: openAccHoursOvrs.openHours[].startYes
End

string

SS: spDateTime

SS: 16

SS Field: openAccHoursOvrs.openHours[].endYes

Yes

No

ClosedAccHoursOvrs

object

A set of closed Access Hours overrides for this job.  Closed overrides are converted into open overrides before being stored.

PropertyTypeDescriptionReq?

ClosedHours

object
PropertyTypeLengthDescriptionReq?

Start

string

SS: spDateTime

SS: 16

SS Field: closedAccHoursOvrs.closedHours[].startYes
End

string

SS: spDateTime

SS: 16

SS Field: closedAccHoursOvrs.closedHours[].endYes

Yes

No

ClosedPubHols

object
PropertyTypeLengthDescriptionReq?

PubHolSets

array of strings

SS: array of PubHolSetID (string)

SS: 30

SS Field: closedPubHolsYes

No

ClosedDates

array of objects

A set of closed dates (i.e. closed whole days) for this job. ClosedDates applies only to Service Hours, not to Access Hours.

PropertyTypeLengthDescriptionReq?

Start

string

SS: spDate

SS: 8


SS Field: closedDates.dateRange[].start

Yes

End

string

SS: spDate

SS: 8


SS Field: closedDates.dateRange[].end

Yes

No

Yes

ServHoursPreDefPatts

object

A set of Service Hours patterns that are pre-defined in ServiceOptimizer.ServHoursPreDefPatts can’t be supplied as well as ServHoursPatts (below).

PropertyTypeDescriptionReq?

ServHoursPreDef

array
PropertyTypeDescription

DateRange

object

The date ranges can be ‘open-ended’ in the sense that either the StartDate or the EndDate (or both) may be missing, in which case the Service Hours pattern is assumed to continue ‘for ever’ in the corresponding direction.

PropertyTypeLengthDescriptionReq?

Start

string

SS: spDate

SS: 8

SS Field: servHoursPreDefPatts.servHoursPreDef[].dateRange.startNo

End

string

SS: spDate

SS: 8

SS Field: servHoursPreDefPatts.servHoursPreDef[].dateRange.endNo

ServHoursPattID

string               

SS: ServHoursPattID

SS: 10

The same ServHoursPattID must be supplied for each, though the accompanying DateRanges can be different.

SS Field: servHoursPreDefPatts.servHoursPreDef[].dateRange.servHoursPattID

Yes


No

ServHoursPatts

array

A repeating sequence of Service Hours time periods that each apply to a day of the week. ServHoursPatts can’t be supplied as well as ServHoursPreDefPatts (above).

PropertyTypeLengthDescriptionReq?
DateRangeobject
The date ranges can be ‘open-ended’ in the sense that either the StartDate or the EndDate (or both) may be missing, in which case the Service Hours pattern is assumed to continue ‘forever’ in the corresponding direction.


PropertyTypeLengthDescriptionReq?

Start

string

SS: spDate

SS: 8

SS Field: servHoursPatts.servHoursPatt[].dateRange.startNo
End

string

SS: spDate

SS: 8

SS Field: servHoursPatts.servHoursPatt[].dateRange.endNo

DatesAndTimesobject

The actual Service Hours (DayAndTimePeriod and GracePeriod) for each must be the same, though the DateRanges can be different.

Each day of the week (DotW) has a StartTime and an EndTime is a set of Service Hours patterns supplied just for this job.

PropertyTypeLengthDescriptionReq?
Day

string

SS: DayOfTheWeek

SS: See Valid Values

SS Field: servHoursPatts.servHoursPatt[].dayAndTimes.day

SS Valid Values: "Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"

Yes

Start

string

SS: spTime

SS: 15

SS Field: servHoursPatts.servHoursPatt[].dayAndTimes.startNo
End

string

SS: spTime

SS: 15

SS Field: servHoursPatts.servHoursPatt[].dayAndTimes.endNo

Yes

GracePeriod

string

SS: integer



SS Field: servHoursPatts.servHoursPatt[].gracePeriod

Yes

No

AccHoursPatts

array

A set of Access Hours patterns for the job. The actual Access Hours for each pattern must be the same, though the DateRange can be different.

PropertyTypeDescriptionReq?
DateRangeobjectThe date ranges can be ‘open-ended’ in the sense that either the Start or the End (or both) may be missing, in which case the Access Hours pattern is assumed to continue ‘forever’ in the corresponding direction.


PropertyTypeLengthDescriptionReq?
Start

string

SS: spDate

SS: 8

SS Field: accHoursPatts.accHoursPatt[].dateRange.startNo
End

string

SS: spDate

SS: 8

SS Field: accHoursPatts.accHoursPatt[].dateRange.endNo

DayAndTimesobject
PropertyTypeLengthDescriptionReq?
Day

string

SS: DayOfTheWeek

SS: See Valid Values

SS Field: accHoursPatts.accHoursPatt[].daysAndTimes.day

SS Valid Values: "Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"

No

Start

string

SS: spDate

SS: 8

SS Field: accHoursPatts.accHoursPatt[].daysAndTimes.startNo
End

string

SS: spDate

SS: 8

SS Field: accHoursPatts.accHoursPatt[].daysAndTimes.endNo

Yes

No

BookOptions

object
PropertyTypeDescriptionReq?

AllowEmpOT

boolean

The employees’ maximum allowed overtime should be included when making appointment offers.

SS Field: AllowEmpOT

No

SpareIgnVanStock

boolean

The spareIgnVanStock option indicates to ServiceOptimizer that vehicle stock should be ignored when generating appointments. Any ReqSpares data supplied as part of the offer request will still be read in by ServiceOptimizer, but SP_SPAREID_INVALID (111) will not be returned if any of the supplied ReqSpares is not in the ServiceOptimizer database.

If spareIgnVanStock is set then the SpareForceGo (see ForceOptions) flag will be ignored.

SS Field: SpareIgnVanStock

No

FixToEmp

boolean

This option will cause the chosen operative to effectively become mandatory.

SS Field: FixToEmp

No

ServAsAccHours

boolean

This option makes the job’s access hours pattern the same as its service hours pattern. (If an access hours pattern is also supplied in an AccHoursPatts structure, SP_ACCHOURS_DUPLICATED (390) will be returned.)

SS Field: ServAsAccHours

No

CallToFix

boolean

This option specifies that the job’s ETF will be used instead of its ETA to calculate its lateness (using its Service Hours), and will be used as well as its ETA to determine if it’s outside its access hours.

SS Field: CallToFix

No

ReqConfirm

boolean

This option will indicate on the Gantt that this job should be confirmed.

SS Field: ReqConfirm

No

NonConsecShift

boolean

Allows the use of non-consecutive shifts (as well as allowing contiguous and consecutive shifts) for splitting long duration jobs

SS Field: NonConsecShift

No

ConsecShift

boolean

This option requests the use of consecutive shifts (as well as allowing contiguous shifts) for splitting long duration jobs.

SS Field: ConsecShift

No

ContigShift

boolean

This option requests the use of only contiguous shift time splits for long duration jobs.

SS Field: ContigShift

No

No

ForceOptions

object

Force Options are not available for use in conjunction with Long jobs that are to be split across multiple shifts, an attempt to set this will result in SP_FORCEOPTIONS_INVALID (150).

PropertyTypeDescriptionReq?

InTray

boolean

A ‘catch all’ option to by-pass all constraint checking. The job is not even provisionally allocated to an operative, but remains in an in-tray until it is either manually allocated or another attempt is made to allocate it through the ABS. Both of these operations are done from the Gantt. The job will only be put into the in-tray of one of the FRUs that is mapped to the job’s location (region). Exactly which FRU is undefined, but it won’t be put into an FRU with no posted operatives.

If a mandatory FRU is supplied, the job will be booked into that FRU. If a mandatory DRU is supplied, the job will be booked into an FRU in that DRU.

If one or more mandatory Employees are supplied, but no mandatory FRU or DRU, the job will be booked into an FRU where one of those Employees has a posting (during the memory horizon) to one of the FRUs mapped to the job’s location.

If one or more mandatory Employees are supplied as well as a mandatory FRU, the job will be booked into that FRU as long as at least one of those Employees has a posting to that FRU at some time during the memory horizon.

If one or more mandatory Employees are supplied as well as a mandatory DRU, the job will be booked into an FRU in that DRU as long as at least one of those Employees has a posting to that FRU at some time during the memory horizon.

SS Field: InTray

No

InTrayWithSkill

boolean

Is another option to by-pass constraint checking, though the job will still only be put into the in-tray of one of the FRUs that is mapped to the job’s location (region). However, a skills check is done when placing the job: If there is one FRU containing an employee with the skills to do the job at some time during the SLA Search Window (see 6.6), even if that employee is not available, then the job will be put into that FRU’s in-tray. If there is more than one FRU, the one with the (numerically) lowest preference factor will be chosen. If there is more than one FRU with the same preference factor, one of them will be chosen, but which one chosen is undefined. If one or more mandatory employees are supplied, they will be stored but otherwise ignored. If a mandatory FRU is supplied it will be ignored (and not stored). If a mandatory DRU is supplied, it will be ignored.

SS Field: InTrayWithSkill

No

InTrayAfterAll

boolean

First attempts to allocate the job in the normal way. If this isn’t possible, and neither a mandatory DRU nor a mandatory FRU nor mandatory employees are supplied, the job is booked into an FRU where, during the SLA Search Window, there is at least one employee with the skills to do the job (similar to InTrayWithSkills). The Gantt can then be used to try to allocate it, either manually or through the ABS again.

If a mandatory FRU is supplied in ReqUnitType, UnitType and Unit, then the job will be put into that FRU’s in-tray as long as there is an employee in that FRU with the required skills during the SLA Search Window (though he may not be available). If this is not the case, SP_UNIT_INVALID (28) is returned.

If a mandatory DRU is supplied, the job will be put into the in-tray of one of the FRUs in that DRU as long as there is an employee in that FRU with the required skills during the SLA Search Window (though he may not be available). If this is not the case, SP_UNIT_INVALID (28) is returned.

If one or more mandatory employees are supplied in ReqEmpType and EmpID, a check will be made that one of them has the skills to do the job (at some time during the SLA Search Window), and the job will be put into the in-tray of the FRU where one of those employees is working. If none of them have the skills, SP_EMP_NOT_SKILLED (75) will be returned. If the employee is working in more than one FRU, the job will be put into the in-tray of the FRU with the (numerically) lowest preference factor. If there is more than one FRU with the same preference factor, then which of those is chosen is undefined.

If both a mandatory FRU and one or more mandatory employees are supplied, and the employees aren’t posted to the FRU at any time, the job will be put into the in-tray for the mandatory FRU as long as, during the memory horizon, there is at least one employee with the skills.

If both a mandatory DRU and one or more mandatory employees are supplied, and the employees aren’t posted to any of the FRUs in that DRU at any time, the job will be put into the in-tray of one of the FRUs in that DRU as long as, during the memory horizon, there is at least one employee with the skills.

In all cases, the job will only ever be booked into an FRU that its location (region) is mapped to.

Note: The 3 In-Tray ForceOptions (above) are mutually exclusive. SP_OPTION_COMBINATION_INVALID (159) will be returned if more than 1 of them is set.

SS Field: InTrayAfterAll

No

SpareForceGo

boolean

Indicates that a job that requires spares should still be allocated even if all of the required spares are not available. This means that if all the spares are available from vehicle stock they may be used, otherwise they need to be sourced externally.

SS Field: SpareForceGo

No

Reassign

boolean

Allows existing jobs to be re-assigned among operatives in an attempt to fit this new job into the schedule. Use of this option will increase response times; this may be controlled by means of the database parameters ABS_reassign_jobs_max, ABS_reassign_options_max, and ABS_reassign_timeout.

SS Field: Reassign

No

IgnoreCapacity

boolean

When set to true, the capacity for every day should be treated as though it was 100%, i.e. the capacity check values set for each day should be ignored.

SS Field: IgnoreCapacity

No

NoTravel

boolean

Sets the travel time (travel-to) to zero. i.e. Jobs with “NoTravel” are skipped in travel calculations. Travel time to next location will be based on previous location.

SS Field: NoTravel

No

NoLocalKnowledge

boolean

Ignores local knowledge checks in candidate searches.

SS Field: NoLocalKnowledge

No

IgnoreAvailable

boolean

When set to true, jobs can be offered/booked onto operatives who are not available. Jobs booked with ignoreAvailable  are not moved by the optimizer until the operative becomes available.

SS Field: IgnoreAvailable

No

IgnoreSkills

boolean

When set to true, jobs can be offered/booked onto operatives who lack the required skills for the job.

SS Field: IgnoreSkills

No

No

ReqSpares

array

Booking APIs can have up to 5 <reqSpare> structures inside the <reqSpares> structure, each of which contains a SpareID and a quantity.

Spares substitutes can be supplied by concatenating up to 5 SpareIDs separated by a semicolon character (';')

PropertyTypeLengthDescriptionReq?

spare

string

SS: SpareID (string)

SS: 30


SS Field: reqSpares.reqSpare[].spare

Yes

qty

string

SS: integer



SS Field: reqSpares.reqSpare[].quantity

Yes

No

DeliverySize

string

SS: integer


Amount of space occupied by equipment that will be removed from the operative’s vehicle as part of this job. SP_VEHICLE_CAPACITY_EXCEEDED (662) will be returned if no single vehicle within the FRU has a vehicle capacity large enough. Where this booking is based on offers from a previous call to OfferAppts, the values supplied in this field in this booking request must be the same as those supplied on the OfferAppts call.

SS Field: deliverySize

No

PickupSize

string

SS: integer


Amount of space occupied by equipment that will be loaded onto the operative’s vehicle as part of this job. SP_VEHICLE_CAPACITY_EXCEEDED (662) will be returned if no single vehicle within the FRU has a vehicle capacity large enough. Where this booking is based on offers from a previous call to OfferAppts, the values supplied in this field in this booking request must be the same as those supplied on the OfferAppts call.

SS Field: pickupSize

No

CapacityCategory

string

SS: CapacityCategoryName

SS: 20

Capacity constraints, in the form of a reserved or/and limit level can be defined for each capacityCategory and a check can be done in ApptOfferRequest so that only those offers where none of these constraints would be broken are returned. Where this booking is based on offers from a previous call to OfferAppts, the values supplied in this field in this booking request must be the same as those supplied on the OfferAppts call.

SS Field: capacityCategory

No

Desc

array of strings (max 3)SS: 500

Free format text describing the job.

SS Field: desc

No

Desc2

stringSS: 3500

Free format text about the job that appears in the “More Notes” window on the Gantt.  If it conforms to the XML schema gantt.morenotes.xsd, it will appear in a two column table.

SS Field: desc2

No

HTTP Response

Success

On success, a JSON-formatted version of the ServiceScheduling "Book Job Request" API response will be returned.

{
    "Success" : true,
    "Code" : 0,
    "Message" : "OK",
    "Payload" : {
        "result" : {
            "type" : "OK",
            "code" : "0"
        },
        "TravelTime" : "3",
        "WorkItems" : [
            {
                "Id" : "Dep-1306",
                "Tech" : "DE3_9_01",
                "ETA" : "2006-01-03T08:01",
                "IRU" : "EMID_I01",
                "FRU" : "EMIDLAND"
            },
            {
                "Id" : "Dep-1307",
                "Tech" : "DE3_9_01",
                "ETA" : "2006-01-03T09:02",
                "IRU" : "EMID_I01",
                "FRU" : "EMIDLAND"
            }
        ]
    }
}

Error

On error, a JSON-formatted version of the ServiceScheduling "Book Job Request" API response will be returned.

{
    "Success": false,
    "Code": 9,
    "Payload": {
        "returnCode": {
            "type": "Error",
            "code": "SCH Error Code"
        }
    }
}

Return Codes

In addition to the Standard Return Codes, the possible Return Codes from this API are:

 Click here to expand...
  • SP_OK (0)
  • SP_JOBID_INVALID (1)
  • SP_JOBTYPE_INVALID (2)
  • SP_POSTCODE_INVALID (3)
  • SP_LOCATION_INVALID (4)
  • SP_EMPID_INVALID (5)
  • SP_NO_TIME_AVAILABLE (8)
  • SP_DURATION_INVALID (12)
  • SP_DATE_INVALID (14)
  • SP_EMP_UNAVAILABLE (21)
  • SP_JOBID_EXISTS (23)
  • SP_SKILL_INVALID (27)
  • SP_UNIT_INVALID (28)
  • SP_END_NOT_GT_START_TIME (31)
  • SP_SKILLLEVEL_INVALID (32)
  • SP_CANNOT_FORCE_SKILL (33)
  • SP_JOBTYPE_NOT_IN_DATE (49)
  • SP_JOBTYPE_CANNOT_BE_FORCED (51)
  • SP_OUTSIDE_HORIZON (53)
  • SP_EXTRA_DURATION_INVALID (54)
  • SP_REQTYPE_INVALID (74)
  • SP_EMP_NOT_SKILLED (75)
  • SP_UNITTYPE_INVALID (77)
  • SP_OPTIONS_INVALID (80)
  • SP_PRIORITY_INVALID (81)
  • SP_ALLOWREBOOK_INVALID (87)
  • SP_EMPSMAX_EXCEEDED (88)
  • SP_EMPID_DUPLICATED (89)
  • SP_CUSTID_INVALID (95)
  • SP_CUSTNAME_INVALID (96)
  • SP_CUSTADD1_INVALID (97)
  • SP_CUSTADD2_INVALID (98)
  • SP_CUSTADD3_INVALID (99)
  • SP_CUSTADD4_INVALID (100)
  • SP_CONTACTNAME_INVALID (101)
  • SP_CUSTPHONE1_INVALID (102)
  • SP_CUSTPHONE2_INVALID (103)
  • SP_DESC1_INVALID (104)
  • SP_DESC2_INVALID (105)
  • SP_DESC3_INVALID (106)
  • SP_DESC4_INVALID (107)
  • SP_SPAREID_INVALID (111)
  • SP_QUANTITY_INVALID (112)
  • SP_NO_REG_TO_RU_MAPPING (115)
  • SP_EXTRASKILL_DUPLICATED (118)
  • SP_JOBSKILLSMAX_EXCEEDED (119)
  • SP_SPARE_SUBS_EXCEEDED (147)
  • SP_FORCEOPTIONS_INVALID (150)
  • SP_EMP_ZERO_LK (155)
  • SP_NO_SKILL (156)
  • SP_OPTION_COMBINATION_INVALID (159)
  • SP_EMP_NOT_POSTED (178)
  • SP_POSTCODE_NOT_MAPPED (179)
  • SP_EMPID_DOES_NOT_EXIST (231)
  • SP_SPARE_SUB_DUPLICATED (254)
  • SP_IMPORTANCE_INVALID (287)
  • SP_DELIVERY_SIZE_INVALID (333)
  • SP_PICKUP_SIZE_INVALID (334)
  • SP_DESCRIPTION2_INVALID (335)
  • SP_OK_IMPORTANCE_IGNORED (346)
  • SP_OK_ABS_SEARCH_TIMEOUT (369)
  • SP_NTA_ABS_SEARCH_TIMEOUT (370)
  • SP_DST_TIME_INVALID (379)
  • SP_SERVHOURS_DUPLICATED (389)
  • SP_ACCHOURS_DUPLICATED (390)
  • SP_OPEN_ENDED_ACCHOURS_NOT_ALLOWED (391)
  • SP_DOTW_INVALID (394)
  • SP_GRACE_PERIOD_INVALID (395)
  • SP_SERVHOURS_STARTTIME_INVALID (397)
  • SP_SERVHOURS_ENDTIME_INVALID (398)
  • SP_SERVHOURS_OVERLAP (399)
  • SP_SERVHOURS_STARTDATE_INVALID (400)
  • SP_SERVHOURS_ENDDATE_INVALID (401)
  • SP_SERVHOURSPATTSEQ_PATTS_NULL (403)
  • SP_SERVHOURSPREDEFPATTSEQ_PATTS_NULL (405)
  • SP_SERVHOURS_PATTID_INVALID (406)
  • SP_SERVHOURS_PATTID_DOES_NOT_EXIST (407)
  • SP_DAYANDTIMEPERIODSEQ_PERIODS_NULL (410)
  • SP_ACCHOURS_STARTTIME_INVALID (411)
  • SP_ACCHOURS_ENDTIME_INVALID (412)
  • SP_ACCHOURS_OVERLAP (413)
  • SP_ACCHOURS_STARTDATE_INVALID (414)
  • SP_ACCHOURS_ENDDATE_INVALID (415)
  • SP_ACCHOURSPATTSEQ_PATTS_NULL (417)
  • SP_SERVHOURSPATTSEQ_SIZE_INVALID (418)
  • SP_DAYANDTIMEPERIODSEQ_SIZE_INVALID (419)
  • SP_SERVHOURSPREDEFPATTSEQ_SIZE_INVALID (420)
  • SP_ACCHOURSPATTSEQ_SIZE_INVALID (421)
  • SP_SERVHOURSPATTSEQ_NOT_SAME (429)
  • SP_DATETIMERANGESEQ_RANGES_NULL (431)
  • SP_DATETIMERANGESEQ_SIZE_INVALID (432)
  • SP_OPENHOURSOVRTYPE_INVALID (433)
  • SP_OPENACCHOURSOVR_START_INVALID (434)
  • SP_OPENACCHOURSOVR_END_INVALID (435)
  • SP_OPENACCHOURSOVR_END_NOT_GT_START (436)
  • SP_CLOSEDACCHOURSOVR_START_INVALID (437)
  • SP_CLOSEDACCHOURSOVR_END_INVALID (438)
  • SP_CLOSEDACCHOURSOVR_END_NOT_GT_START (439)
  • SP_CONTRACT_EARLIEST_INVALID (441)
  • SP_CONTRACT_LATEST_INVALID (442)
  • SP_NO_ACCHOURS (443)
  • SP_SERVHOURS_DATERANGE_END_NOT_GT_START (444)
  • SP_SERVHOURS_DATERANGE_OVERLAP (446)
  • SP_SERVHOURSPREDEFPATTSEQ_NOT_SAME (448)
  • SP_CLOSEDDATES_SEQ_SIZE_INVALID (460)
  • SP_CLOSEDDATES_SEQ_DATERANGES_NULL (462)
  • SP_CLOSEDDATES_STARTDATE_INVALID (463)
  • SP_CLOSEDDATES_ENDDATE_INVALID (464)
  • SP_ACCHOURS_DATERANGE_END_NOT_GT_START (465)
  • SP_ACCHOURS_DATERANGE_OVERLAP (466)
  • SP_ACCHOURSPATTSEQ_NOT_SAME (468)
  • SP_CLOSEDDATES_END_NOT_GT_START (470)
  • SP_PRIORITY_NO_COST (475)
  • SP_IMPORTANCE_NO_COST (476)
  • SP_SITEID_INVALID (500)
  • SP_GROUPID_INVALID (501)
  • SP_MULTIJOBID_ALREADY_EXISTS (539)
  • SP_NO_POSTINGS (545)
  • SP_CAPACITYCATEGORY_NOT_DEFINED (581)
  • SP_CAPACITYCATEGORY_DOES_NOT_EXIST (602)
  • SP_CAPACITYCATEGORY_INVALID (603)
  • SP_DRU_NO_FRUS (625)
  • SP_VEHICLE_CAPACITY_EXCEEDED (662)
  • SP_LISTREQEMPS_NULL (684)
  • SP_LISTREQEMPS_SIZE_GT_MAX (685)
  • SP_LISTREQEMPS_SIZE_INVALID (686)
  • SP_LISTREQEMPS_COMBINATION_INVALID (689)
  • SP_UDLOC_FAILED_REGION_MAPPING (692)
  • SP_TOO_MANY_MANDATORYORDERED (694)

  • SP_RESTRICTION_REF_DOES_NOT_EXIST (697)

  • SP_VWDL_COMBINATION_INVALID (822)
  • SP_VWDL_LOCATION_INVALID (823)
  • SP_VWDL_TRAVEL_INVALID (824)

Please Note:

Since a search for available capacity is done as part of JobBookRequest, ABS_search_timeout can be used, and so SP_OK_ABS_SEARCH_TIMEOUT (369) (369) or SP_NTA_ABS_SEARCH_TIMEOUT (370) (370) may be returned. ABS_search_timeout won’t be used if Reassign is to be tried, since the time allowed for re-assign is separately limited by the timeout ABS_reassign_timeout.

Within this window, the job can only be allocated to start (and finish if it’s a call-to-fix job) within its Access Hours.

If InTray is set, a search window isn’t needed and effectively the whole memory horizon is searched.






  • No labels