Skip to content

Schema Entities

Entity: Activity (Input)

Activity defines what is to be scheduled. Activities can be things such as service calls, work breaks or private appointments where a resource is not available for work. An activity could be split, prioritized, deprioritized or treated in a special way in relation to other activities.

A 'repeatable' activity can be created that can be scheduled to resources indefinitely, i.e. as long as there is enough space in a resource's route, multiple visits (essentially occurrences) of this activity will be allocated to the resource. A 'repeatable' activity defines a multi-visit activity. This is restricted to be used in Cyclic Scheduling only.

Activities can be identified as being able to be split into a number of consecutive visits spread over shifts. This is achieved by setting Split Allowed to true.

Warning

An activity should not be marked as splittable if it has different start and end locations, since in this case it is undefined where the resource would be when the split occurs. In addition, an activity cannot be split between shifts for bucket resources.

Activities at the same location can be treated in a special way to either force all activities at the location to be scheduled together, or to give the scheduler an extra incentive to do so. This is achieved via the attribute do_on_location_incentive. For example, suppose a resource is working on an activity at a certain location where there are several other activities outstanding. If an urgent activity then came into the system he could still be sent away from that location to do the urgent activity before returning later to finish the other activities there. In fact, the other activities may even be scheduled elsewhere in this situation. By setting a soft constraint the resource could be made to stay on location unless the urgent job was particularly valuable. By setting a hard constraint you can ensure that the resource will never be sent away from the location in these circumstances. Of course, in the normal run of things you can expect all activities at a location to be scheduled together, as this would be the best schedule.

We can make a distinction between location and locality by making use of the do_in_locality_incentive attribute. This can be used in conjunction with the do_on_location_incentive. For example, we could have a block of flats, each flat has a different location but the same locality. We can then set a hard constraint on the location but a soft constraint on the locality and schedule jobs within the same location together, i.e. jobs at each flat first.

If the do_in_locality_incentive is not set then the do_on_location_incentive will apply for locations and localities.

A soft constraint is set by using a positive value. A value of 1 has no effect. A value greater than 1 makes it more likely that another activity at the same location will be scheduled immediately after this one, by increasing the value of the visits. The value represents the maximum multiplier that may be applied to the visit value when activities at the same location are scheduled together. The actual multiplier applied increases with the total number of same location activities scheduled within a single trip.

Note

To be precise, the exact multiplier applied is equal to the ((n - 1) / n)th power of the incentive, where n is the number of visits at the same location scheduled together. For example, if two visits at the same location are scheduled together, and each has a do on location incentive of 1.5, the value of each visit will be multiplied by the square root of 1.5, or about 1.225. If 10 visits at the same location are scheduled together, then a visit with an incentive of 2 would have its value increased by a factor of 1.866 (2 ^ (9/10)), while a visit with no incentive would retain its original value.

Note

Note that the resource location will also be considered when applying the incentive. If a resource starts a shift at the same location as an activity with a do on location incentive, and the activity is scheduled at the start of the shift, then the incentive will apply to the activity. For the purposes of the calculation, this is treated as if an extra activity were scheduled at the location.

If a hard constraint is required the value of 'do_on_location_incentive' should be set to -1. In this situation whenever a resource is scheduled to arrive at a location, he must carry out all work it is possible for him to do at that time. More specifically, if there is another activity at the location with a do_on_location_incentive of -1, then he must carry out this activity unless one of the following conditions holds:

  1. The resource is not permitted to carry out the activity, for example due to not having the correct skills.
  2. The activity is not available to be carried out at any time within the shift in question.
  3. Only applicable if the parameter 'DoOnLocationCheckSingleLocation' is set to true: The only activities scheduled within the shift in question are also at this location.

The third exception condition is not considered by default as it can have confusing side effects.

Warning

A value of -1 for do_on_location_incentive may cause activities to be unscheduled, when they could otherwise be scheduled. Do not use this value unless you are confident that you understand the behaviour it will cause.

Note

The recommended values for do_on_location_incentive are -1 or anything between 1 and 2 (values higher than 2 can be used but aren't recommended as they may start to have a detrimental effect on the general schedule quality).

A value greater than 1 will act as a multiplier on the value of doing the activity whenever it has been scheduled after another activity at the same location. It will also trigger the optimiser to specifically attempt to schedule this activity with other activities at the location. However, this will not force the optimiser to reject changes that would actually improve the schedule.

Two consecutive activities are considered to be at the same location if a locality is specified for both locations, and it is the same; or if locality is not specified on one or both locations, and the two location ids are the same.

Note

To send a break into the system requires sending an Activity element with an activity_class_id = "BREAK", this must be sent in conjunction with an Activity_Status element which contains the desired duration of the break, as well as its current status (unallocated, allocated, on site, travelling etc.) and an Activity_SLA element detailing the window within which this break must be scheduled.

Note

To send a private activity into the system requires sending an Activity element with an activity_class_id = "PRIVATE", this must be sent in conjunction with an Activity_Status element which contains the desired duration of the activity, as well as a date_time_fixed detailing when the activity starts. The status should be set to committed (30). It is not necessary to send an Activity_SLA for private activities.

Note

By default all CALL and DEPOT class activities are expected to have a location. BREAK activities are expected to not have a location, while for PRIVATE activities a location is optional. However, BREAK and PRIVATE activities should be fixed to a particular resource via the activity status.

If locationless activities are required in the more general sense, this can be enabled by setting the parameter 'AllowLocationlessActivities' to true.

Note

Where Split Allowed is set to True against an activity then the DSE is free to split the activity over consecutive shifts, or around activities marked as interruptable. Thus it is possible that, in order to squeeze one last activity into a shift that the DSE schedules say the last 5 minutes of an activity to be completed at the start of the next shift. This is probably undesirable from a business perspective and so to allow the EA to prohibit this behaviour a further additional string field Min Split with default value PT1H is used. Where Split Allowed is set to false this field will not be used (and need not be set to any particular value). Where Split Allowed is set to true then the DSE will ensure that no part of the activity is split into a section where the time at location is scheduled to be less than the time specified by Min Split.

Note

Priority. Where the activity is using an SLA Type based upon the 'POWER_BASED' mechanism type this attribute will have no effect on the scheduling of the activity.

Warning

In order for an Activity to be considered for scheduling an Activity_Status and Activity_SLA must also be created.

Note

Committing a split activity commits the whole activity and makes it unsplit i.e. it will assume it is all happening now.

If just the first part of the activity needs to be committed but not all, then a new activity for the part not to be committed needs to be created, and the original activity adjusted, and tied to part 1 using a pre-req or a time constraint.

Attribute NameData TypeDescriptionPKM/O
idString(32)Defines a unique id for the activity.PKM
activity_class_idString(10)Defines the type of activity.

Foreign Key: Activity_Class

Allowed Values: BREAK, CALL, DEPOT, PRIVATE, REPEATABLE, WRAPPER
M(CALL)
activity_type_idString(32)Describes the type of activity. E.g. service call.

Foreign Key: Activity_Type

Notes: Must exist as Activity Type.
M(Default)
appointedBooleanDefines whether this activity represents an appointment that has been booked.O
auto_durationTime SpanDefines the estimated duration of the activity, as determined automatically using the Schedule Archive.

Notes: This should not be filled in externally.
O
auto_duration_enabledBooleanDefines whether an auto_duration should be used for this activity.O
base_valueDoubleDefines the basic marginal value of scheduling this activity compared to not scheduling it.

Notes: May be used where Mechanism Type = ‘POWER_BASED’ for the SLA
O
calendar_idString(32)Defines the id of the calendar to use when applying SLA times to this activity.

Foreign Key: Calendar
O
colourString(9)Used for display purposes.

Notes: Format: #RRGGBB
O
contract_idString(32)Defines the id of the contract that this activity relates to.

Foreign Key: Contract
O
cost_of_splitDoubleDefines the cost incurred each time the activity is split.

Notes: Only applies if split_allowed = true. Each time the activity is split this value is added to the cost. This can be used to avoid unnecessary splitting of activities. E.g. if it is split into 3 segments the cost is applied twice.
O
customerString(100)Defines the customer that this activity relates to.

Foreign Key: Customer

Notes: Note that 'customer' does not follow the standard naming format of columns that reference parent tables ('table_name'_id). This does not signify any differences - it is for technical reasons that it is different.
O
date_time_createdDate TimeDefines the date time the activity was created.O
date_time_openDate TimeDefines the date and time the activity was opened to be processed.O
descriptionString(2000)Describes the activity if required.O
display_context_idString(32)Provides the context to determine which list should be used when viewing in the Scheduling Workbench.

Notes: This should match the id of a Display_Context row defined in the system data
O
do_in_locality_incentiveDoubleDefines how activities at the same locality should be scheduled.O
do_on_location_incentiveDoubleDefines how activities at the same location should be scheduled.

Notes: See notes above.
O
durationTime SpanDefines an alternative option for where duration is taken from

Notes: Only used if duration is not specified on any activity_status. If duration is also not specified on the activity, the value on the activity type will be used.
O
end_location_idString(32)Defines the location at which the activity ends.

Foreign Key: Location

Notes: Only required if the end location is different from the activity start location.
O
external_refString(40)Defines a string used by the EA to identify this activity.O
icon_idString(32)The id of an icon to use for this activity.

Foreign Key: Icon
O
interruptBooleanDefines whether this activity is allowed to be used to split an activity where split_allowed is set to true.O
interrupt_multiplierDoubleDefines a multiplier that is applied to the cost_of_split of a splittable activity when interrupted by this activity.

Notes: Only applies where interrupt=true. If several activities interrupt a splittable activity within the same split the highest value multiplier will be applied.
O
interrupt_priorityIntegerDefines the priority of this activity when considering whether to use it to interrupt a splittable activity. This is compared to the split_minimum_priority on the splittable activity.

Notes: Only applies where interrupt=true.
O
last_visited_date_timeDate TimeFor a REPEATABLE activity used with a modelling pattern, this is the last time a visit to the activity occurred.

Notes: This is for use with Cyclic Scheduling.
O
location_idString(32)Defines the location where the activity is to take place.

Foreign Key: Location
O
maximum_displaceable_priorityIntegerWhen appointment booking for this activity, the engine will attempt to displace any other activities of this priority or less.O
memoString(4000)Provides general information about the activity to be displayed.

Notes: Large amounts of data held here can impact performance of the software and should be kept to a minimum.
O
min_splitTime SpanDefines the minimum on site duration for any visit to a split activity.O
modelling_pattern_idString(32)Defines the unique identifier for the modelling pattern.

Foreign Key: Modelling_Pattern

Notes: Only required for cyclic scheduling. Can either be linked to a number of activities of type CALL or a single activity of type REPEATABLE.
O
priorityIntegerDefines the priority of this activity. The greater the number the greater the priority.

Notes: This is used in the appointment booking process when displacing activities.
O
reactiveBooleanDefines whether the activity is reactive. Used in conjunction with the Schedule Distribution Service.

Notes: When not present the value from Activity_Type.reactive is used.
O
remote_fulfillmentBooleanIf true, this indicates that a resource can carry out this work without visiting the activity location.O
separation_group_idString(32)Defines the id of the separation group this activity belongs to.

Foreign Key: Separation_Group
O
service_levelString(100)Used for information and reporting only. Has no impact on scheduling.

Notes: If not specified the value on the Activity_Type will be used.
O
sla_template_idString(32)Defines which SLA Template should be used.

Foreign Key: SLA_Template

Notes: If the activity has any Activity_SLAs specified against it, then these will be used instead of the template.
O
split_allowedBooleanDefines whether the activity is allowed to split.

Notes: This should not be allowed for an activity with different start and end locations
O
split_minimum_priorityIntegerDefines the minimum split priority required for this activity to be split, and the minimum interrupt priority required for another activity to be able to interrupt this activity.

Notes: Only applies where split_allowed=true.
O
split_model_idString(32)Defines which split model to use for split settings.

Foreign Key: Split_Model

Notes: If specified, all split settings will be taken from the split model (even if set to null).
O
time_zoneString(32)Defines the id of the time zone related to this activity.O

Examples

<Activity>
    <id>Example1</id>
    <location_id>NG161QD</location_id>
</Activity>
<Activity>
    <id>Example2</id>
    <activity_class_id>CALL</activity_class_id>
    <activity_type_id>AT2</activity_type_id>
    <location_id>NG161QD</location_id>    
    <priority>2</priority>
    <split_allowed> true</split_allowed>
    <do_on_location_incentive>1</do_on_location_incentive>
    <min_split>PT2H0M0S</min_split>
    <priority>3</priority>
    <description>All attributes defined</description>
    <date_time_created>2006-01-03T12:01:00.0000000+01:00</date_time_created>
    <date_time_open>2006-01-03T12:01:00.0000000+01:00</date_time_open>
    <external_ref>Test 8</external_ref>
</Activity>

Entity: Activity_Availability_Set (Input)

Links an activity to an availability set.

Attribute NameData TypeDescriptionPKM/O
activity_idString(32)The id of the activity.

Foreign Key: Activity
PKM
availability_set_idString(32)The id of the availability set.

Foreign Key: Availability_Set
PKM

Entity: Activity_Category (Input)

Represents an association between an activity and a category.

Attribute NameData TypeDescriptionPKM/O
activity_idString(32)The id of the activity to be associated with a category and categorisation.

Foreign Key: Activity
PKM
categorisation_idString(32)The id of the categorisation to link to the activity.

Foreign Key: Category
PKM
category_idString(32)The id of the category to link to the activity.

Foreign Key: Category
M

Entity: Activity_Class (Lookup)

Activity Class defines what sort of activity is represented. Activities can relate to some operational process, a resource rest period or a private activity where the resource is unavailable to be scheduled for work. Activity Class is a method of incorporating these different types of activities into the scheduling process.

There are six classes of activities :-

BREAK: which defines a period of time within a time window where the resource must stop servicing call class activities.

CALL: which defines an activity a resource must undertake at a location.

DEPOT: defines the location of a depot to be used for part replenishment.

PRIVATE: defines periods of time when the resource is not available to service activities of any other class.

REPEATABLE: defines an activity that can be undertaken multiple times.

WRAPPER: defines an activity to be carried out as an initial or final task in a batch of work.

Note

Activity Class values are setup internally and need not be provided by the EA

Attribute NameData TypeDescriptionPKM/O
idString(10)Defines a unique id for the activity class.

Allowed Values: BREAK, CALL, DEPOT, PRIVATE, REPEATABLE, WRAPPER
PKM
descriptionString(100)Describes activity class purpose.O
message_idIntegerDefines the id of the message describing the activity class purpose.O

Entity: Activity_Custom_Metric (Input)

This defines the value an activity has against a custom metric. This value is used for the activity when validating shift rules or parallel rules involving custom metrics.

Attribute NameData TypeDescriptionPKM/O
activity_idString(32)The id for the activity the metric is being specified for

Foreign Key: Activity
PKM
custom_metric_idString(32)The id of the custom metric being used

Foreign Key: Custom_Metric
PKM
valueDoubleThe value to use for the activityM

Entity: Activity_Custom_URL (Input)

Defines the custom url to be used for a particular activity. Custom url parameters can be specified for the activity, the use of which is defined on the URL_Parameter record for the specific custom url id (see example below).

<Activity_Custom_URL>
    <activity_id>SVC_1</activity_id>
    <custom_url_id>urlActivities</custom_url_id>
    <custom_parameter_value1>SVC_1</custom_parameter_value1>
  </Activity_Custom_URL>
  <Custom_URL>
    <id>urlActivities</id>
    <name>Prepare work order</name>
    <custom_action>ACTIVITY_DETAIL_FORM</custom_action>
  </Custom_URL>
  <URL_String>
    <custom_url_id>urlActivities</custom_url_id>
    <sequence>1</sequence>
    <string_value>https://example.com/</string_value>
  </URL_String>
  <URL_Parameter>
    <custom_url_id>urlActivities</custom_url_id>
    <sequence>2</sequence>
    <custom_parameter>1</custom_parameter>
  </URL_Parameter>
Attribute NameData TypeDescriptionPKM/O
activity_idString(32)Defines the activity linked to the specified custom url.

Foreign Key: Activity
PKM
custom_url_idString(32)Defines the custom url linked to the specified activity.

Foreign Key: Custom_URL
PKM
custom_parameter_value1String(2000)Defines the first custom url parameter value to be used in the custom url for this activity. The sequence in the url string is defined on URL_Parameter. See example code above.O
custom_parameter_value2String(2000)Defines the second custom url parameter value to be used in the custom url for this activity. The sequence in the url string is defined on URL_Parameter. See example code above.O
custom_parameter_value3String(2000)Defines the third custom url parameter value to be used in the custom url for this activity. The sequence in the url string is defined on URL_Parameter. See example code above.O
custom_parameter_value4String(2000)Defines the fourth custom url parameter value to be used in the custom url for this activity. The sequence in the url string is defined on URL_Parameter. See example code above.O

Entity: Activity_Group (Input)

Activity Group defines related activities either as pre-requisites, co-requisite, or combined activities, or as a suggested ordering between the activities. The type of activity group is indicated by the value in attribute pre_co_req.

A pre-requisite is an activity that must be started/completed before another activity can commence. There can optionally be specified a minimum delay after the start of the pre-requisite before this activity can commence, and a maximum time after the start of the pre-requisite before which this activity must commence. If the activity cannot be started before this time, then it will not be allocated. However, the first part of the pre-requisite may still be allocated, unless the attribute all_or_nothing is set to true.

A corequisite defines two activities that must be scheduled to start at the same time.

A combined activity group links two activities such that they will be scheduled either back-to-back with the same resource, or to be commenced at the same time by two different resources (essentially a co-requisite). The choice of how the activity is scheduled is left to the DSE, which will adopt optimum choice for the schedule.

A suggested ordering defines two activities that should ideally be scheduled one after the other.

Note

Where same_resource is set to true the DSE will only allow the allocation of the activity to the resource that was allocated the pre-requisite.

Note

Set Activity_Group.overlap_allowed attribute to true to allow overlaps between a pre-req and its dependent. This attribute is defaulted to false if not provided.

The dependent activity should always start at the same time or after its pre-req. Obviously, for the activities to overlap they have to be allocated to different resources (set Activity_Group.same_resource to false).

This only applies to pre-requisite activities.

Note

For pre-requisites the 2 linked activities are ordered as follows :-

activity_id1 = Activity A
activity_id2 = Activity B

Then Activity B must be done before Activity A.

Note

For co-requisites the linking can be in any order. Three co-requisite activities A,B and C can be linked as A,B and A,C or A,B and B,C.

Note

For combined activities configured as follows:-

activity_id1 = A
activity_id2 = B

If the above are scheduled back-to-back then the ordering may be either A-B or B-A.

Note

In order to share skills across co-requisite allocations refer to entity Activity_Skill.

Note

This can also be used to define a suggested order between the activities. If activity A should be done immediately before activity B, the data should be set as follows:

activity_id1 = Activity B
activity_id2 = Activity A
pre_co_req = ORDER_ONE_WAY

To specify that the activities should be done one after the other in either direction, set pre_co_req to ORDER_TWO_WAY.

By default, activities ordered with ORDER_ONE_WAY or ORDER_TWO_WAY will only be allowed in the same shift. To allow the activities to access consecutive shifts, set allow_ordered_across_shifts to true.

The attribute order_incentive provides a multiplier that will be applied to the value of the scheduled activities if the suggested ordering is followed. If no order_incentive is specified this will be treated as a forced ordering which the DSE must follow.

If the ordering is not forced but you do wish to enforce that the activities are carried out by the same resource then the same_resource flag should be set to true.

Both ORDER_ONE_WAY and ORDER_TWO_WAY cannot be used with appointment booking. The use of appointment booking with suggested order activities is not supported.

ORDER_TWO_WAY activities may be scheduled in parallel with each other to a parallel resource.

Warning

The use of activity groups significantly increases the complexity of the scheduling problem, and as such they should be used with care. If more than 5 activities need to be linked together in a single group structure, then IFS PSO Product Development must be consulted and thorough testing must be performed to confirm successful operation.

Appointment booking of linked activities is considerably more complex than single activities, since the related activities may cause potential slots to be blocked out resulting in fewer offers being made. As such IFS PSO Product Development strongly recommend that appointment booking is only done for activities with one related activity - either pre-req or co-req. If a situation arises where more complex structures need to be appointment booked, then IFS PSO Product Development must be consulted and thorough testing must be performed to confirm that the ABE is making satisfactory offers.

Attribute NameData TypeDescriptionPKM/O
activity_id1String(32)Specifies the id of the activity this relates to.

Foreign Key: Activity

Notes: No circular references between Activity Id1 and Activity Id2.
PKM
activity_id2String(32)Specifies the id of the pre-requisite or co-requisite activity.

Foreign Key: Activity

Notes: For pre-requisites this activity must come before activity_id1.
PKM
pre_co_reqString(20)Defines the type of link being made between the activities.

Allowed Values: PRE, CO, COMBINED, ORDER_ONE_WAY, ORDER_TWO_WAY
PKM
all_or_nothingBooleanSpecifies that this activity can be allocated only if all pre-requisites can also be allocated.

Notes: Only applies if pre_co_req = PRE.
M(false)
end_time_calculation_methodString(8)Specifies how the end time will be calculated for co-requisite and combined calls that start at the same time.

Allowed Values: STANDARD, PARENT, EARLIEST, LATEST

Notes: Only applies if pre_co_req = CO or COMBINED.
M(STANDARD)
min_delayTime SpanDefines the time delay that activity 1 must wait to start after pre-requisite activity 2 has started.

Notes: Only applies if pre_co_req = PRE.
M(PT0S)
same_resourceBooleanDefines whether the same resource that performs the pre-requisite must perform activity 1.

Notes: Not applicable for co-requisite or combined links.
M(false)
activity_group_sla_model_idString(32)Defines an SLA model to be applied to the value of a visit to a dependent activity based on its scheduling in relation to a pre-requisite visit.

Foreign Key: Activity_Group_SLA_Model

Notes: Only applies if pre_co_req = PRE.
O
allow_ordered_across_shiftsBooleanIf true, ordered activities are allowed to be scheduled across consecutive shifts.

Notes: Only applies if pre_co_req = ORDER_ONE_WAY or ORDER_TWO_WAY
O
keep_splits_togetherBooleanFor co-requisites that are splittable this determines whether the individual visits should all start and end at the same time, or just the start time of the first visits.

Notes: Only applies if pre_co_req = CO or COMBINED.
O
max_delayTime SpanDefines the time delay after start of pre-requisite activity before which activity must commence.

Notes: Only applies if pre_co_req = PRE.
O
max_delay_start_proportionDoubleSpecifies that the max delay will apply from the time when this proportion of the pre-requisite activity has been completed.

Notes: Must be between 0 and 1. Only applies if pre_co_req = PRE.
O
min_delay_start_proportionDoubleSpecifies that the min delay will apply from the time when this proportion of the pre-requisite activity has been completed.

Notes: Must be between 0 and 1. Only applies if pre_co_req = PRE.
O
order_incentiveDoubleDefines a multiplier on the value of scheduling the activities if the DSE follows the suggested order of the two activities.

Notes: Only applies if pre_co_req = ORDER_ONE_WAY or ORDER_TWO_WAY. If no value is supplied then the order is assumed to be forced.
O
overlap_allowedBooleanSpecifies whether the dependent activity is allowed to start at the same time or after the start of its pre-requisite activity

Notes: The activities are allocated to different resources (same_resource attribute has to be false). This only applies to pre-requisite activities.
O

Examples

<Activity_Group>
    <activity_id1>Test19-A</activity_id1>
    <activity_id2>Test19-B</activity_id2>
    <pre_co_req>PRE</pre_co_req>
</Activity_Group>
<Activity_Group>
    <activity_id1>Test19-B</activity_id1>
    <activity_id2>Test19-C</activity_id2>
    <pre_co_req>PRE</pre_co_req>
    <all_or_nothing>true</all_or_nothing>
    <min_delay>PT1H5M0S</min_delay>
    <same_resource>true</same_resource>
    <max_delay>PT6H0M0S</max_delay>
</Activity_Group>
<Activity_Group>
    <activity_id1>Act-A</activity_id1>
    <activity_id2>Act-B</activity_id2>
    <pre_co_req>COMBINED</pre_co_req>
</Activity_Group>

Entity: Activity_Group_SLA (Input)

Sets the SLA type to use to determine the visit value proportion when the delay between pre-requisite and dependent activities is within the specified start and end delays.

If there are multiple items within a model then these should not overlap.

Attribute NameData TypeDescriptionPKM/O
activity_group_sla_model_idString(32)Specifies the id of the model this belongs to.

Foreign Key: Activity_Group_SLA_Model
PKM
start_delayTime SpanDefines the minimum delay for which this SLA type should be applied.PKM
end_delayTime SpanDefines the maximum delay for which this SLA type should be applied.M
sla_type_idString(32)Specifies the id of the SLA type to apply.

Foreign Key: SLA_Type
M

Entity: Activity_Group_SLA_Model (Input)

Activity group SLA models are used to model how the value of a visit to an activity with a pre-requisite activity is affected by its scheduling in relation to the pre-requisite visit. For example, this could be used to prefer that the dependent activity is carried out within 1 day of the pre-requisite activity, but still allow it to be scheduled with a larger gap if required.

Attribute NameData TypeDescriptionPKM/O
idString(32)A unique id for the model.PKM
descriptionString(2000)Provides a description of this model.O

Entity: Activity_Incentive (Input)

This links an activity to an incentive, allowing visits to the activity to contribute to the incentive.

Attribute NameData TypeDescriptionPKM/O
activity_idString(32)Specifies the id of the activity this relates to.

Foreign Key: Activity
PKM
incentive_idString(32)Specifies the id of the incentive this relates to.

Foreign Key: Incentive
PKM

Entity: Activity_Operation (Input)

Links an operation to a repeatable activity.

Note

This is only intended for use with repeatable activities and cyclic scheduling.

Attribute NameData TypeDescriptionPKM/O
activity_idString(32)The identifier of the (repeatable) activity.

Foreign Key: Activity
PKM
operation_idString(32)The identifier of the operation.

Foreign Key: Operation
PKM
earliest_startDate TimeIf specified, this is the earliest time that the operation can be carried out for this activity.O
last_performedDate TimeIf specified, this is the last time (before the current schedule time) that the operation was performed.O
latest_startDate TimeIf specified, this is the latest time that the operation can be carried out for this activity.O

Entity: Activity_Operation_Usage (Input)

Defines the current usage of the specified class for this activity and operation.

Note

This is only intended for use with repeatable activities and cyclic scheduling.

Attribute NameData TypeDescriptionPKM/O
activity_idString(32)The identifier of the (repeatable) activity.

Foreign Key: Activity_Operation
PKM
operation_idString(32)The identifier of the operation.

Foreign Key: Activity_Operation
PKM
usage_class_idString(32)The identifier for the class of usage.

Foreign Key: Usage_Class
PKM
last_recorded_usageDoubleThe last recorded usage (at the start of the scheduling period).M
last_recorded_usage_datetimeDate TimeThe time of the last recorded usage

Notes: If not specified this is assumed to be the start of the scheduling period (i.e. the current usage).
O

Entity: Activity_Part (Input)

Activity part defines what parts and how much is used when the activity is completed.

Note

For a non-reusable part, when the part is not to be consumed but is still required as a constraint the part_usage should be specified as 0. For reusable parts, the part_usage should always be greater than 0.

Warning

The use of parts significantly increases the complexity of the scheduling problem and as such they should be used with care. If more than 5 parts are required to constrain an individual activity then IFS PSO Product Development must be consulted as to the likely impact. Through testing must be performed to confirm the successful operation and impact on the DSE.

Attribute NameData TypeDescriptionPKM/O
activity_idString(32)Specifies the id of the activity this relates to.

Foreign Key: Activity
PKM
part_idString(32)Specifies the id of the part this relates to.

Foreign Key: Part
PKM
part_usageIntegerDefines the quantity of part needed to complete activity.

Notes: Use value of 0 if the part is required as a constraint but is not to be consumed by the activity.
M(1)
refill_to_capacityBooleanSpecifies whether this activity when visited will refill a resource to capacity.

Notes: Only used when the activity supplies parts - i.e. when the value for part usage is negative.
M(false)
unlimited_supplyBooleanIf set to true then the part_usage value will be ignored, and this activity can supply as many parts as required.

Notes: Only to be used when refill_to_capacity is set to true. Value will be ignored otherwise.
M(false)

Example

<Activity_Part>
    <part_id>TEST30</part_id>
    <activity_id>TEST30</activity_id>
    <part_usage>1</part_usage>
</Activity_Part>

Entity: Activity_Pool (Input)

Activity pools provide a way of grouping activities together. This can be used to set availabilities or resource preferences across the entire pool.

A pool can be scheduled as a block, which means that any activities in the block that are scheduled will be scheduled together, without interruption from any activities from outside the block. This can be across multiple shifts and may include breaks.

A pool may have a parent pool defined. This can assist with the structure for defining pre-requisite links between pools. A pre-requisite link between two parent pools (say, Pool1 and Pool2) would mean that the all of activities belonging to all of the child pools for Pool1 would need to be completed before any activity belonging to any child pool of Pool2 could begin.

Note

Activities may only belong to a single pool that is to be scheduled as a block, or is linked to another pool.

Note

A link may only be defined between two pools if they have the same parent pool (or they both do not have a parent pool). Both pools must also have the same value for schedule_as_block.

Attribute NameData TypeDescriptionPKM/O
idString(32)Specifies the id of the activity pool.PKM
schedule_as_blockBooleanSpecifies whether the activities in this pool should be scheduled as a block.M(false)
descriptionString(2000)Describes the activity pool if required.O
parent_activity_pool_idString(32)The id for this pool's parent pool.

Foreign Key: Activity_Pool
O

Entity: Activity_Pool_Avail_Set (Input)

Links an activity pool to an availability set.

Attribute NameData TypeDescriptionPKM/O
activity_pool_idString(32)The id of the activity pool.

Foreign Key: Activity_Pool
PKM
availability_set_idString(32)The id of the availability set.

Foreign Key: Availability_Set
PKM

Entity: Activity_Pool_Category (Input)

Represents an association between an activity pool and a category.

Attribute NameData TypeDescriptionPKM/O
activity_pool_idString(32)The id of the activity pool to be associated with a category and categorisation.

Foreign Key: Activity_Pool
PKM
categorisation_idString(32)The id of the categorisation to link to the activity pool.

Foreign Key: Category
PKM
category_idString(32)The id of the category to link to the activity pool.

Foreign Key: Category
M

Entity: Activity_Pool_Item (Input)

Defines an activity's inclusion within an activity pool. Activities may belong to more than one pool, but may only belong to one pool that is to be scheduled as a block.

Note

Depot and repeatable activities may not be added to a pool that is to be scheduled as a block or is linked to another pool.

Note

An activity may only be added to a pool that is not a parent pool to any other pools.

Attribute NameData TypeDescriptionPKM/O
activity_idString(32)Specifies the id of the activity to be included in the pool.

Foreign Key: Activity
PKM
activity_pool_idString(32)Specifies the id of the activity pool for the activity to be included in.

Foreign Key: Activity_Pool
PKM

Defines a link between two activity pools to indicate that one pool is a pre-requisite of another - i.e. all of the activities from one pool must be completed before any activities from the dependent pool can begin.

Note

If activity_pool_id is set to Pool1 and link_activity_pool_id is set to Pool2, with link_type PRE, then Pool2 is the pre-requisite for Pool1. If the link_type is set to POST, then Pool1 is the pre-requisite for Pool2.

Note

A link may only be defined between two pools if they have the same parent pool (or they both do not have a parent pool). Both pools must also have the same value for schedule_as_block.

Attribute NameData TypeDescriptionPKM/O
activity_pool_idString(32)Specifies the id for an activity pool being linked to.

Foreign Key: Activity_Pool
PKM
link_activity_pool_idString(32)Specifies the id for the activity pool linking to activity_pool_id.

Foreign Key: Activity_Pool
PKM
link_typeString(4)Defines the nature of the link between the two pools.

Allowed Values: PRE, POST
M(PRE)
require_fully_allocatedBooleanSpecifies whether all activities within the pre-requisite pool must be allocated for the dependent pool to be scheduled.M(false)
minimum_delayTime SpanDefines a minimum delay that must occur between the activities from the pre-requisite pool before the activities in the dependent pool can begin.O

Entity: Activity_Pool_Wrapper (Input)

Wrapper activities are activities that need to be done before and/or after regular activities in a pool.

Note

Even if an activity pool has multiple activities in it, the wrapper activity will apply to the entire pool, not each activity within the pool.

Attribute NameData TypeDescriptionPKM/O
activity_pool_idString(32)Specifies the id activity pool.

Foreign Key: Activity_Pool
PKM
wrapper_activity_idString(32)Specifies the id of the wrapper activity.

Foreign Key: Activity
PKM
link_typeString(4)Specifies whether the wrapper activity should be done before the activity pool activities, after them, or both.

Allowed Values: PRE, POST, BOTH
M
time_contextString(6)Specifies for what period of time the wrapper activity is required to be scheduled within.

Allowed Values: SHIFT, WINDOW
M
delay_cost_phDoubleDefines an additional cost per hour to be applied between wrapper activities and the activity pool activities.

Notes: For wrapper activities before the activity pool, the cost is applied from the end of the wrapper activity and the end of the last relevant activity from the activity pool. For wrapper activites after, the cost is from the start of the first relevant activity to the start of the wrapper activity.
O
is_requiredBooleanIf set to false, then the wrapper activity will not be required for any resource by default.

Notes: If null, this will be assumed true.

Notes: Use this in conjuction with is_required in Resource_Wrapper to create exceptions
O

Entity: Activity_Productive_Time (Input)

This defines periods of productive time for an activity, which are applied against incentives and rules. This is primarily intended for use with automated resource planning.

Attribute NameData TypeDescriptionPKM/O
activity_idString(32)Specifies the id of the activity this relates to.

Foreign Key: Activity
PKM
productivity_category_idString(32)Specifies the category of productive time.

Foreign Key: Productivity_Category
PKM
start_offsetTime SpanDefines the offset from the visit start that this period of productive time begins.PKM
durationTime SpanDefines the duration of the productive time.M

Entity: Activity_Resource_Pool_Set (Input)

Defines which activities are linked together to form a "chain". All activities in the chain must be scheduled to resources from a single Resource Pool, although there may be several alternative Resource Pools in the Resource Pool Set. Some Resource Pools may be preferred to others.

Attribute NameData TypeDescriptionPKM/O
activity_idString(32)Specifies the id of the activity

Foreign Key: Activity
PKM
resource_pool_set_idString(32)Specifies the id of the Resource Pool Set

Foreign Key: Resource_Pool_Set
PKM
chainString(32)Describes which chain this activity belongs to. All activities with the same chain identifier will form a single chain, and they will all be allocated to resources from a single Resource PoolM

Example

<Activity_Resource_Pool_Set>
    <activity_id>process1</activity_id>
    <resource_pool_set_id>ProcessingRoutes</resource_pool_set_id>
    <chain>251</chain>
</Activity_Resource_Pool_Set>

Entity: Activity_Skill (Input)

Specifies a skill that a resource must have in order for that activity to be allocated to the resource. When determining what skills an activity requires, a union of the skills between activity skill and activity type skill will be made.

Note

Attribute share_with_corequisite if set to TRUE would accept the skill against the activity or against any activity in the same Activity_Group where Activity_Group.pre-co-req = ‘CO’. This enables co-requisites to be scheduled where any of the resources assigned to the co-requisite activity group can have the required skills. For example there could be a co-requisite group of five activities where the skill must be in at least one of just three of them for example.

e.g. activity groups could be:

1 & 2
1 & 3
2 & 4
2 & 5

Activity_Skill. share_with_corequisite would be against activity 1 and set to TRUE. In this case the skill could be on activity 1, 2 or 3, but not 4 and 5, as they are not directly linked to activity 1.

Attribute NameData TypeDescriptionPKM/O
activity_idString(32)Specifies the id of the activity this relates to.

Foreign Key: Activity
PKM
skill_idString(32)Specifies the id of the skill this relates to.

Foreign Key: Skill
PKM
share_with_corequisitesBooleanDefines whether the fulfilment of this skill constraint by allocation of a resource with the required skills is shared with other activities within the co-req Activity_Group where the allocated resource may not have those skills.

Notes: Only has an effect if the activity belongs to an activity group where Activity_Group.pre_co_req = 'CO'.
O

Example

<Activity_Skill>
    <activity_id>TEST33</activity_id>
    <skill_id>TEST33</skill_id>
</Activity_Skill>
<Activity_Skill>
    <activity_id>TEST33</activity_id>
    <skill_id>TEST33</skill_id>
    <share_with_corequisite>true</share_with_corequisite>
</Activity_Skill>

Entity: Activity_SLA (Input)

Assigns an SLA of a given type to an activity. An activity of class CALL or BREAK that falls within the scheduling window must have an Activity_SLA for it to be considered by the scheduler. Unless stated otherwise, the system will attempt to schedule the start of the activity within the defined SLA period.

It is possible to define up to 2 SLA models for an activity - 1 start based and 1 end based. At least 1 of these models is required for activities of type CALL or BREAK (unless the activity is fixed to a time). By default SLAs will default to start_based. Within each model the times must not overlap, but the models will be applied independently, so if both models are used for an activity it will be expected that the times in each model will overlap.

Example:

2 hour response deadline:
Activty_SLA from 09:00 to 11:00, SLA_Type IN, start_based = true
Activity_SLA from 11:00 to 17:00, SLA_Type OUT, start_based = true

4 hour fix deadline:
Activty_SLA from 09:00 to 13:00, SLA_Type IN, start_based = false
Activity_SLA from 13:00 to 17:00, SLA_Type OUT, start_based = false

2 hour response and 4 hour fix:
Activty_SLA from 09:00 to 11:00, SLA_Type IN1, start_based = true
Activity_SLA from 11:00 to 17:00, SLA_Type OUT1, start_based = true
Activty_SLA from 09:00 to 13:00, SLA_Type IN2, start_based = false
Activity_SLA from 13:00 to 17:00, SLA_Type OUT2, start_based = false

The DSE would calculate the value of an activity by applying ageing factors and proportions from both models. For simplicity we should advise that if both models are being used for an activity then one of the two is kept simple - e.g. the end based SLA is flat with a drop in proportion after the deadline. If only one of the two models is used then the structure is essentially as it is now anyway.

Note

An Activity may have more than one Activity_SLA. For example there may be a need to have primary, secondary and tertiary SLAs defined to reflect the operational objectives should the primary or secondary SLAs be missed. The periods of time for each SLA must not overlap. The SLAs are uniquely identified for each Activity by Activity_SLA.priority.

Note

Activities of class PRIVATE do not normally need an SLA since it is expected to start at a known time specified on the Activity_Status entity.

Note

If the activity is scheduled by the DSE the start date and time of the activity will always be within one of the Activities defined SLAs. By default the system will schedule the activity so that at least the start date is within the SLA but the end date may be beyond the end of the SLA. A system parameter can be set so that the end date and time of the activity must also fall within the SLA.

Attribute NameData TypeDescriptionPKM/O
activity_idString(32)Specifies the id of the activity this relates to.

Foreign Key: Activity
PKM
priorityIntegerDefines the uniqueness of the SLA.

Notes: Required to provide a unique key for each SLA.
PKM(1)
sla_type_idString(32)Specifies the id of the SLA type this relates to.

Foreign Key: SLA_Type
PKM
start_basedBooleanDefines whether the start of the activity must be scheduled within the defined SLA period.

Notes: Set to false to be end based SLA.
PKM(true)
datetime_startDate TimeDefines the date and time at which the SLA begins for this activity.M
datetime_endDate TimeDefines the date time at which the SLA ends for this activity. Must be after Time Start.O

Example

<Activity_SLA>
    <sla_type_id>SLA_TYPE_1</sla_type_id>
    <activity_id>Test7</activity_id>
    <priority>1</priority>
    <datetime_start>2006-01-03T12:01:00.0000000+01:00</datetime_start>
    <datetime_end>2006-01-04T13:30:00.0000000+01:00</datetime_end>
</Activity_SLA>

Entity: Activity_Status (Input)

This is used to assign a particular activity status to an activity after its initial load. As an activity goes through its life cycle the status needs to be updated. An Activity must always have at least one Activity Status. When an Activity is created and it is unallocated then the Activity Status should be created as unallocated. If a resource is allocated then the appropriate status is used and resource id applied. Should activity duration change then the Activity Status will be updated.

Activity Moving Rules

The DSE will enforce the following rules depending on status of an Activity.

  1. Completed (status 70), Incomplete (80) and Visit Complete (68) activities will never be moved or extended.
  2. Pending Completion (status 65) activities are treated by the DSE in the same way as On Site activities. Note however that the schedule dispatch service will treat pending completion activities in the same way as completed activities.
  3. On Site (status 60) activities will never be moved. The travel for an On Site activity is never changed. If the activity is taking longer than the anticipated duration an ‘ActivityDurationExceeded’ exception will be raised.
  4. The logic for activities at status waiting at location (55) is exactly the same as for travelling activities.
  5. The start travel time and end travel time for a Travelling activity (status 50) is never changed. The activity start time will be the later of (its current value, the dataset time). The duration of the activity is never changed: hence the activity end time must change if the activity start time changes. If the travel is taking longer than the expected duration, a TravelDurationExceeded exception will be raised.
  6. Any activities of status less than Travelling which are also Activity Status fixed – i.e. fixed to resource and date_time_fixed will be placed at their fixed times, regardless of whether this is in the past or overlapping other activities. The DSE will never change a fixed time or unfix an activity. An activity of status at least committed is treated as resource fixed regardless of the fixed flag.
  7. Once all activities covered by points 1-5 have been included in the schedule, the DSE will schedule the remaining committed activities in a set order:
  8. Activities at status Accepted (40), ordered first by commit_sort_value (lowest first) and then by date_time_status (earliest first)
  9. Activities at status Downloaded (35), ordered first by commit_sort_value (lowest first) and then by date_time_status (earliest first)
  10. Activities at status Sent (32), ordered first by commit_sort_value (lowest first) and then by date_time_status (earliest first)
  11. Activities at status Committed (30), ordered first by commit_sort_value (lowest first) and then by date_time_status(earliest first)
  12. Other than for ordering purposes, the DSE will treat all non-fixed activities of status committed through to accepted in the same manner.

Note

By default, if multiple consecutive statuses of travelling (resp. on site) are sent, then the DSE will use the first update (ordered by date_time_stamp), and take the date_time_status from this update as the travel start time (resp. on site time). This behaviour can be switched to always using the most recent update, via the parameter 'UseLatestUpdateForStatusTime'.

The behaviour of committed activities can be adjusted through the use of the parameter 'CommittedActivitiesConstraintsOption'. The default setting is 1, which means that the DSE will attempt to obey all activity related constraints – i.e. time constraints such as availabilities, and group constraints such as co-requisite constraints. Alternatively, this parameter can be set to 0, which means that no activity related constraints will be observed on committed activities. In either case, all resource time constraints are adhered to where possible.

The behaviour can also be adjusted through the parameter 'ScheduleCommittedActivitiesInActiveShift'. The default for this is true, which means that committed activities will only be scheduled into the ‘active’ shift. The active shift is defined to be the shift for the resource which overlaps the current timeline. If no such shift exists it is the earliest shift which starts in the future. If the parameter is set to false, the DSE will consider all current and future shifts for the resource when scheduling committed activities. Note that once a resource has logged off the shift is treated as being in the past. In either case, when a committed activity cannot be scheduled validly, it will be scheduled in the active shift.

The DSE will then take each activity committed to the resource in the order defined in 6, and look for valid slots to schedule these activities. The earliest place it will consider must be :-

  • After the current timeline
  • After all previously processed committed activities
  • A slot is considered valid if the travel from the previous location, the activity itself, and the travel to the next location can all be added without overlapping other activities already processed, and without going beyond the end of the shift time. In addition any other constraints applied to the activity must be valid, if these constraints are being enforced.

If no valid slot can be found, the activity will simply be appended to the route of the final shift being considered (either the active shift or the final shift for this resource).

All other activities not yet processed will be submitted to the Optimiser for scheduling. Scheduling periods will be submitted to the Optimiser for any periods of time that are (a) after the dataset time, and (b) longer than the minimum length (10 minutes), and (c) are before the end of the scheduling period, and (d) are after the scheduled time of all non-fixed committed activities. Activities that are fixed but do not have a location will be sent to the optimiser as MustBeScheduled activities, whenever the optimiser needs to know about them. This is effectively whenever a location for the activity cannot be predetermined.

Application of the Activity Moving Rules

Currently the activity moving rules are applied whenever the DSE receives an update. Since this invariably updates the dataset time, this shouldn't need to be changed. However, if there is ever a need for something more sophisticated, the rules below were the original rules set out.

When the dataset time changes, all resources will have the Activity Moving Rules applied to their entire schedules.

When a Resource, Shift, or Location used by a Resource changes (or other Resource-based changes), that resource will have the Activity Moving Rules applied to their entire schedule.

When an Activity, Activity Status or activity constraints change (or other activity-based changes), the resource which is currently allocated to that activity will have the Activity Moving Rules applied to their schedules. Note: activities which were previously unfixed and of status less than AsNext, and which remain so, need not cause the Activity Moving Rules to be re-applied.

Activities will not be uncommitted when a resource logs off a shift. The DSE will never change the activity status of an activity except to change activities of status 0 (unallocated) to status 10 (allocated) and vice versa.

Note

Status for Private Activities is assumed to be 30 (Committed) when they are created.

Note

Activities of class 'PRIVATE' i.e. private appointments must provide the attribute date_time_fixed to specify the start of the private activity. Otherwise the activity will be rejected.

Note

Activity_Status.date_time_fixed must be set for activities of type 'PRIVATE', it is optional on other activity classes. It is generally not recommended to set this for other classes of activities since it gives the DSE no leeway in building a schedule. Such a hard time constraint may lead to less optimal schedules. An alternative approach is to provide a narrow SLA for the activity of say 1 hour so that DSE has scope to move the activity. See further notes below for date_time_fixed.

The DSE will force the activity into the route of the resource if the 'Activity Status: Date Time Fixed' is used in conjunction with 'Activity Status: Fixed'.

Note

Status of -1 indicates that the Activity will not be considered by the DSE for allocation. Activities with status -1 will be reported as unallocated.

Warning

The use of date_time_fixed will cause all other time constraints to be ignored. This includes SLAs . Use with great care it can seriously impact the level of optimisation possible.

Warning

If a resource is fixed to an Activity i.e. only that resource can do the activity, it will override skills and most other resource constraints. It will not override the max travel, and it does not guarantee that the activity is scheduled. Fixing the time will override any availability or SLA constraints. Again, this does not ensure that the activity is scheduled. Fixing both the resource and time will ensure the activity is scheduled.

Note

When Activities are fixed to a resource by the external application the Resources.max_travel or Resource_Type.max_travel constraint may be broken. The scheduler will allow other activities to be scheduled, provided the max_travel rule is obeyed on the travel to these activities, but does not apply it on the travel to the fixed activity / travel home.

Note

Parameter 'SortValuePrecedenceMaximumStatus' can be set to any committed status - 30, 32, 35 or 40. Any activities committed to a resource (and not date_time_fixed) which are between the statuses of committed and the value of this parameter will be ordered by commit_sort_value first, then by date_time_status and then by status_id. Any activities at a status above the value of this parameter will be ordered using the existing ordering - status_id, then commit_sort_value, then date_time_status. The parameter defaults to 30 (Committed) which implies the existing behaviour - the ordering of committed activities is by status id first and then by commit_sort_value and then by date_time_status.

Note

Commit Sort Value. The lowest value committed activity will appear first in the list of activities. If the values were the same, or null for several activities then the date_time_status would be used to determine the order.

When manual status changes are made via the scheduling workbench this will automatically populate the correct commit sort value to ensure the activity is scheduled in the required order in the route. Any dispatch suggestions made by the scheduling dispatch service will also specify the correct commit sort value to use.

If committing directly from an external application, it is possible to request that the Input Manager populate the commit sort value automatically. To use this functionality, the attribute 'commit_sort_date_time' must be populated on the activity status record. The input manager will then fill in the correct commit sort value for the resource specified on the activity status row, based on the activity being expected to start at the time specified on the commit_sort_date_time attribute.

For example, suppose a resource already has committed activities starting at 9am and 10am. An activity status row is then sent to the system to commit another activity to the same resource, with the commit_sort_date_time set to 9:30am. The input manager would then populate the correct commit sort value so that this activity would appear between the two previously committed activities.

Note

For a split activity, a status of -1 (do not schedule) will be ignored if sent to a follow-on visit.

Note

The expected_arrival_time attribute is primarily for use with travelling status activities, where it can be used to override the expected time for the travel to the activity to end. The activity would also be expected to start at this time unless other restrictions (such as an availability constraint) apply. While the attribute can also be used with committed status activities, it is recommended to use other options such as earliest_start_datetime or date_time_fixed here instead.

Attribute NameData TypeDescriptionPKM/O
activity_idString(32)Specifies the id of the activity this relates to.

Foreign Key: Activity
PKM
date_time_statusDate TimeDefines the date and time the status took effect in the real world.PKM
status_idIntegerDescribes the current status of activity.

Foreign Key: Status_Type

Notes: See entity Status_Type.
PKM(0)
visit_idIntegerDefines the visit the status change relates too.PKM(1)
date_time_stampDate TimeDefines the date and time at which the record was createdM
fixedBooleanDefines whether the resource is to be fixed to this activity

Notes: If true, resource_id must also be provided and cannot be changed by the DSE. The DSE will only consider scheduling the activity into the route of this resource. However, there is no guarantee that the activity will actually be scheduled to the resource – the activity can still be unallocated.
M(false)
commit_sort_date_timeDate TimeThe time at which the activity is intended to start.

Notes: This is used by the input manager to automatically populate the commit sort value.
O
commit_sort_valueDoubleDefines the committed status order of activities.

Notes: The lowest value committed activity would appear first.
O
date_time_earliestDate TimeDefines the earliest time an activity can be allocated.

Notes: Applies only to calls with a status less than or equal to 40 - i.e. from status 0 (Unallocated) to status 40 (Accepted). Once a resource starts travelling to an activity these no longer have an effect and the resource is expected (by default) to start working on the activity at the time they are expected to arrive
O
date_time_fixedDate TimeSpecifies the date and time the activity is fixed to start at.

Notes: This must be provided if the Activity has as an activity_class_id = ‘PRIVATE’
O
durationTime SpanDefines the current duration of the Activity

Notes: Duration can be optionally updated on the creation of a new status. If not provided the previous value will be kept. If no duration is provided on any status record then the duration from the Activity Type will be used.
O
duration_overrideTime SpanIf specified, this duration will be used directly as the expected duration of the activity, ignoring any other settings that affect the duration (auto duration, resource proficiency etc.)

Notes: The value will be taken from the latest activity status update row - if this is null then the duration will be calculated as normal. For repeatable or depot activities this is the duration of an individual visit, and the value will be taken from the latest status row for that visit.
O
expected_arrival_timeDate TimeSets the expected arrival time for a travelling activity.O
highlightString(100)Defines whether the activity should be highlighted in the exception window on the Scheduling Workbench. Text used in this field will be displayed.O
memoString(2000)Provides general information about the activity and this status to be displayed.

Notes: Large amounts of data held here can impact performance of the software and should be kept to a minimum.
O
reasonString(200)Provides details about manual allocation.O
reason_valueString(40)Specifies the Entry.value used as the reason.O
resource_idString(32)Defines the resource allocated to the activity for this status.

Notes: Must be provided if status is greater than 0.
O
sourceIntegerProvides details about where the change to the status originated from.

Notes: The Scheduling Workbench will populate this with 1. It is advised that if a commit is made externally this is populated with 99, though this is not required.
O

Examples

<Activity_Status>
    <activity_id>Test7</activity_id>
    <duration>PT1H00M</duration>
    <date_time_stamp>2006-01-03T11:45:00.0000000-00:00</date_time_stamp>
    <date_time_status>2006-01-03T11:45:00.0000000-00:00</date_time_status>
</Activity_Status>
<Activity_Status>
    <activity_id>Test8</activity_id>
    <status_id>0</status_id>
    <visit_id>1</visit_id>
    <date_time_stamp>2006-01-03T11:45:00.0000000-00:00</date_time_stamp>
    <date_time_status>2006-01-03T11:45:00.0000000-00:00</date_time_status>
    <duration>PT0H15M5S</duration>
    <fixed>false</fixed>
    <date_time_fixed>2006-01-03T12:45:00.0000000-00:00</date_time_fixed>
    <memo>test 8 activity status</memo>
    <highlight>test 8 highlight</highlight>
    <reason>test 8 reason</reason>
    <rank>1</rank>
</Activity_Status>

Entity: Activity_Type (Input)

Describes a type of activity. Many different types of activities may be scheduled and from an operational process perspective it is useful to know what type the different activities are. At least 1 activity type must be loaded into the DSE. The default will be a type of 'Default'.

Note

When an Activity Type is updated the new value for duration will be used on all Activities linked to that type which do not have a duration specified. Altering Activity Type during scheduling can adversely impact the schedules and should be avoided. Activity Types should normally be sent as part of an initial load to avoid this.

Note

Many attributes can be set on Activity_Type and also on Activity. If this is the case then the attribute on the Activity if specified will override the attribute on the Activity_Type, unless otherwise stated.

Attribute NameData TypeDescriptionPKM/O
idString(32)Defines a unique id for the activity type.PKM
base_valueDoubleDefines the basic marginal value of scheduling this activity compared to not scheduling it.

Notes: May be used where Mechanism Type = ‘POWER_BASED’ for the SLA_Type. Will be used when not defined on the Activity. With a base value of 0 the activity will not be scheduled.
M(1000)
cost_of_splitDoubleDefines the default cost incurred each time an activity of this type is split.M(0)
interruptBooleanDefines whether activities of this type are allowed to be used to interrupt a splittable activity.M(false)
min_splitTime SpanDefines the minimum on site duration for any visit to a split activity of this type.M(PT1H)
on_location_duration_factorDoubleA factor to be applied to the duration of all tasks scheduled for the same visit at the same location.

Notes: Values between 0.001 and 1 (inclusive).
M(1)
priorityIntegerDefines the priority of activities of this type. The greater the number the greater the priority.

Notes: This is used in the appointment booking process when displacing activities. For breaks, when breaks are sourced from a rota in the ARP, the priority used is the value priority on RAM_Activity_Type. For the parameter 'ARPBreakPriority' to be used for breaks instead, set the parameter 'ARPBreakPriority' to any value other than the default value, which is -1.
M(1)
remote_fulfillmentBooleanIf true, this indicates that a resource can carry out activities of this type without visiting the activity location.M(false)
split_allowedBooleanDefines whether activities of this type are allowed to be split.M(false)
auto_duration_enabledBooleanDefines whether an auto_duration should be used for activities of this type.

Notes: Changing the value of auto_duration_enabled will only apply to activities that are updated after that point.
O
calendar_idString(32)Defines the id of the calendar to use when applying SLA times to activities of this type.

Foreign Key: Calendar
O
colourString(9)Used for display purposes.

Notes: Format: #RRGGBB
O
contract_idString(32)Specifies the id of the contract that this activity type relates to.

Foreign Key: Contract
O
customerString(100)Specifies the customer that this activity type relates to.

Foreign Key: Customer

Notes: Note that 'customer' does not follow the standard naming format of columns that reference parent tables ('table_name'_id). This does not signify any differences - it is for technical reasons that it is different.
O
descriptionString(2000)Provides a description for this activity type.O
display_context_idString(32)Provides the context to determine which list should be used when viewing in the Scheduling Workbench.

Notes: This should match the id of a Display_Context row defined in the system data
O
do_in_locality_incentiveDoubleDefines how activities at the same locality should be scheduled.O
do_on_location_incentiveDoubleSpecifies how activities at the same location should be scheduled.

Notes: See notes for the entity 'Activity'.
O
durationTime SpanDefines the standard duration of an activity of this type.

Notes: When duration is not provided on the Activity Status then this duration must be provided on the Activity Type. If this duration is amended on the Activity Type then the new duration will be applied to all activities of that type.
O
icon_idString(32)The id of an icon to use for this activity type.

Foreign Key: Icon
O
ignore_days_oldIntegerDo not pass activities to the scheduler where the number of days exceeds Activity. date_time_open date.

Notes: If null all activities included. This is used to remove activities from the plan.
O
interrupt_multiplierDoubleDefines a multiplier that is applied to the cost_of_split of a splittable activity when interrupted by an activity of this type.O
interrupt_priorityIntegerSpecifies the priority of an activity of this type when considering whether to use it to interrupt a splittable activity. This is compared to the split_minimum_priority on the splittable activity.O
maximum_displaceable_priorityIntegerWhen appointment booking for activities of this type, the engine will attempt to displace any other activities of this priority or less.O
reactiveBooleanUsed in conjunction with the Schedule Distribution Service to indicate if the activity is reactive.O
separation_group_idString(32)Specifies the id of the separation group activities of this type belong to.

Foreign Key: Separation_Group
O
service_levelString(100)Used for information and reporting only. Has no impact on scheduling.O
sla_template_idString(32)Defines which SLA Template should be used.

Foreign Key: SLA_Template
O
split_minimum_priorityIntegerDefines the minimum split priority required for an activity of this type to be split into a shift, and the minimum interrupt priority required for another activity to be able to interrupt an activity of this type.O
split_model_idString(32)Defines which split model to use for split settings.

Foreign Key: Split_Model

Notes: If specified, all split settings will be taken from the split model (even if set to null).
O
time_zoneString(32)Specifies the id of the time zone related to this activity type.O

Default Entries

IDDescriptionDurationIgnore Days Old
DefaultDefault activity type.PT1H0M0S30

Example

<Activity_Type>
    <id>TEST11</id>
    <description>Activity Type Test 11</description>
    <duration>PT0H30M</duration>
    <ignore_days_old>1000</ignore_days_old>
</Activity_Type>

Entity: Activity_Type_App_Template (Input)

Used to associate an Activity_Type to an Appointment_Template, for use in the Appointment Booking screen on the Scheduling Workbench.

Attribute NameData TypeDescriptionPKM/O
activity_type_idString(32)Specifies the id of the activity type this relates to.

Foreign Key: Activity_Type
PKM
appointment_template_idString(32)Specifies the id of the appointment template this relates to.

Foreign Key: Appointment_Template
PKM
default_templateBooleanDefines whether this template should be used by default for activities of this type.M(false)

Entity: Activity_Type_Avail_Set (Input)

Links an activity type to an availability set.

Attribute NameData TypeDescriptionPKM/O
activity_type_idString(32)The id of the activity type.

Foreign Key: Activity_Type
PKM
availability_set_idString(32)The id of the availability set.

Foreign Key: Availability_Set
PKM

Entity: Activity_Type_Category (Input)

Represents the association between an activity type and a category.

Attribute NameData TypeDescriptionPKM/O
activity_type_idString(32)The id of the activity type to be associated with a category and categorisation.

Foreign Key: Activity_Type
PKM
categorisation_idString(32)The id of the categorisation to link to the activity type.

Foreign Key: Category
PKM
category_idString(32)The id of the category to link to the activity type.

Foreign Key: Category
M

Entity: Activity_Type_Custom_Metric (Input)

This defines the value activities of an activity type have against a custom metric. This value is used for the activity when validating rules of type 'SHIFT_CUSTOM_METRIC'. The value can be overridden for individual activities via the Custom_Metric_Activity table.

Attribute NameData TypeDescriptionPKM/O
activity_type_idString(32)The id for the activity type the metric is being specified for

Foreign Key: Activity_Type
PKM
custom_metric_idString(32)The id of the custom metric being used

Foreign Key: Custom_Metric
PKM
valueDoubleThe value to use for activities of the activity typeM

Entity: Activity_Type_Custom_URL (Input)

Defines the custom url to be used for a particular activity type. Custom url parameters can be specified for the activity type, the use of which is defined on the URL_Parameter record for the specific custom url id (see example below).

<Activity_Type_Custom_URL>
    <activity_type_id>SERVICE</activity_type_id>
    <custom_url_id>urlActivityTypes</custom_url_id>
    <custom_parameter_value1>SERVICE</custom_parameter_value1>
  </Activity_Type_Custom_URL>
  <Custom_URL>
    <id>urlActivityTypes</id>
    <name>Prepare work order</name>
    <custom_action>ACTIVITY_DETAIL_FORM</custom_action>
  </Custom_URL>
  <URL_String>
    <custom_url_id>urlActivityTypes</custom_url_id>
    <sequence>1</sequence>
    <string_value>https://example.com/</string_value>
  </URL_String>
  <URL_Parameter>
    <custom_url_id>urlActivityTypes</custom_url_id>
    <sequence>2</sequence>
    <custom_parameter>1</custom_parameter>
  </URL_Parameter>
Attribute NameData TypeDescriptionPKM/O
activity_type_idString(32)Defines the activity type linked to the specified custom url.

Foreign Key: Activity_Type
PKM
custom_url_idString(32)Defines the custom url linked to the specified activity type.

Foreign Key: Custom_URL
PKM
custom_parameter_value1String(2000)Defines the first custom url parameter value to be used in the custom url for this activity type. The sequence in the url string is defined on URL_Parameter. See example code above.O
custom_parameter_value2String(2000)Defines the second custom url parameter value to be used in the custom url for this activity type. The sequence in the url string is defined on URL_Parameter. See example code above.O
custom_parameter_value3String(2000)Defines the third custom url parameter value to be used in the custom url for this activity type. The sequence in the url string is defined on URL_Parameter. See example code above.O
custom_parameter_value4String(2000)Defines the fourth custom url parameter value to be used in the custom url for this activity type. The sequence in the url string is defined on URL_Parameter. See example code above.O

Entity: Activity_Type_Part (Input)

Records the part(s) requirement for an activity type.

Warning

The use of parts significantly increases the complexity of the scheduling problem and as such they should be used with care. If more than 5 parts are required to constrain an individual activity then IFS PSO Product Development must be consulted as to the likely impact. Through testing must be performed to confirm the successful operation and impact on the DSE.

Attribute NameData TypeDescriptionPKM/O
activity_type_idString(32)Specifies the id of the activity type this relates to.

Foreign Key: Activity_Type
PKM
part_idString(32)Specifies the id of the part this relates to.

Foreign Key: Part
PKM
part_usageIntegerSpecifies the quantity of part needed for an activity type.

Notes: Use value of 0 if the part is required as a constraint but is not to be consumed by the activity.
M(1)
refill_to_capacityBooleanSpecifies whether this activity when visited will refill a resource to capacity.

Notes: Only used when the activity supplies parts - i.e. when the value for part usage is negative.
M(false)
unlimited_supplyBooleanIf set to true then the part_usage value will be ignored, and this activity can supply as many parts as required.

Notes: Only to be used when refill_to_capacity is set to true. Value will be ignored otherwise.
M(false)

Example

<Activity_Type_Part>
    <part_id>part1</part_id>
    <activity_type_id>activityType1</activity_type_id>
</Activity_Type_Part>

Entity: Activity_Type_Skill (Input)

Records a skill needed for an activity of this type. When determining what skills an activity requires, a union of the skills between activity skill and activity type skill will be made.

Note

Attribute share_with_corequisite if set to TRUE would accept the skill against the activity or against any activity in the same Activity_Group where Activity_Group.pre-co-req = ‘CO’. This enables co-requisites to be scheduled where any of the resources assigned to the co-requisite activity group can have the required skills. For example there could be a co-requisite group of five activities where the skill must be in at least one of just three of them for example.

e.g. activity groups could be:

1 & 2
1 & 3
2 & 4
2 & 5

Activity_Skill. share_with_corequisite would be against activity 1 and set to TRUE. In this case the skill could be on activity 1, 2 or 3, but not 4 and 5, as they are not directly linked to activity 1.

Attribute NameData TypeDescriptionPKM/O
activity_type_idString(32)Specifies the id of the activity type this relates to.

Foreign Key: Activity_Type
PKM
skill_idString(32)Specifies the id of the skill this relates to.

Foreign Key: Skill
PKM
share_with_corequisitesBooleanDefines whether the fulfilment of this skill constraint by allocation of a resource with the required skills is shared with other activities of this type with in the co-req Activity_Group where the allocated resource may not have those skills.

Notes: Only has an effect if the activity of this type belongs to an activity group where Activity_Group.pre_co_req = 'CO'.
O

Example

<Activity_Type_Skill>
    <skill_id>Test18</skill_id>
    <activity_type_id>Test18</activity_type_id>
</Activity_Type_Skill>

Entity: Activity_Usage_Period (Input)

Defines the expected usage against this activity of the specified class and between the specified dates.

Note

This is only intended for use with repeatable activities and cyclic scheduling.

Attribute NameData TypeDescriptionPKM/O
activity_idString(32)The identifier of the (repeatable) activity.

Foreign Key: Activity
PKM
start_dateDate TimeThe date from which this usage level applies.PKM
usage_class_idString(32)The identifier for the class of usage.

Foreign Key: Usage_Class
PKM
end_dateDate TimeThe date until which this usage level applies.M
usage_per_dayDoubleThe usage per day during this period.M

Entity: Additional_Attribute (Input)

This is used to hold additional attributes that are not used in the scheduling but need to be displayed within the scheduling software to provide additional end user information. Additional attributes can be added for either activities, resources or locations. Additional_Attribute should be used in preference to Additional_Attributes since this gives the external system a higher degree of control over the additional attributes. This attribute should be used moderately.

Warning

The use of additional attributes should be strictly limited. The loading and transfer of this data is additional overhead placed on the scheduling system and excessive use may have performance implications.

We advise that the use of additional attributes is kept to a maximum of 4 additional attributes per activity, and 10 per resource. Any performance issues resulting from these limits being exceeded will not be treated as software related issues.

Attribute NameData TypeDescriptionPKM/O
idString(32)Defines a unique id for the attribute.

Notes: This must be provided by the external system.
PKM
data_typeString(10)Specifies the data type to be used for sorting and filtering.

Allowed Values: BOOLEAN, DATETIME, DOMAIN, DOUBLE, INTEGER, STRING, TIME, TIMESPAN, URL
M
labelString(100)Defines a label descriptor to be shown next to value.M
sequenceIntegerDefines the sequence in which the labels and values should appear on the screen or be processed.M
activity_idString(32)Specifies the id of the activity this relates to.

Foreign Key: Activity

Notes: Only one of activity id, resource id and location id must be supplied.
O
domain_type_idString(32)Defines the id of the domain of values to be used for validating input into this additional attribute.O
label_valueString(2000)Specifies the value of the attribute.

Notes: For non-string data types, the label_value should be in standard xml format for the type of data. For example, BOOLEAN values should be true/false. DOMAIN values will be treated the same as STRING values. TIME and TIMESPAN values will be treated equally.
O
location_idString(32)Specifies the id of the location this relates to.

Foreign Key: Location

Notes: Only one of activity id, resource id and location id must be supplied.
O
resource_idString(32)Specifies the id of the resource this relates to.

Foreign Key: Resources

Notes: One of and only one of activity id, resource id and location id must be supplied.
O

Example

<Additional_Attribute>
    <id>1234</id>
    <resource_id>TEST35-D</resource_id>
    <label>MPAN</label>
    <sequence>1</sequence>
    <label_value>G6765Y</label_value>
    <data_type>STRING</data_type>
</Additional_Attribute>
<Additional_Attribute>
    <id>12345</id>
    <label>Contact</label>
    <label_value>http://www.ifsworld.com</label_value>
    <activity_id>1</activity_id>
    <resource_id />
    <sequence>0</sequence>
    <location_id />
    <data_type>URL</data_type>
</Additional_Attribute>

Entity: Additional_Attributes (Input)

This is now obsolete, and the Additional_Attribute table should be used instead.

Attribute NameData TypeDescriptionPKM/O
activity_idString(32)Specifies the id of the activity this relates to.

Foreign Key: Activity

Notes: One of and only one of activity id, resource id and location id must be supplied.
PKM
labelString(30)Defines a label descriptor to be shown next to value.PKM
location_idString(32)Specifies the id of the location this relates to.

Foreign Key: Location

Notes: Only one of activity id, resource id and location id must be supplied.
PKM
resource_idString(32)Specifies the id of the resource this relates to.

Foreign Key: Resources

Notes: One of and only one of activity id, resource id and location id must be supplied.
PKM
data_typeString(10)Specifies the data type to be used for sorting and filtering.

Allowed Values: BOOLEAN, INTEGER, DOUBLE, STRING, URL
M(string)
sequenceIntegerDefines the sequence in which the labels and values should appear on the screen or be processed.M(0)
domain_type_idString(32)Defines the id of the domain of values to be used for validating input into this additional attribute.O
label_valueString(2000)Specifies the value of the attribute.O

Example

<Additional_Attributes>
    <resource_id>TEST35-D</resource_id>
    <label>MPAN</label>
    <sequence>1</sequence>
    <label_value>G6765Y</label_value>
    <data_type>STRING</data_type>
</Additional_Attributes> 
<Additional_Attributes>
    <label>Contact</label>
    <label_value>http://www.ifsworld.com</label_value>
    <activity_id>1</activity_id>
    <resource_id />
    <sequence>0</sequence>
    <location_id />
    <data_type>URL</data_type>
</Additional_Attributes>

Entity: Aggregate_Member (Output)

This records which activities have been grouped to form a single aggregated activity.

Attribute NameData TypeDescriptionPKM/O
activity_idString(32)Defines the id of the original input activity.PKM
aggregated_activity_idString(32)Defines the id of the aggregated activity.

Foreign Key: Aggregated_Activity
PKM
plan_idInt64Defines the plan id.O

Entity: Aggregated_Activity (Output)

Aggregated activities are created by the Schedule Distribution Service when the feeder mode aggregation mechanism is activated. See the Architecture and Sizing guide for details of this functionality. The aggregated activities are returned in the plan output. Allocation rows may refer to aggregated activities (via the activity_id), and if so details of the aggregated activity are also recorded. The Aggregated_Activity record contains basic details of the aggregated activity, and the Aggregate_Member record details which individual activities make up the aggregated activity.

Attribute NameData TypeDescriptionPKM/O
idString(32)Defines a unique id.PKM
activity_type_idString(32)Defines the id of the activity type which all activities belong to.O
durationTime SpanDefines the duration of the aggregated activity.O
latitudeDoubleSpecifies the latitude of the aggregated activity location.O
longitudeDoubleSpecifies the longitude of the aggregated activity location.O
plan_idInt64Defines the plan id

Foreign Key: Plan
O
priorityIntegerDefines the priority of the aggregated activity.O

Entity: Allocation (Output)

Allocation records are returned to the EA each time a schedule is generated by the Dynamic Scheduling Engine. It provides information about the allocation of a resource undertaking an activity at a given time.

Note

An allocation will be returned for each visit made in response to an activity. The field Visit ID is used to identify each visit within the plan.

Warning

Commit Sort Value. The lowest value committed activity will appear first in the list of activities. If the values were the same, or null for several activities then the date_time_status would be used to determine the order.

Example

<Allocation>
    <activity_id>TEST35-B</activity_id>
    <visit_id>-1</visit_id>
    <activity_start>0001-01-02T00:00:00+00:00</activity_start>
    <activity_end>0001-01-02T00:20:00+00:00</activity_end>
    <visit_status>0</visit_status>
    <plan_id>1347</plan_id>
    <rank>-1</rank>
</Allocation>
<Allocation>
    <activity_id>TEST27-B</activity_id>
    <resource_id>Test25max</resource_id>
    <visit_id>1</visit_id>
    <activity_start>2006-01-03T09:59:00+00:00</activity_start>
    <activity_end>2006-01-03T10:14:00+00:00</activity_end>
    <visit_status>10</visit_status>
    <plan_id>1347</plan_id>
    <duration>PT15M</duration>
    <shift_id>Test25max_03/01/2006 09:00</shift_id>
    <rank>1</rank>
</Allocation>
Attribute NameData TypeDescriptionPKM/O
activity_idString(32)Defines the id of the activity this relates to.PKM
visit_idIntegerDefines the id of the visit this relates to.

Notes: When an activity duration spans several shifts then each visit is identified by incrementing the visit id. Value of -1 when not allocated.
PKM(1)
plan_idInt64Specifies the id of the plan from the DSE to which the allocation belongs. This enables plans to be stored by an EA over a period of time.

Foreign Key: Plan

Notes: Each schedule plan is given a unique number by which it can be identified.
M
rankIntegerSpecifies the position of this visit in the plan (e.g. 7th visit).

Notes: Value of -1 when not allocated. Starts from 1.
M
visit_statusIntegerDefines the status of the visit.

Notes: See entity Status_Type.
M(0)
activity_endDate TimeSpecifies the time at which the resource finished (or is scheduled to finish) the activity.O
activity_startDate TimeSpecifies the date and time at which the resource arrived (or is scheduled to arrive) at the activity.

Notes: See Date Time Fixed also.
O
allocation_sourceIntegerDefines the source of the allocation.

Notes: For committed activities this maps to the source attribute on the latest Activity_Status. For schedulable activities this will be 0 to indicate an automatic allocation.
O
commit_sort_valueDoubleDetermines committed status order of activities.

Notes: The lowest value committed activity would appear first.
O
date_time_earliestDate TimeDetermines the earliest time an activity can be allocated.O
date_time_fixedBooleanIndicates whether the activity planned start time is fixed to this time.

Notes: Used to indicate manual allocations and fixed time appointments.
O
delay_date_time_earliestDate TimeIndicates the time to which the activity has been delayed. The activity cannot start before this time if set.O
durationTime SpanDefines the duration of the visit.

Notes: Duration can be amended and so needs to be passed to enable restarts. Would map to Activity Status.Duration.
O
duration_overheadTime SpanSpecifies how much of the activity's duration was added as a duration overhead.O
end_location_idString(32)Specifies the location at the end of the allocated activity.

Notes: Will only be populated if the activity has an end location specified.
O
fixed_resourceBooleanIndicates whether the resource has been fixed to this activity.O
fulfilled_remotelyBooleanFor remote fulfillment activities, this specifies whether the work is actually planned to be carried out remotely.

Notes: Will only be populated for activities with remote_fulfillment enabled. When populated, will be set to false if unallocated, or if the allocated resource is expected to be at the activity location anyway.
O
location_idString(32)Specifies the location at the start of the allocated activity.

Notes: If the activity has a single location, this will also be the location at the end of the activity.
O
parallel_indexIntegerSpecifies the activity's position in the plan when multiple activities are scheduled in parallel (to a parallel resource).O
resource_idString(32)Defines the id of the resource to which the activity is assigned.

Foreign Key: Plan_Route

Notes: Will be populated with the resource the activity is assigned to. Will be left blank if the activity is unallocated.
O
same_locationBooleanIndicates whether the previous activity on the resource's route is at the same site.

Notes: This can be used by the EA to identify if consecutive activities are on the same site.
O
shift_idString(32)Defines the shift id of the route this allocation belongs to.

Notes: If the shift has been generated from a Shift Pattern then the shift id here will not be populated. Will be blank if the activity has not been allocated.
O
shift_pattern_idString(32)Specifies the Shift Pattern id from which this route and shift were derived.

Notes: If the shift has been created using a shift pattern then the shift pattern id is populated.
O
shift_start_datetimeDate TimeDefines the start date time of the shift.

Foreign Key: Plan_Route

Notes: Will always be populated unless visit_status is unallocated.
O
visit_typeString(10)Defines the type of visit this represents.

Notes: See entity Activity_Class.
O

Entity: Allocation_Data (Output)

Allocation data records are returned to the EA and provide a history of the status, duration and SLA changes to the allocation.

Attribute NameData TypeDescriptionPKM/O
activity_idString(32)Defines the id of the activity this belongs to.

Foreign Key: Allocation
PKM
visit_idIntegerDefines the id of the visit this belongs to.

Foreign Key: Allocation
PKM(1)
plan_idInt64Defines the id of the plan from the DSE to which the allocation belongs. This enables plans to be stored by an EA over a period of time.

Notes: Each schedule plan is given a unique number by which it can be identified.
M
accepted_datetimeDate TimeDefines the time at which the activity was first accepted.O
commit_datetimeDate TimeDefines the time at which the activity was first committed.O
downloaded_datetimeDate TimeDefines the time at which the activity was first downloaded.O
expected_durationTime SpanDefines the duration specified before the status is On Site.O
expected_startDate TimeSpecifies the activity start date when the status first becomes committed.O
pending_complete_datetimeDate TimeDefines the time at which the activity was first set to pending completion.O
sent_datetimeDate TimeDefines the time at which the activity was first sent.O
sla_jeopardy_timeDate TimeDefines the end of the jeopardy SLA time.O
sla_start_timeDate TimeDefines the start time of the first SLA for the activity.O
travel_startDate TimeDefines the start of travel to activity.O
waiting_datetimeDate TimeDefines the time at which the activity was first set to waiting.O

Entity: Allocation_Hint (Input)

The table stores information related to an existing schedule or plan that can be used as a reference or baseline during the scheduling process. This allows DSE to reload or utilize an existing plan for further optimisation or simulation. The table serves as an input for continuing or modifying an already defined schedule.

The DSE will prioritize using information from Allocation_Hint before checking the records in the Allocation table from an existing output plan. Activities allocated through Allocation_Hint will not be reprocessed, even if the same records are present in Allocation.

Note

This table and the Split_Resource_Order_Hint table are only usable within a LOAD file.

Note

For Bucket resources, activity_start should be set to the shift start time so that the activity can be allocated to the shift matching this start time.

Attribute NameData TypeDescriptionPKM/O
activity_idString(32)Defines the id of the activity this relates to.

Foreign Key: Activity
PKM
visit_idIntegerDefines the id of the visit this relates to.PKM(1)
activity_startDate TimeSpecifies the date and time at which the resource arrived (or is scheduled to arrive) at the activity.M
resource_idString(32)Defines the id of the resource this relates to.

Foreign Key: Resources
M
delay_date_time_earliestDate TimeIndicates the time to which the activity has been delayed. The activity cannot start before this time if set.O

Entity: Allocation_Operation (Output)

Specified when an operation is expected to be performed during a visit to an activity.

Note

This is only intended for use with repeatable activities and cyclic scheduling.

Attribute NameData TypeDescriptionPKM/O
activity_idString(32)The identifier of the (repeatable) activity.

Foreign Key: Allocation
PKM
operation_idString(32)The identifier of the operation.PKM
visit_idIntegerAn identifier for this visit to the activity.

Foreign Key: Allocation
PKM
operation_end_timeDate TimeThe time that the operation is expected to be completed.M
operation_start_timeDate TimeThe time that the operation is planned to start.M
plan_idInt64The identifier for the plan.M

Entity: Allocation_Part (Output)

This reports which parts have been used on which activities. Where the resource has gained parts, the quantity shown will be negative. Where a part was required but not consumed, the quantity shown will be zero.

Attribute NameData TypeDescriptionPKM/O
activity_idString(32)Defines the id of the activity this relates to.

Foreign Key: Allocation
PKM
part_idString(32)Defines the id of the part this relates to.PKM
visit_idIntegerDefines the id of the visit this relates to.

Foreign Key: Allocation

Notes: When an activity duration spans several shifts then each visit is identified by incrementing the visit id. Value of -1 when not allocated.
PKM
part_usageIntegerSpecifies the number of parts consumed.M
plan_idInt64Defines the id of the plan from the DSE to which the allocation belongs. This enables plans to be stored by an EA over a period of time.

Notes: Each schedule plan is given a unique number by which it can be identified.
M
resource_idString(32)Defines the id of the resource this belongs to.M
part_change_timeDate TimeThe time at which the part change occurs.O
vehicle_idString(32)If populated, this will be the id of the vehicle that the part is taken from or added to.O

Entity: Application_Dataset (Data)

This table is used to exclude the processing of particular datasets by a given application type.

Attribute NameData TypeDescriptionPKM/O
application_type_idString(32)Defines the id of the application the entry relates to.PKM
dataset_idString(32)The dataset the application can or cannot process.

Foreign Key: Dataset
PKM
organisation_idIntegerDefines the id of the organisation for this dataset

Foreign Key: Dataset
PKM
disallowedBooleanIf true the application will not process the dataset

Notes: Boolean specifying whether an application can work on a dataset.
M(true)

Default Entries

IDDataset IDDisallowed

Entity: Appointment_History (System)

Logs all appointment requests, their timings, and their success or failure.

Attribute NameData TypeDescriptionPKM/O
idInt64A unique identifier.PKM
appointment_request_idString(32)The appointment request id the appointment relates to.M
dataset_idString(32)The dataset id the appointment relates to.M
load_internal_idInt64The internal id of the LOAD the appointment request relates to.M
organisation_idIntegerThe organisation id the appointment relates.M
request_datetimeDate TimeThe time of the appointment request.M
input_datetimeDate TimeThe time the input was completed.O
input_reference_internal_idInt64The internal id of the input reference the appointment request relates to.O
offered_slotsIntegerThe number of appointment slots offered.O
output_datetimeDate TimeThe time the plan output was generated.O
plan_idInt64The plan id the appointment request relates to.O
requested_slotsIntegerThe number of appointment slots requested.O
response_datetimeDate TimeThe time of the appointment response.O
successBooleanIndicates whether or not the appointment was processed successfully.O

Entity: Appointment_Offer (Output)

This holds the list of possible appointments to be offered in response to an Appointment Request.

Attribute NameData TypeDescriptionPKM/O
appointment_request_idString(32)Specifies the unique id of the Appointment Request.PKM
idIntegerA sequential number starting from 0 for each request for each offer.PKM
offer_end_datetimeDate TimeDefines the date and time of the end of the appointment slot being offered.

Notes: Must be after offer_start_datetime.
M
offer_start_datetimeDate TimeDefines the date and time of the start of the appointment slot being offered.M
offer_valueDoubleSpecifies the relative value of the appointment.M
plan_idInt64Defines the plan id the offer is on.

Foreign Key: Plan
M
availableBooleanDefines whether the slot is available.

Notes: If not present or true then the slot is available. If false then the slot is not available.
O
prospective_allocation_startDate TimeThe prospective start of the allocation.

Notes: When scheduled the activity may be allocated at a different time.
O
prospective_resource_idString(32)The prospective resource for the allocation.

Notes: When scheduled the activity may be allocated to a different resource.
O
reason_type_idIntegerSpecifies the reason code for the slot not being available.

Notes: Only populated if available = false.
O
window_end_datetimeDate TimeDefines the date and time of the end of the full appointment window for which a slot was requested.O
window_start_datetimeDate TimeDefines the date and time of the start of the full appointment window for which a slot was requested.O

Entity: Appointment_Offer_Response (Input)

This holds the response from the external system as to which appointment offer has been accepted.

Attribute NameData TypeDescriptionPKM/O
appointment_offer_idIntegerDefines the id of the appointment offer being accepted.

Notes: If null or -1 then all appointment offers for the appointment request have been rejected. If not null or -1 then this offer has been accepted.
PKM(-1)
appointment_request_idString(32)Defines the unique identifier of the appointment request this relates to.

Foreign Key: Appointment_Request
PKM
input_updatedBooleanIndicates whether the input data has been updated to reflect the accepted appointment.M(true)

Entity: Appointment_Request (Input)

This is used to record the need for an appointment request within the system. Each time an appointment is required for an activity a request is entered here with a unique id. A set of possible appointments are then returned by the scheduler and stored in Appointment Offer.

Warning

Appointment booking of linked activities is considerably more complex than single activities as the related activities may cause potential slots to be blocked out resulting in fewer offers being made. As such RnD strongly recommend that appointment booking is only done for activities with one related activity - either pre-req or co-req. If a situation arises where more complex structures need to be appointment booked then RnD must be consulted as to the likelihood of successful operation and through testing performed to confirm that the ABE is making satisfactory offers.

Warning

When appointment booking it is important to limit the number of 'slots' that are considered. The ABE is designed to respond quickly to an appointment request. It is strongly recommended that appointment offers are not requested for more than 20 slots. If more than 20 slots are needed, then these need to be requested in 'batches' of 20.

Attribute NameData TypeDescriptionPKM/O
idString(32)Defines a unique id for the appointment request.PKM
activity_idString(32)Defines the id of an activity for which an appointment is required.

Foreign Key: Activity
M
appointment_base_datetimeDate TimeSpecifies the base date and time for applying delays and offsets.

Notes: If not provided, offset is applied from the current schedule start.
O
appointment_template_datetimeDate TimeSpecifies the base date and time to use when applying the appointment template for this request.

Notes: Only applies if an appointment template id is specified.
O
appointment_template_durationTime SpanDefines the duration for which the appointment template should be applied.

Notes: Only applies if an appointment template id is specified.
O
appointment_template_idString(32)Defines the id of the appointment template to be used for this appointment request.

Foreign Key: Appointment_Template
O
appointment_window_lengthTime SpanDefines the length of the appointment slot to be used.

Notes: If not provided then the returned slots will be the size of availabilities specified for the Appointment Requests.
O
blockingBooleanRequests that the appointment offer time slots be blocked out to prevent concurrent appointment requests from using them.

Notes: When set to false the Appointment_Summary must be used to check if the offer specified in the Appointment_Offer_Response was successfully appointed.

Default Value: If not provided the value from Appointment_Template.blocking is used. If no appointment template is provided the default value will be true.
O
distance_threshold_kmDoubleThe maximum distance from a shift start location to the activity location in order for the resource to be considered for the appointment offer.

Notes: If a value is specified, it overrides the maximum distance specified in the Appointment_Template entity.
O
granularityTime SpanUsed to specify that returned slots should be rounded to start and finish at granular times.

Notes: Only applies if the appointment window length is less than the full availability of the slot.

Example: If a one hour slot is requested between 9am and 11am, with a granularity of 30 minutes, the possible slots returned will be 9am-10am, 9:30am-10:30am or 10am-11am.
O
offer_expiry_datetimeDate TimeSpecifies the date and time that any offers for the appointment request will expire.

Notes: Must be in the future.
O
request_datetimeDate TimeThe time stamp for this request.

Notes: This is used when applying the offer_expiry_window on the appointment template.
O
slot_usage_rule_set_idString(32)The id of the slot usage rules that should be used with this request.

Foreign Key: Slot_Usage_Rule_Set
O
utilisation_multiplierDoubleA multiplier for the maximum shift utilisation to limit the amount of time the offers consume in each shift.

Notes: If an offer in a shift makes the shift utilisation higher than the maximum shift utilisation, the offer will not be available. Values between 0 and 1.
O

Entity: Appointment_Summary (Output)

This returns summary information about a booked appointment. This information is sent after an appointment offer response has been received.

When responding to a non-blocking appointment request, the appointed attribute should be used to see if the appointment offer response was successful.

Attribute NameData TypeDescriptionPKM/O
appointment_request_idString(32)Defines the id of the appointment request this relates to.PKM
activity_idString(32)Defines the id of the activity the request was made for.M
appointedBooleanStates whether an appointment slot has been accepted for this request.M
input_updatedBooleanStates whether the input data has yet been updated to reflect the accepted slot.M
plan_idInt64Defines the id of plan this information relates to.M
request_outstandingBooleanStates whether there is still an appointment request outstanding for this activity.M
appointment_end_datetimeDate TimeDefines the start date and time of the accepted appointment slot.O
appointment_start_datetimeDate TimeDefines the end date and time of the accepted appointment slot.O
appointment_valueDoubleThe value of the accepted appointment, corresponding to the offer_value on the accepted appointment offer.O

Entity: Appointment_Template (Input)

This enables a pattern of requests to be defined for appointments. The system will automatically create these appointment requests internally over the scheduling window.

Warning

When appointment booking it is important to limit the number of 'slots' that are considered. The ABE is designed to respond quickly to an appointment request. It is strongly recommended that appointment offers are not requested for more than 20 slots. If more than 20 slots are needed, then these need to be requested in 'batches' of 20.

Note

Please note that when an Appointment_Template is used for an appointment request, the slots to consider will only be based on the associated Appointment_Template_Item rows. Any availability or availability pattern rows linked directly to the appointment request will be ignored, and will not be treated as potential slots to consider.

Attribute NameData TypeDescriptionPKM/O
idString(32)Defines a unique id for the appointment template.PKM
blockingBooleanRequests that the appointment offer time slots be blocked out to prevent concurrent appointment requests from using them.

Notes: When set to false the Appointment_Summary must be used to check if the offer specified in the Appointment_Offer_Response was successfully appointed.
M(true)
day_patternString(7)Specifies the days on which slots should be requested.

Notes: This should be 7 characters, with each character either 'Y' to include that day, or 'N' to exclude it. The first character corresponds to Monday.

Example: The string 'YYYYYNN' indicates Monday to Friday appointments only.
M
default_templateBooleanIndicates whether this template should be used as the default template on the appointment booking client.M(false)
exclude_to_template_startBooleanIndicates whether appointment slots should only be offered from the next start point of the template.M(false)
number_of_slotsIntegerDefines the maximum number of appointment slots to return.M
offer_expiry_windowTime SpanDefines the length of time from the request_datetime on the appointment request after which offers will be expired.M
appointment_window_lengthTime SpanSpecifies the length of the slots that should be returned.O
descriptionString(2000)Describes this appointment template.O
distance_threshold_kmDoubleThe maximum distance from a shift start location to the activity location in order for the resource to be considered for the appointment offer.

Notes: If specified will be overridden by maximum distance km value provided in the 'Appointment_Request' entity, if both are specified.
O
granularityTime SpanSee granularity on Appointment_Request.O
minimum_delayTime SpanSpecifies the minimum amount of time after the appointment_base_datetime from which the appointments should be offered. If appointment_base_datetime is not specified, current schedule time is considered.O
slot_usage_rule_set_idString(32)The id of the slot usage rules that should be used with this template.

Foreign Key: Slot_Usage_Rule_Set
O
start_basedBooleanDefines whether only the activity start time need be within the returned slot, or whether the entire activity must be scheduled within the slot.O
template_start_day_of_weekIntegerSpecifies the day of week from which the template should start, with 0=Monday.O
template_start_time_of_dayTime SpanSpecifies the time of day from which the template should start.O
time_zoneString(32)Specifies the time zone to use when applying time of day attributes on Appointment Template and Appointment Template Item.

Notes: If null the local system timezone will be used.
O
utilisation_multiplierDoubleDefines a multiplier for the maximum shift utilisation to limit the amount of time the offers consume in each shift.

Notes: If an offer in a shift makes the shift utilisation higher than the maximum shift utilisation, the offer will not be available. Values between 0 and 1.
O

Example

This will request one hour morning and afternoon slots for a week, starting from the next Monday after the schedule time.

<Appointment_Template>
    <id>SAMPLE_TEMPLATE</id>
    <day_pattern>YYYYYNN</day_pattern>
    <number_of_slots>10</number_of_slots>
    <appointment_window_length>P1H</appointment_window_length>
    <granularity>PT30M</granularity>
    <template_start_day_of_week>0</template_start_day_of_week>
    <template_start_time_of_day>PT9H</template_start_time_of_day>
    <exclude_to_template_start>true</exclude_to_template_start>
    <start_based>true</start_based>
    <offer_expiry_window>PT5M</offer_expiry_window>
    <default_template>true</default_template>
  </Appointment_Template>
  <Appointment_Template_Item>
    <appointment_template_id>SAMPLE_TEMPLATE</appointment_template_id>
    <slot_start_time>PT9H</slot_start_time>
    <slot_end_time>PT12H</slot_end_time>
  </Appointment_Template_Item>
  <Appointment_Template_Item>
    <appointment_template_id>SAMPLE_TEMPLATE</appointment_template_id>
    <slot_start_time>PT13H</slot_start_time>
    <slot_end_time>PT17H</slot_end_time>
  </Appointment_Template_Item>

Entity: Appointment_Template_Item (Input)

Defines the slots that should be used for an appointment template.

Attribute NameData TypeDescriptionPKM/O
appointment_template_idString(32)Defines the id of the appointment template this relates to.

Foreign Key: Appointment_Template
PKM
slot_start_timeTime SpanSpecifies the start time of the slot to be requested.PKM
slot_end_timeTime SpanSpecifies the end time of the slot to be requested.M
slot_usage_window_endTime SpanSpecifies the end time of the slot usage window for the utilisation check.O
slot_usage_window_startTime SpanSpecifies the start time of the slot usage window for the utilisation check.O

Entity: Appt_Request_Slot_Usage (Input)

Used to associate an Appointment_Request to either one or multiple slot usage rule sets.

Note

It is also possible to link an appointment request to a single slot usage rule set via the attribute on the appointment request row. However, using this child table allows multiple rule sets to be set on a single appointment request. If both methods are used then all specified rules will apply.

Note

Any slot usage rule sets set in this way will override all rule sets specified against the template.

Attribute NameData TypeDescriptionPKM/O
appointment_request_idString(32)The id of the appointment request this relates to.

Foreign Key: Appointment_Request
PKM
slot_usage_rule_set_idString(32)The id of the slot usage rule set to use with this request.

Foreign Key: Slot_Usage_Rule_Set
PKM

Entity: Appt_Template_Slot_Usage (Input)

Used to associate an Appointment_Template to either one or multiple slot usage rule sets.

Note

It is also possible to link an appointment template to a single slot usage rule set via the attribute on the appointment template row. However, using this child table allows multiple rule sets to be set on a single appointment template. If both methods are used then all specified rules will apply.

Note

If any slot usage rule sets are set directly against the appointment request (either on the appointment request itself or via the Appt_Request_Slot_Usage table), then these will override all rule sets specified against the template.

Attribute NameData TypeDescriptionPKM/O
appointment_template_idString(32)The id of the appointment template this relates to.

Foreign Key: Appointment_Template
PKM
slot_usage_rule_set_idString(32)The id of the slot usage rule set to use with this template.

Foreign Key: Slot_Usage_Rule_Set
PKM

Entity: Availability (Input)

This is used to record periods of time when either activities, activity types, locations and location types have access or are available for use in scheduling. In many cases locations and activities will have the same availability times and in this case the availabilities can be recorded against the activity type or location type. This is also used to define slots of availability for Appointment Request.

Location availabilities will take precedence over location type. Activity availabilities will take precedence over activity type availabilities. Location and activity availabilities will be intersected together (though see the note on 'LOCATION_OVERRIDE' below). Thus an activity availability of 9am until 1pm combined with a location availability of 12pm until 5pm will result in overall availability of 12pm until 1pm.

Periods of unavailability can also be specified by setting the attribute 'available' to false. If any periods of unavailability are specified these times will be excluded from the available times for the activity. For example an availability of 9am until 5pm combined with an unavailable time of 9am until 12pm would result in overall availability of 12pm until 5pm. If only unavailable times are specified the activity is assumed to be available everywhere apart from these times.

Note

Attribute start_based will determine whether the availability in question is enforced only against the proposed start time of the activity, or against the entire duration of the activity. As a simple example, suppose an activity has availability from 9:00-17:00, and is scheduled at 16:30 for one hour. If start_based is true this is valid, but if false it is invalid since the activity will not be completed until after the availability has ended.

If this attribute is not specified the DSE will use the setting EnforceConstraintsOnCallEnd to determine the default mode.

This setting will be applied to the entire duration of the activity, not just the end time as it is currently.

If a mixture of start based and full duration availability is used (i.e. start_based set to true on some Availability and false on others), the activity can only be scheduled where it is fully available. For example, if a start based availability is set for Monday, and a full duration availability for Tuesday, then the activity could only be scheduled on the Tuesday, since it is not fully available on Monday.

Note

The attribute 'availability_type' may take either the value 'ACCEPTED_APPOINTMENT' or 'LOCATION_OVERRIDE'. In either case, this is only allowed when the availability is directly linked to an activity, and will be ignored if specified against activity_type or location.

The 'ACCEPTED_APPOINTMENT' type should be used to specify an appointment window for the activity. The time specified is intersected with any other availability specified. The Appointment Booking Engine will ignore this availability if rebooking an appointment for the activity.

The 'LOCATION_OVERRIDE' type should be used to override the location availability for a particular activity. This should be used where the availability specified on the location is more restrictive than should be the case for this activity. The periods specified will override the location availability for that activity, and be intersected with any other specified availability in the usual way (ignoring the original location availability).

Note

Availability constraints are always optional. If no availability applies then there is no availability restriction. If only periods of unavailability are defined, the activity (or location etc.) will be considered available outside these times. If any periods of availability are defined (either through use of Availability or Availability_Pattern), then the activity (or location etc.) will only be considered available at the times specified.

Note

Availabilities for different activity pools are intersected, whereas multiple availabilities against the same pool are combined. For example, suppose an activity belongs to two pools (Pool1 and Pool2). Pool1 has availabilities from 9am to 11am and also from 1pm to 3pm. Pool2 is available from 10am to 4pm. The activity would be available from 10am to 11am and from 1pm to 3pm.

Warning

Availabilities should not be sent that fall outside of the SLAs that apply to an activity or outside the period covered by the scheduling window and appointment window.

Attribute NameData TypeDescriptionPKM/O
idString(32)Defines a unique id for the availability.PKM
datetime_endDate TimeSpecifies the end of the availability period.M
datetime_startDate TimeSpecifies the start of the availability period.M
activity_idString(32)Defines the id of the activity this relates to.

Foreign Key: Activity

Notes: None or no more than one of these foreign keys must be provided.
O
activity_pool_idString(32)Defines the id of the activity pool this relates to. The availability will apply to all activities in the activity pool.

Foreign Key: Activity_Pool
O
activity_type_idString(32)Defines the id of the activity type this relates to.

Foreign Key: Activity_Type
O
appointment_request_idString(32)Appointment offer id

Foreign Key: Appointment_Request
O
availability_typeString(32)Defines the type of availability.

Allowed Values: 'ACCEPTED_APPOINTMENT', 'LOCATION_OVERRIDE'
O
availableBooleanDefines whether the period between the specified times is to be treated as available.O
location_idString(32)Defines the id of the location this relates to.

Foreign Key: Location
O
location_type_idString(32)Defines the id of the location type this relates to.

Foreign Key: Location_Type
O
start_basedBooleanEnforces availability against either the start time of the activity or the total duration of activity.

Notes: If not set the parameter value for EnforceConstraintsOnCallEnd is used to determine the mode.
O

Examples

<Availability>
    <id>Test9</id>
    <activity_id>Test9</activity_id>
    <datetime_start>2006-01-03T11:46:00.0000000-00:00</datetime_start>
    <datetime_end>2006-01-03T20:46:00.0000000-00:00</datetime_end>
</Availability>
<Availability>
    <id>Test10</id>
    <location_id>Test10</location_id>
    <datetime_start>2006-01-03T11:46:00.0000000-00:00</datetime_start>
    <datetime_end>2006-01-03T20:46:00.0000000-00:00</datetime_end>
</Availability>
<Availability>
    <id>Test11</id>
    <activity_type_id>Test11</activity_type_id>
    <datetime_start>2006-01-03T11:46:00.0000000-00:00</datetime_start>
    <datetime_end>2006-01-03T20:46:00.0000000-00:00</datetime_end>
</Availability>
<Availability>
    <id>Test12</id>
    <location_type_id>Test12</location_type_id>
    <datetime_start>2006-01-03T11:46:00.0000000-00:00</datetime_start>
    <datetime_end>2006-01-03T20:46:00.0000000-00:00</datetime_end>
</Availability>
<Availability>
    <id>Test13</id>
    <activity_id>Test13</activity_id>
    <datetime_start>2006-01-03T09:30:00.0000000-00:00</datetime_start>
    <datetime_end>2006-01-03T10:30:00.0000000-00:00</datetime_end>
    <available>false</available>
</Availability>
<Availability>
    <id>Test14</id>
    <activity_id>Test14</activity_id>
    <datetime_start>2006-01-03T10:00:00.0000000-00:00</datetime_start>
    <datetime_end>2006-01-03T12:00:00.0000000-00:00</datetime_end>
    <availability_type>ACCEPTED_APPOINTMENT</availability_type>
</Availability>

Entity: Availability_Pattern (Input)

This enables a pattern of availabilities to be defined for either a Location, Location Type, Appointment Request, Activity or Activity_Type_Id. The system will automatically create these availabilities over the scheduling window.

Note

If operating across multiple time zones, ensure the time_zone attribute is set accordingly.

Note

See 'Availability' for details on the attribute 'availability_type'.

Note

Attribute start_based will determine whether the availability in question is enforced only against the proposed start time of the activity, or against the entire duration of the activity. As a simple example, suppose an activity has availability from 9:00-17:00, and is scheduled at 16:30 for one hour. If start_based is true this is valid, but if false it is invalid since the activity will not be completed until after the availability has ended.

If this attribute is not specified, the DSE will use the setting EnforceConstraintsOnCallEnd to determine the default mode.

This setting will be applied to the entire duration of the activity, not just the end time as it is currently.

Attribute NameData TypeDescriptionPKM/O
idString(32)Defines a unique id for the availability pattern.PKM
close_timeTime SpanSpecifies the closing time of the availability.

Notes: Must be greater than open_time.
M
day_patternString(7)Seven character string indicating each day of the week the default pattern should apply too.

Notes: Each character represents Monday – Sunday. ‘Y’ indicates the shift should be applied for this day.
M(YYYYYNN)
open_timeTime SpanDefines the time each day specified in day_pattern when the availability starts.M(PT8H)
period_end_datetimeDate TimeDefines the end date and time for the pattern to be applied.

Notes: Cannot be before period_start_datetime.
M
period_start_datetimeDate TimeSpecifies the starting date and time for the pattern to be applied.M
activity_idString(32)Specifies the activity to which the availability pattern should be applied.

Foreign Key: Activity

Notes: One of Location Type Id, Location Id, Appointment Request.id, Activity Id location type id or activity type id must be provided.
O
activity_pool_idString(32)Defines the id of the activity pool this relates to. The availability will apply to all activities in the activity pool.

Foreign Key: Activity_Pool
O
activity_type_idString(32)Specifies the activity type to which the availability should be applied.

Foreign Key: Activity_Type

Notes: One of Location Type Id, Location Id, Appointment Request.id, Activity Id location type id or activity type id must be provided.
O
appointment_request_idString(32)Specifies the id of the appointment request to which the availability pattern should be applied.

Foreign Key: Appointment_Request

Notes: One of Location Type Id, Location Id, Appointment Request.id, Activity Id location type id or activity type id must be provided.
O
availability_typeString(32)Specifies the type of availability.

Allowed Values: 'ACCEPTED_APPOINTMENT','LOCATION_OVERRIDE'
O
location_idString(32)Specifies the location to which the availability pattern should be applied.

Foreign Key: Location

Notes: One of Location Type Id, Location Id, Appointment Request.id, Activity Id location type id or activity type id must be provided.
O
location_type_idString(32)The location type to which the availability pattern should be applied.

Foreign Key: Location_Type

Notes: One of Location Type Id, Location Id, Appointment Request.id, Activity Id location type id or activity type id must be provided.
O
start_basedBooleanEnforce availability against start time of activity or total duration of activity.

Notes: If not set the parameter value for EnforceConstraintsOnCallEnd is used to determine the mode.
O
time_zoneString(32)The UTC timezone code to be used for open_time, close_time and day_pattern.O

Entity: Availability_Set (Input)

Defines a collection of availability periods that can be linked to activities. This can be used as a simpler way of defining the same availabilities for multiple activities.

Extra functionality can be enabled through availability sets to place additional restrictions on the schedule based on which availability period the activities are scheduled to. For example, the one_resource_per_availability setting can limit the activities linked to the availability set to use the same resource when scheduled to the same availability period. They can be scheduled to a different resource in the next period in the set, as long as there is only a single resource being used per availability period.

Note

Availabilities will be combined or intersected depending on how they are linked to an activity. Availabilities that link to an individual activity directly (whether that is through an ordinary availability, or through an availability set) will be combined. Similarly, if availabilities are linked to an activity via its location, they will be combined.

However, a location availability and a pool availability and a direct availability would all be intersected, as they have different sources. Availabilities for different activity pools would be intersected, whereas multiple availabilities for the same activity pool would be combined.

Note

Availability sets defined against an activity directly or via an activity pool will take precedence over any availability sets defined against an activity type. So if there are any availability sets defined directly or via a pool, all activity type availability sets for the activity would be ignored.

Note

The one_resource_per_availability functionality cannot be used for activities linked to the availability set via their location or location type.

Attribute NameData TypeDescriptionPKM/O
idString(32)A unique identifier for the availability set.PKM
availability_costDoubleDefines the one off cost of utilising an availability window.O
availability_visit_costDoubleThe cost applied to every CALL class activity scheduled within an availability window.O
availableBooleanDefines whether the periods within the set are to be treated as available.O
descriptionString(2000)A description of the availability set.O
one_resource_per_availabilityBooleanIf enabled, activities linked to the availability set must all be scheduled to the same resource, if scheduled within the same availability period.

Notes: If enabled, the availabilities within the availability set must be non-overlapping.

Notes: May not be enabled if available is set to false.
O
persist_category_metricsBooleanDefines whether categories should still apply against category rules in between activities within an availability in the availability set.

Notes: Only applicable if one_resource_per_availability is enabled.
O

Entity: Availability_Set_Item (Input)

Defines an individual availability period belonging to an availability set.

Attribute NameData TypeDescriptionPKM/O
availability_set_idString(32)The id of the availability set.

Foreign Key: Availability_Set
PKM
idString(32)An identifier for the availability set item, unique within the availability set.PKM
datetime_endDate TimeSpecifies the end of the availability period.M
datetime_startDate TimeSpecifies the start of the availability period.M
availability_costDoubleDefines the one off cost of utilising an availability window.

Notes: If specified will override Availability_Set
O
availability_visit_costDoubleThe cost applied to every CALL class activity scheduled within an availability window.

Notes: If specified will override Availability_Set
O
start_basedBooleanEnforces availability against either the start time of the activity or the total duration of activity.

Notes: If not set the parameter value for EnforceConstraintsOnCallEnd is used to determine the mode.
O

Entity: Broadcast (Input)

This defines how plans and other outputs are to be communicated to external applications and users. Values should be set up with assistance from IFS. See also Broadcast Parameter.

Note

Schedule quality is expressed as a percentage from 1 – 100. Higher percentage quality plans take longer to produce so there is a trade-off between speed and quality of optimisation. This is not to say that the optimisation is poor. A 100 percent optimisation is achieved after a period of time in which the optimiser has not been able to improve the quality. Schedules have a quality of 0 until every element has been processed at least once. Thereafter the quality of a resource's schedule is dependent on how many times it has been improved recently.

Quality is a relative concept and the quality of two different schedules are not comparable. It is used primarily for internal purposes and as an indicator of the number of improvements the scheduler is making relative to the problem space.

Note

Broadcast.allocation_type = 1, 2, 4, 8, 16 indicates the plan data is associated with the Dynamic Scheduling Engine, Appointment Booking Engine, Manual Scheduling, Schedule Dispatch Service or the scheduling Travel Analyser. This is a binary field where the values are added together to specify multiple types. Broadcast.allocation_type is used in broadcasts to select what type of data should be output. Schedule Explainability Service broadcasts are not supported in broadcasts.

Note

When the Schedule Broadcast Manager is set up to broadcast plans of type CHANGE with once_only set to false if one of the change files cannot be broadcast for whatever reason, the next broadcast it attempts will be of type COMPLETE. This is to ensure that no changes are missed by the external application picking up the broadcasts.

Note

The input_reference_id attribute is used to ensure that a particular input has been processed before a broadcast is sent. This would most commonly be the input reference id of the current input. A typical use case for this is with appointment booking, where a broadcast request has been included with an appointment request. Setting the input_reference_id will ensure that the broadcast includes the appointment offers relating to this request. Please note that this cannot be used to specify the id of an input reference that does not yet exist in the system. If this is the case, then the attribute will be ignored.

Attribute NameData TypeDescriptionPKM/O
idString(32)Defines a unique id for the broadcast.PKM
activeBooleanIndicator to turn broadcast on or off.M(true)
broadcast_type_idString(32)Identifies what type of broadcast type this is and what Broadcast_Parameters are required for this Broadcast.

Foreign Key: Broadcast_Type
M
minimum_plan_qualityDoubleIndicates that the plan will only be broadcast when the Plan Quality is greater or equal to this value.

Notes: Also see Plan entity where the quality is recorded. Quality is expressed as a percentage ranging from 0 to 100.
M(100)
minimum_step_intervalIntegerA broadcast will only be sent every 'x' plans.M(1)
once_onlyBooleanIf set to true the plan will only be broadcast once, the first time it is required. The broadcast will then be discarded.

Notes: When processing STATIC schedules all broadcasts are considered once only.
M(false)
plan_typeString(10)Defines the type of plan to be generated i.e. a full plan or changes since the last plan.

Allowed Values: CHANGE = Only changes in the last plan.
COMPLETE = Whole plan sent.
INTERNAL = Used to inform the DSE of when to write plans internally, where no external plans are required.
ADMIN = Broadcasts for internal administrative purposes. Only used by the Scheduling Administration Service.
WORKBENCH = Broadcasts manual change requests to a third party rather than sending them to the Schedule Input Manager. The Schedule Broadcast Manager is not required. This can be overridden for accepting schedule exceptions by setting the StandardSendScheduleExceptionAccepts parameter to yes.

M
allocation_typeIntegerDefines the type of allocation used. This is a binary addition. To specify Dynamic Scheduling and Manual Scheduling the value would be 5, 1+4. To include Scheduling Dispatch the value would be 13. Schedule Explainability Service broadcasts are not supported in broadcasts.

Allowed Values: 1 = Dynamic Scheduling
2 = Appointment Booking Engine
4 = Manual Scheduling
8 = Schedule Dispatch Service
16 = Scheduling Travel Analyser


O
descriptionString(2000)Broadcast description.O
expiry_datetimeDate TimeDefines the date and time the broadcast should be expired.

Notes: If the schedule time (taken from the latest Input_Reference.datetime) goes beyond the expiry_datetime, then this broadcast request will be ignored and no plan will be generated.
O
input_reference_idString(100)Contains the identifier of the input reference which would trigger this broadcast. The broadcast will not be issued until the input from the identified Input_Reference had been processed.

Notes: The input reference specified should match the input reference id of either the current input or of a pre-existing input. If other criteria such as plan quality were not met then the broadcast will not be processed.
O
maximum_frequencyTime SpanDefines the minimum amount of time elapsed since the previous broadcast before sending an updated one.

Notes: Specifying this in addition to the appointment allocation type can have a negative effect on the performance of the system and is not advised.
O
maximum_waitTime SpanIf specified, then the plan will be broadcast when either (a) the minimum plan quality is attained, or (b) when the Maximum Wait is hit, whichever occurs first. If there is no Maximum Wait, then the plan is broadcast when the quality target is met.O
minimum_visit_statusIntegerIf specified, then the Allocation rows where the visit_status is less than the minimum_visit_status will be removed from the broadcast (as well as associated allocation data and allocation part rows).O
time_filter_endDate TimeIf specified, then the activities whose start time is after or at the exact time of this filter will not be broadcasted.O
time_filter_startDate TimeIf specified, then the activities whose end time is before or at the exact time of this filter will not be broadcasted.O

Examples

Definition of a standard broadcast.

<Broadcast>
    <id>Email_BroadCast_Output</id>
    <active>true</active>
    <broadcast_type_id>EMAIL</broadcast_type_id>
    <description>Test Broadcast Email</description>
    <plan_type>COMPLETE</plan_type>
    <once_only>true</once_only>
</Broadcast>

Definition of an internal broadcast for use by the Scheduling Administration Service including input reference header record and parameter records. This will tell the Administration Service you would like a broadcast to be sent to you on the 10th failed attempt to contact an Input Manager Service. The Administration Service would attempt to contact all running Input Managers every 30 seconds (Default) and would create Application_Instance_Status rows for all running Input Managers every 60 seconds (Default).

When specifying admin broadcasts they must be put into the SCHED_ADMIN dataset. This is done on the input reference.

<Input_Reference>
    <datetime>2007-10-12T03:00:00+00:00</datetime>
    <id>ADMIN_BROADCASTS</id>
    <input_type>LOAD</input_type>
    <dataset_id>SCHED_ADMIN</dataset_id>
</Input_Reference>
<Broadcast>
    <id>ADM_SIM_NotResponding_Email</id>
    <broadcast_type_id>EMAIL</broadcast_type_id>
    <description>SIM Broadcast Email</description>
    <plan_type>ADMIN</plan_type>
</Broadcast>
<Broadcast_Parameter>
    <broadcast_id>ADM_SIM_NotResponding_Email</broadcast_id>
    <parameter_name>to_address</parameter_name>
    <parameter_value>support@xxx.com</parameter_value>
</Broadcast_Parameter>
<Broadcast_Parameter>
    <broadcast_id>ADM_SIM_NotResponding_Email</broadcast_id>
    <parameter_name>smtp_server</parameter_name>
    <parameter_value>mail.xxx.com</parameter_value>
</Broadcast_Parameter>
<Broadcast_Parameter>
    <broadcast_id>ADM_SIM_NotResponding_Email</broadcast_id>
    <parameter_name>application_type_id</parameter_name>
    <parameter_value>SIM</parameter_value>
</Broadcast_Parameter>
<Broadcast_Parameter>
    <broadcast_id>ADM_SIM_NotResponding_Email</broadcast_id>
    <parameter_name>failed_attempt_count</parameter_name>
    <parameter_value>10</parameter_value>
</Broadcast_Parameter>

Example of broadcasting manual change requests to a third party rather than sending them to the Schedule Input Manager. If the broadcast is to a webservice it can be coded so the Scheduling Workbench passes a language id and displays an error message to the user when needed.

<Broadcast>
    <id>MyWorkbenchBroadcast</id>
    <active>true</active>
    <broadcast_type_id>FILE</broadcast_type_id>
    <description>Example</description>
    <plan_type>WORKBENCH</plan_type>
</Broadcast>
<Broadcast_Parameter>
    <broadcast_id>MyWorkbenchBroadcast</broadcast_id>
    <parameter_name>file</parameter_name>
    <parameter_value>C:\IFS\Scheduling\Broadcast</parameter_value>
</Broadcast_Parameter>

Entity: Broadcast_Data (System)

Stores POLLING broadcast data prepared by the Schedule Broadcast Manager.

Attribute NameData TypeDescriptionPKM/O
broadcast_idString(32)The broadcast id the broadcast relates to.PKM
dataset_idString(32)The dataset id the broadcast data relates to.PKM
organisation_idIntegerThe organisation id the broadcast data relates to.PKM
plan_idInt64The plan id the broadcast data relates to.PKM
input_reference_internal_idInt64The internal id of the input reference the broadcast data relates to.M
plan_typeString(32)The type of this plan.

Notes: Complete plan = ‘COMPLETE’ Plan containing only changes since last plan = ‘CHANGE’
M

Entity: Broadcast_History (System)

Logs all attempts to broadcast plans by the Schedule Broadcast Manager, and their success or failure.

Attribute NameData TypeDescriptionPKM/O
idInt64A unique identifier.PKM
application_instance_idString(128)The id of the broadcast manager instance that sent the broadcast.M
broadcast_datetimeDate TimeThe time of the broadcast.M
broadcast_idString(32)The broadcast id the broadcast relates to.M
dataset_idString(32)The dataset id the broadcast relates to.M
organisation_idIntegerThe organisation id the broadcast relates to.M
successBooleanIndicates whether or not the broadcast was sent successfully.M
update_typeString(32)Indicates the type of update that is being broadcast

Allowed Values: PLAN,WORKBENCH,ADMIN
M
input_reference_internal_idInt64The internal id of the input reference the broadcast relates to.O
messageString(2000)The message returned from the receiving system.O
plan_idInt64The plan id the broadcast relates to.O
responseInt64The response code returned from the receiving system.O
result_codeIntegerThe http result code returned from the receiving system.

Notes: Records result code only for REST Broadcast Type.
O
send_time_takenTime SpanThe time elapsed while sending the broadcast.

Notes: For example, the time taken for the receiving web application to process the broadcast and return a result.
O
user_idString(256)The id of the user who made the change.O

Entity: Broadcast_Parameter (Input)

This defines the various parameter values required for each Broadcast. The required parameters are created automatically depending on the Broadcast Type being used.

Plans may be generated by a number of applications such as the DSE or ABE. Using parameter plan_filter it is possible to only broadcast plans from specified applications.

Note

Parameter ’data_tables’ can be included on any broadcast to specify what additional tables of data should be included with the plan. This enables any data currently held in the scheduling system to be output. The parameter value is a comma delimited set of table names.

Note

When entering the file_path for a FILE broadcast it is possible to enter a specific file name or just a folder. The folder approach is quite useful because you can then examine the progress of the plan because the broadcasts are separate and do not overwrite the previous one. See example below.

Note

When broadcasting plans as files it is possible to ensure uniqueness of the name by providing a value for parameter ‘filename_format’ of ‘GUID’.

Note

When entering the required_tables for a broadcast, it is possible to enter a single table name or a list of comma separated table names. All other tables will not be included in the broadcast.

Note

When entering the excluded_tables for a broadcast, it is also possible to enter a single table name or a list of comma separated table names. The specified table(s) will not be included in the broadcast. All other tables will be included.

Note

For a REST broadcast HTTP basic authentication is implemented, it is recommended that HTTPs be used for a secure connection.

Attribute NameData TypeDescriptionPKM/O
broadcast_idString(32)Defines a unique id for the broadcast parameter.

Foreign Key: Broadcast
PKM
parameter_nameString(100)Defines the name of the broadcast parameter.PKM
parameter_valueString(1000)Defines the actual value of the broadcast parameter.M

Default Entries Created Based Upon Broadcast Type

Broadcast TypesParameter NameDescriptionM/O For Broadcast Type
EMAILto_addressEmail address of broadcast recipient.M
EMAILsmtp_serverFull SMTP server name of the recipient. If specified incorrectly, SMTP error server such as ''server response was: 5.7.57 SMTP'' will occur.M
FILEfile_pathFile path to output plan.M
RESTmediatypeThe media type for the content of the request and response message. Accepted values are :-
application/json
text/json
application/xml
text/xml
application/octet-stream
M
RESThttpmethodThe http method to use for the request. Default is 'POST'. Accepted values are :-
POST
PATCH
O
RESTetagAn optional etag value to use for the request. This will be added as an If-Match header.O
RESTauth_token_urlAn optional OAuth 2.0 token endpoint URL to obtain bearer token. If provided, Broadcast Manager will use it to authenticate using client credentials flow. Otherwise basic authentication will be used.O
RESTauth_token_url_cert
_thumbprint
The certificate thumbprint for the OAuth token endpoint. See the Administration Guide section on Certificate Thumbprints for more information.O
RESTcompressionAn optional parameter indicating the compression method to use. Default is no compression. Accepted values are :-
gzip
O
RESTurl_cert_thumbprintThe certificate thumbprint for the webservice address. See the Administration Guide section on Certificate Thumbprints for more information.O
WEBSERVICE
FTP
REST
urlPath to FTP site or webservice address.M
WEBSERVICE
FTP
REST
usernameThe username for logon credentials. Only needed when logon credentials are needed.O
WEBSERVICE
FTP
REST
passwordThe password for logon credentials. Only needed when logon credentials are needed. The password gets encrypted before it is saved in the database, hence the value available in the database is not the real password.O
WEBSERVICEwsidThe defined id for the webservice data to be sent back to.M
WEBSERVICEauthenticationThe authentication method to use when sending credentials, e.g. 'Basic' for basic authentication. If not supplied the default method will be Negotiate.O
WEBSERVICE
REST
timeoutTimeout to be used on webservice calls in milliseconds.O(1000000)
WEBSERVICEexternal_referenceAn external reference for inclusion in the webservice call.O
WCFaddressPath to WCF receiving service.M
WCFbindingName of binding to use. Allowed values are:-
BINDING_WS_HTTP_SECURITY_NONE
BINDING_WS_HTTP
BINDING_NET_TCP_SECURITY_NONE
BINDING_NET_TCP
BINDING_BASIC_HTTP
BINDING_BASIC_HTTPS
http (equivalent to BINDING_WS_HTTP_SECURITY_NONE)
nettcp (equivalent to BINDING_NET_TCP_SECURITY_NONE)

The exact configuration can be modified if required via the configuration file.
O(http)
WCFmethodMethod to use when sending data. Allowed values are:-
Broadcast360
Broadcast360Workbench
O(Broadcast360)
EMAIL
FILE
WEBSERVICE
FTP
data_tablesComma delimited set of tables to be output in the broadcast.O
EMAIL
FILE
WEBSERVICE
FTP
plan_filterNow obsolete - replaced by allocation_type attribute on Broadcast entity.O
EMAIL
FILE
FTP
filename_formatThe default format is the current timestamp, but by specifying this parameter with the value 'GUID', you can change this format to be a GUID followed by _360Output.xml. This will ensure uniqueness. Allowed values are:
TIMESTAMP
GUID
O(TIMESTAMP)
ALLapplication_type_idApplication Type this admin broadcast is for.M only for plan_type ADMIN
ALLfailed_attempt_countNow obsolete - replaced by check_in_expired_timeO
ALLcheck_in_expired_timeAmount of time to have expired since application last checked in before broadcast is sentM only for plan_type ADMIN
ALLping_rateHow often to contact the application to see if it is still alive in seconds.O(10) only for plan_type ADMIN
ALLdata_ping_rateHow often to create Application_Instance_Status records for the application in seconds.O(30) only for plan_type ADMIN
ALLrequired_tablesA comma separated list of the names of the tables that are required to be included in the broadcast. All other tables will be excluded.O
ALLexcluded_tablesA comma separated list of the names of the tables that are required to be excluded in the broadcast. All other tables will be included.O

Examples

File broadcast to a directory.

<Broadcast>
    <id>ao1</id>
    <active>true</active>
    <broadcast_type_id>FILE</broadcast_type_id>
    <description>Results</description>
    <plan_type>COMPLETE</plan_type>
    <minimum_plan_quality>80</minimum_plan_quality>
    <minimum_step_interval>1</minimum_step_interval>
    <once_only>false</once_only>
    <maximum_wait>PT30M</maximum_wait>
</Broadcast>
<Broadcast_Parameter>
    <broadcast_id>ao1</broadcast_id>
    <parameter_name>file_path</parameter_name>
    <parameter_value>c:\IFS\Scheduling\broadcast</parameter_value>
</Broadcast_Parameter>

Other parameter examples.

<Broadcast_Parameter>
    <broadcast_id>Email_Broadcast_Output</broadcast_id>
    <parameter_name>to_address</parameter_name>
    <parameter_value>admin@xxx.com</parameter_value>
</Broadcast_Parameter>
<Broadcast_Parameter>
    <broadcast_id>1</broadcast_id>
    <parameter_name>data_tables</parameter_name>
    <parameter_value>Activity,Activity_Status</parameter_value>
</Broadcast>
<Broadcast_Parameter>
    <broadcast_id>1</broadcast_id>
    <parameter_name>filename_format</parameter_name>
    <parameter_value>GUID</parameter_value>
</Broadcast_Parameter>
<Broadcast_Parameter>
    <broadcast_id>1</broadcast_id>
    <parameter_name>required_tables</parameter_name>
    <parameter_value>Plan,Allocation</parameter_value>
</Broadcast_Parameter>
<Broadcast_Parameter>
    <broadcast_id>1</broadcast_id>
    <parameter_name>excluded_tables</parameter_name>
    <parameter_value>Plan,Allocation</parameter_value>
</Broadcast_Parameter>

Entity: Broadcast_Type (Lookup)

This defines the various methods of broadcasting plans to external applications and users.

Attribute NameData TypeDescriptionPKM/O
idString(32)Unique id.

Allowed Values: EMAIL, FILE, FTP, INTERNAL, POLLING, WCF, WEBSERVICE, REST
PKM
descriptionString(100)Broadcast type description.O

Default Entries

IDDescription
DATABASEPlan stored on a database
EMAILEmail data plan
FILEProduce plan as flat file
FTPFile transfer plan
POLLINGPlan sent in response to remoting call
RESTPlan output to RESTful endpoint
WCFPlan output to a WCF service
WEBSERVICEPlan output to a webservice

Entity: Calendar (Input)

This defines a calendar which can be applied to the SLAs of an activity. The slopes on the SLA will only apply during active calendar periods. The calendar consists of a weekly pattern, defined as Calendar_Item rows, plus overrides for particular days, e.g. bank holidays. These are defined as Special_Day and Special_Day_Item rows.

For example, suppose an activity has a primary SLA starting on Friday morning at 9am and finishing at 5pm Monday night (80 hours in total). Suppose the SLA has a slope from 1 to 0.9 during this time. If we say the activity has a base value of 1000, then at 9am on Monday morning we find ourselves 90% through the SLA period, so the value of the activity would be 910.

However if the activity can only be done during normal weekday working (for example, due to resource shifts or the activity's availabilities), in reality only half of the available time has been used up. To allow for this we can apply a calendar to say that the SLA slope only applies between 9am-5pm Monday-Friday. This would mean that only 16 hours of the total 80 hours counts as available time, and for the remaining time the SLA is 'suspended' without changing its value. As a result on Monday morning it is treated as still being only half way through the SLA period, so is still worth 950.

Note

Calendars do not affect the availability of the activity - they only impact how the slope of the activity SLA changes over time.

Attribute NameData TypeDescriptionPKM/O
idString(32)Defines a unique id for the calendar.PKM
descriptionString(2000)Provides a description of the calendar.O
time_zoneString(32)The time zone to use when applying the calendar. If not supplied the local server time zone will be used.O

Entity: Calendar_Item (Input)

This defines the general pattern of active periods for the calendar.

Attribute NameData TypeDescriptionPKM/O
calendar_idString(32)Specifies the id of the calendar this belongs to.

Foreign Key: Calendar
PKM
day_of_weekIntegerSpecifies the day of week for this active period (0=Sunday, 6=Saturday).PKM
start_timeTime SpanSpecifies the start time for this active period.PKM
end_timeTime SpanSpecifies the end time for this active period.M

Entity: Capacity (Input)

This defines the parts capacity that can be carried by a resource. It consists of an overall maximum volume and weight that can be carried, a default maximum part quantity, and individual capacities for particular parts.

Attribute NameData TypeDescriptionPKM/O
idString(32)Defines the unique id for this capacity.PKM
descriptionString(2000)Provides a description for this capacity.O
maximum_part_quantityIntegerSpecifies the default maximum quantity of a part that can be carried in this capacity.

Notes: If this is set to 0 then only parts specified via a Capacity_Part record can be carried in this capacity.
O
maximum_volumeDoubleSpecifies the overall maximum part volume that can be carried in this capacity.

Notes: If the maximum volume is null then there is no overall maximum volume.
O
maximum_weightDoubleSpecifies the overall maximum part weight that can be carried in this capacity. This is calculated separately to volume.

Notes: If the maximum weight is null then there is no overall maximum weight.
O

Entity: Capacity_Part (Input)

This defines an override for the maximum quantity of stock that can be carried for a particular part. If the maximum quantity is null then there is no maximum. If exclusivity required is set to true then the resource must carry only this part for this capacity requirement.

Warning

When defining capacities for specific parts no more than 20 parts should have specific part limits.

Attribute NameData TypeDescriptionPKM/O
capacity_idString(32)Defines the unique id for the capacity.

Foreign Key: Capacity
PKM
part_idString(32)Specifies the Unique identifier for the part to which this capacity applies.

Foreign Key: Part
PKM
exclusivity_requiredBooleanIndicates whether the part must be carried for the capacity requirement.M(false)
maximum_quantityIntegerDefines the maximum quantity of stock to be carried.O

Entity: Categorisation (Input)

Represents a high-level grouping or classification of categories, serving as a parent entity for organising them into meaningful groups. This can be used for filtering or grouping resources and activities in the Scheduling Workbench, or for defining rules that can restrict how the categories can be scheduled in parallel with each other.

Attribute NameData TypeDescriptionPKM/O
idString(32)A unique identifier for the categorisation.PKM
descriptionString(2000)A description of the categorisation.O

Entity: Category (Input)

Defines specific items or entities within a categorisation. Activities and resources can belong to up to one category per categorisation.

Attribute NameData TypeDescriptionPKM/O
categorisation_idString(32)The id of the categorisation this category belongs to.

Foreign Key: Categorisation
PKM
idString(32)A unique identifier for the category.PKM
descriptionString(2000)A description of the category.O

Entity: Category_Custom_Metric (Input)

Defines the value a custom metric has for activities belonging to a particular category.

Attribute NameData TypeDescriptionPKM/O
categorisation_idString(32)The id of the categorisation to link to this custom metric.

Foreign Key: Category
PKM
category_idString(32)The id of the category to link to this custom metric.

Foreign Key: Category
PKM
custom_metric_idString(32)The id of the custom metric to associate with a categorisation and category.

Foreign Key: Custom_Metric
PKM
metric_valueDoubleA value to represent the custom metric for the category.M

Entity: Child_Schedule (Input)

Defines the child schedule datasets to be created when using the DISTRIBUTED or DISTRIBUTED_STATIC process types. A scheduling problem using this process type can have multiple child datasets attached to it which are processed according to different settings. Input data is always sent into the parent dataset, and the system will automatically determine which child datasets need to be updated as a result of any change.

Note

Distributed scheduling is only available when the DSE is running in SEGMENT mode.

For 'DISTRIBUTED', exactly one child schedule of process type DYNAMIC, APPOINTMENT or REACTIVE must be specified. This should have no schedule start time meaning it is taken from the time on the parent dataset. A schedule end time and potentially an appointment window duration should be specified. This schedule will always be updated in real time.

For 'DISTRIBUTED_STATIC' there should be no dynamic child schedules.

The remaining child schedules must all be STATIC. For 'DISTRIBUTED' there may be zero, one or many of these datasets. For 'DISTRIBUTED_STATIC' there must be at least one. It is possible to get the static schedules to be updated on a periodic basis. For example, the child datasets could be configured to have a week-long dynamic schedule, a month-long static schedule that refreshes once per hour, and a year-long static schedule that generates only once per day.

By default, static schedules will not be updated, so they will only be produced once per LOAD. If updates are required, then the attribute ‘maximum_refresh_frequency’ should be set on the Child_Schedule row. This only applies for the 'DISTRIBUTED' process type. This sets a minimum elapsed time from the current schedule time when the schedule was previously updated to the current schedule time when it is refreshed. For example, if the parameter was set to 4 hours, and the initial static schedule was created at 5am, then it wouldn’t begin to create another until the schedule time reaches 9am

Note

The 'profile_id' attribute can be used against the 'dynamic' child dataset, and this profile will then be used by the DSE and other services when processing this dataset. Note that when generating plans for the static child datasets, the DSE will always use the profile associated with the parent dataset, since the DSE does not process the static datasets directly.

Attribute NameData TypeDescriptionPKM/O
child_dataset_idString(32)Dataset id for the child dataset.PKM
process_typeString(32)Identifies a particular process to be executed for this child schedule.

Notes: See Input_Reference.process_type for more information.

Allowed Values: DYNAMIC, APPOINTMENT, REACTIVE, STATIC
M
appointment_window_durationTime SpanThis specifies the duration of the appointment window. This is in addition to the scheduling window and starts after the scheduling window ends.

Notes: See Input_Reference.appointment_window_duration for more information.
O
maximum_refresh_frequencyTime SpanSpecifies how often a static child schedule is updated.

Notes: If continuous updates are required this should be set to 0 seconds. By default, static schedules are not updated.

Notes: Only applies for the 'DISTRIBUTED' process type.
O
profile_idString(32)The profile of the configuration parameters to use for the input.

Notes: This is intended only for overriding the profile used for the dynamic child dataset.
O
schedule_end_timeDate TimeThe child schedule end time.

Notes: This must be within the scheduling period of the parent dataset. If not specified the parent's schedule end time will be used.
O
schedule_start_timeDate TimeThe child schedule start time.

Notes: This must be within the scheduling period of the parent dataset. If not specified the parent's schedule start time will be used.
O

Entity: Contract (Input)

Contracts can be used for display purposes on the Scheduling Workbench, and are also used in Target-Based Scheduling and the Schedule Archive reporting tables.

Attribute NameData TypeDescriptionPKM/O
idString(32)Defines the unique id for the contract.PKM
descriptionString(2000)Provides a description of this contract.O

Entity: Custom_Exception (Input)

This defines custom exceptions to be used in the Scheduling Workbench.

Warning

The use of custom exceptions should be limited. No more than 10 custom exceptions should be defined per scheduling problem.

Note

The Dynamic Scheduling Engine and Scheduling Query Manager need to be restarted in order for the custom exception data to show up.

Attribute NameData TypeDescriptionPKM/O
idString(32)Defines the unique id for the custom exception.PKM
schedule_exception_type_idIntegerDefines the unique id for the exception type of this custom exception.

Notes: Custom exception types must be > 1000. Exceptions between 0-999 are reserved for internal use.
M
activity_idString(32)Provides the id of the activity that this exception relates to.

Foreign Key: Activity
O
resource_idString(32)Provides the id of the resource that this exception relates to.

Foreign Key: Resources
O
visit_idIntegerProvides the id of the visit that this exception relates to.O

Entity: Custom_Exception_Data (Input)

This defines the custom exceptions data to be used in the Scheduling Workbench.

Attribute NameData TypeDescriptionPKM/O
custom_exception_idString(32)Specifies the id of the custom exception this relates to.

Foreign Key: Custom_Exception
PKM
sequenceIntegerSpecifies the sequence in which the data columns will be displayed.PKM(1)
labelString(40)Defines the label to be used.M
valueString(256)Defines the value for the label.M

Entity: Custom_Metric (Input)

This defines a custom metric that can be specified against activities when used with the 'SHIFT_CUSTOM_METRIC' rule type, within the 'SHIFT_CAPACITY' rule category. The rule defines a limit to the total metric value that is permitted within a shift or within a reference period, and each activity may have a value assigned to it for the metric that can be used as its contribution to the rule. See the Rule_Type table for further details on setting up a custom metric rule.

Note

If a categorisation id value is specified against a custom metric, then this custom metric should only apply to categorisations (not activities). Any Activity_Custom_Metric or Activity_Type_Custom_Metric rows associated with this custom metric will be considered invalid.

Attribute NameData TypeDescriptionPKM/O
idString(32)Defines a unique id for the custom metric.PKM
default_valueDoubleThe default value to be used for each activity where its metric value is not otherwise specified.M
categorisation_idString(32)Specifies the id of the categorisation to associate this custom metric with.

Foreign Key: Categorisation
O
descriptionString(2000)A description of the custom metric.O

Entity: Custom_URL (Input)

This defines a custom URL link to be used by applications. Customer URLs can be linked to activities and/or resources, and the URL link will show on the activity or resource details panel as appropriate.

The URL is defined via a combination of URL_String and URL_Parameter records. We advise that care is taken in setting up the URL, using a method that minimises the amount of data that needs to be sent into the system. There are examples below of the options available.

For simple linking of a custom url to an entity, any of the Activity Id, Resource Id, Location Id, Activity Type or Resource ID can be supplied on the Custom_URL table. Where possible, it is advised to use Activity_Type and/or Resource_Type links, and use the URL_Parameter to customise the link to the individual activity or resource.

Alternatively, the custom url id can be linked to either an Activity, Activity Type, Resource, Resource Type or Location by adding a record in the respective 'linking' table, e.g. Activity_Custom_URL. This way of setting up custom urls is particularly recommended when the Activity_Type / Resource_Type link cannot be used. A single custom url record can be added to the Custom_URL table and a record per activity can be added to the Activity_Custom_URL table. Custom parameters can be set within the linking table to be used within the URL.

Warning

The use of custom URLs should be limited, especially where individual Custom_URL rows are added for each activity. The loading and transfer of this data is additional overhead placed on the scheduling system and excessive use may have performance implications.

We advise that the use of custom URLs is kept to a maximum of 10 per activity or resource, for performance and display reasons. If Custom URL records are being created individually for each activity, we recommend a maximum of 4 per activity. Any performance issues resulting from these limits being exceeded will not be treated as software related issues.

Note

The 'navigable_target_name' attribute can be used to configure how and when new windows are opened when a user clicks on the link. Any urls with the same target name will open in the same window (or tab), while a new tab will be used for each different target name.

If no target is specified then by default a new window will open each time the link is clicked. This behaviour can be changed via the parameter 'CustomURLsSingleDefaultWindow', to open all links with no target specified in the same window or tab.

Note

By default, custom URL links have the 'noreferrer' and 'nofollow' attributes set. However, for links with a navigable_target_name, or where the parameter 'CustomURLsSingleDefaultWindow' is set to true, only the 'nofollow' attribute is set. This is because the 'noreferrer' attribute can prevent the target from being applied correctly on some browsers.

Attribute NameData TypeDescriptionPKM/O
idString(32)Defines a unique id for the custom url.PKM
nameString(100)Provides the domain description.M
activity_idString(32)Specifies the id of the activity that this url relates to.

Foreign Key: Activity

Obsolete: Activity_Custom_URL must now be used to link an activity to a custom url.
O
activity_type_idString(32)Specifies the id of the activity type that this url relates to.

Foreign Key: Activity_Type

Obsolete: Activity_Type_Custom_URL must now be used to link an activity type to a custom url.
O
custom_actionString(100)Specifies where the URL link should be located in the Scheduling Workbench.

Allowed Values: ACTIVITY_DETAIL_FORM = Activity Detail Form.
RESOURCE_DETAIL_FORM = Resource Detail Form.

O
location_idString(32)Specifies the id of the location that this url relates to.

Foreign Key: Location

Obsolete: Location custom url is not supported anymore.
O
navigable_target_nameString(32)Specifies the name of the target to use when opening this url.

Notes: This must not start with '_'
O
resource_idString(32)Specifies the id of the resource that this url relates to.

Foreign Key: Resources

Obsolete: Resource_Custom_URL must now be used to link a resource to a custom url.
O
resource_type_idString(32)Specifies the id of the resource type that this url relates to.

Foreign Key: Resource_Type

Obsolete: Resource_Type_Custom_URL must now be used to link a resource type to a custom url.
O

Examples

This example provides a custom URL link for all activities of type ACT_TYPE1, with the url set to 'http://sample-url.com?id={activityId}&lang=en'.

<Custom_URL>
        <id>urlActivities</id>
        <name>Prepare work order</name>
        <custom_action>ACTIVITY_DETAIL_FORM</custom_action>
        <activity_type_id>ACT_TYPE1</activity_type_id>
      </Custom_URL>
      <URL_String>
        <custom_url_id>urlActivities</custom_url_id>
        <sequence>1</sequence>
        <string_value>http://sample-url.com?id=</string_value>
      </URL_String>
      <URL_Parameter>
        <custom_url_id>urlActivities</custom_url_id>
        <sequence>2</sequence>
        <parameter_value>id</parameter_value>
        <parameter_value_table>Activity</parameter_value_table>
      </URL_Parameter>
      <URL_String>
        <custom_url_id>urlActivities</custom_url_id>
        <sequence>3</sequence>
        <string_value>&lang=en</string_value>
      </URL_String>

This example provides a custom URL link for each activity linked to the URL, with the url set to 'http://sample-url.com?skillId={skillId}'. Here the skillId comes from a custom parameter setting.

<Activity_Custom_URL>
        <activity_id>SVC_1</activity_id>
        <custom_url_id>urlActivities</custom_url_id>
        <custom_parameter_value1>skill_1</custom_parameter_value1>
      </Activity_Custom_URL>
      <Custom_URL>
        <id>urlActivities</id>
        <name>Prepare work order</name>
        <custom_action>ACTIVITY_DETAIL_FORM</custom_action>
      </Custom_URL>
      <URL_String>
        <custom_url_id>urlActivities</custom_url_id>
        <sequence>1</sequence>
        <string_value>http://sample-url.com?skillId=</string_value>
      </URL_String>
      <URL_Parameter>
        <custom_url_id>urlActivities</custom_url_id>
        <sequence>2</sequence>
        <custom_parameter>1</custom_parameter>
      </URL_Parameter>

Entity: Customer (Input)

Customers can be used for display purposes on the Scheduling Workbench, and are also used in Target-Based Scheduling and the Schedule Archive reporting tables.

Warning

Note that a customer field is referenced on a few tables (namely Activity and Activity_Type) as customer and not customer_id, as the standard naming format of columns that reference parent tables is. This does not signify any differences - it is for technical reasons that it is different.

Attribute NameData TypeDescriptionPKM/O
idString(100)Defines a unique id for the customer.PKM
descriptionString(2000)Provides a description for this customer.O

Entity: Dataset (Data)

This is used to define discrete sets of data for scheduling. By default there is one dataset called Default. Where installations wish to schedule multiple sets of data as different scheduling problems then a separate dataset must be used for each. The dataset id only has to be specified as part of the Input_Reference and not included in the data for each entity input into the system.

Datasets are also used internally by the software. These datasets will not normally be visible to the end user and data associated with these internal datasets must never be altered manually. Child datasets will be created automatically with a dataset_type of ‘SEGMENT’, ‘OBSOLETE’ and are used internally by the applications.

Note

The ‘SCHED_ADMIN’ is installed by default and should not be removed.

Note

For the attribute Dataset.running_state the Scheduling Administration Service removes PAUSED and EXPIRED datasets based on two separate timers. For example, a PAUSED dataset might be removed after being inactive for say 2 weeks, while an EXPIRED dataset could be removed immediately or perhaps after a day or so to allow for backup. The time would be from the Dataset.last_update_datetime. There is an additional running_state of DELETING. This is used to mark a dataset for deletion after it has been EXPIRED for the required length of time.

Attribute NameData TypeDescriptionPKM/O
idString(32)Unique id for the data set.

Notes: Reserved ids 'SCHED_ADMIN'. Value set by EA when the dataset type = 'COMPLETE'. Otherwise it is a guid set internally.
PKM
organisation_idIntegerThe organisation this dataset belongs to.PKM(1)
dataset_classString(32)This is only for internal use and will be populated automatically.

Allowed Values: ADMIN, SCHEDULING, WISE, WISE_AUTO, PORTAL, MODELLING
M(SCHEDULING)
dataset_typeString(32)This is only for internal use and will be populated automatically.

Allowed Values: COMPLETE, DELETING, EXPIRED, OBSOLETE, SEGMENT, MASTER, ATOMIC
M
last_update_datetimeDate TimeUsed internally to indicate when there was last an update for this dataset.M
running_stateString(32)This is used to control the processing of datasets by the DSE for different types of operation.

Allowed Values: RUNNING, GENERATED, PAUSED, EXPIRED, DELETING, NO_DATA

Notes: In a normal dynamic situation a dataset will always be in a ‘RUNNING’ state. If the process_type on the INPUT_REFERENCE is STATIC, PLAN or MANUAL then only LOAD data is expected, so once the DSE has finished processing the data it will drop the dataset and mark it as PAUSED, to make sure it is not reprocessed. If a new LOAD comes in for this dataset, the running_state will be updated back to RUNNING. If a temporary dataset has been created for some reason (e.g. DST, partial reschedule) then the dataset can be marked as EXPIRED once it is no longer needed.
M(NO_DATA)
alias_idString(100)Internal identifier to be populated by applications when dataset_id is provided.

Notes: For internal use only. This will contain a readable identifier for when dataset_type = SEGMENT, OBSOLETE
O
dataset_idString(32)The id of the parent dataset which must also be of dataset_type = 'COMPLETE'

Notes: For internal use only. Only used where dataset_type is not ‘COMPLETE’.
O
descriptionString(2000)Name and description.O
display_context_idString(32)Provides the context to determine which list should be used when viewing in the Scheduling Workbench.

Notes: This should match the id of a Display_Context row defined in the system data
O
external_idString(80)An external id for the dataset.O
footprintDoubleAn estimate of the size of the dataset as a scheduling problem.O
process_typeString(32)Identifies a particular process to be executed for this data.

Notes: For internal use only. Updated on a LOAD input. See Input_Reference.process_type for more information.
O
profile_idString(32)The profile of the configuration parameters to use for the input set of reference data.O

Default Entries

IDDescription
SCHED_ADMINInternal dataset only

Entity: Dataset_Segment_Mapping (Input)

For internal use only.

Entity: Dataset_Status (System)

For internal use only.

Entity: Depot_Transfer (Input)

Depot transfers allow for parts to be transferred from one depot to another (from a parent depot to a child depot). The transfer will have an associated time delay and cost.

Note

Depot transfers do not allow for chaining transfers together. A part will only be transferred from the parent to the child if needed at the child depot, not if it can be transferred from the child depot elsewhere.

Note

Depot transfers should not be used with reusable parts.

Attribute NameData TypeDescriptionPKM/O
activity_id_childString(32)Specifies a unique identifier for the depot the part is being transferred to.

Foreign Key: Activity

Notes: Should not be the same as activity_id_parent.
PKM
activity_id_parentString(32)Specifies a unique identifier for the depot the part is being transferred from.

Foreign Key: Activity

Notes: Should not be the same as activity_id_child.
PKM
transfer_settings_idString(32)Specifies a unique identifier for the transfer settings used.

Foreign Key: Depot_Transfer_Settings
M

Entity: Depot_Transfer_Settings (Input)

Depot transfer settings determine which parts can be transferred between two depots, and what the rules are around how long it will take to transfer the part and what this will cost. Default transfer rules can be used if not explicitly defined for each part.

Attribute NameData TypeDescriptionPKM/O
idString(32)Defines a unique id for the depot transfer settings.PKM
apply_to_allBooleanDefines whether the rule set should apply to all parts held at the parent depot, or only to the parts explicitly specified by Part_Transfer_Settings.M(false)
descriptionString(2000)Describes the depot transfer settings.O
transfer_rule_set_idString(32)Defines a unique id for the default transfer rule set to use.

Foreign Key: Transfer_Rule_Set
O

Entity: Distance_Penalty (Input)

This details the penalties that are linked to a given travel cost model. See 'Travel Cost Model' for details.

Attribute NameData TypeDescriptionPKM/O
distance_penalty_type_idString(32)Specifies the type of the travel penalty

Foreign Key: Distance_Penalty_Type

Allowed Values: JOURNEY_DISTANCE_KM, SHIFT_TRAVEL_DISTANCE_KM
PKM
threshold_valueDoubleSpecifies the threshold distance (km) from which the penalty is applied.PKM
travel_cost_model_idString(32)Defines the id of the travel cost model this penalty relates to.

Foreign Key: Travel_Cost_Model
PKM
additional_cost_kmDoubleSpecifies the additional cost per km to apply once the threshold value is exceeded.O
additional_journey_timeTime SpanSpecifies the additional journey time to apply once the threshold value is exceeded.O
penaltyDoubleDefines a one off penalty to apply for exceeding the threshold value.O

Entity: Distance_Penalty_Type (Lookup)

Lists the different types of travel penalty that can be applied.

Attribute NameData TypeDescriptionPKM/O
idString(32)A unique id.PKM
message_idIntegerThe id of the message describing this penalty type.O

Entity: Event_Type (Lookup)

DSE internal lookup table to record types of events which occur during the operation of an external application and which impact the schedule.

  • Resource On. Resource has started their shift.
  • Resource Off. Resource has finished work for their current shift.
  • Resource Fix. Provides the system with the current real-time position of the resource. Either a location id or latitude and longitude co-ordinates should be provided.
  • Break On. Resource has started a break.
  • Break Off. Resource has completed their break.
  • Attention On. Resource requires attention. This will prompt the 'Resource Attention' exception to be raised for this resource.
  • Attention Off. Resource no longer requires attention.
Attribute NameData TypeDescriptionPKM/O
idString(32)Unique identifier.

Allowed Values: RO = Resource On, RF = Resource Off, FIX = Co-ordinate fix, BO = Break On, BF = Break Off, AO = Attention On, AF = Attention Off
PKM
descriptionString(100)Event Type descriptionM

Entity: Expl_Split_Resource_Order (Input)

Defines the order of preference of resources to choose from when splitting an activity for an explanation request.

Note

See Split_Resource_Order for more details of how this ordering is used.

Attribute NameData TypeDescriptionPKM/O
activity_idString(32)Specifies the id of the activity this relates to.

Foreign Key: Activity
PKM
explanation_request_idString(32)Specifies the id of the explanation request this relates to.

Foreign Key: Explanation_Request
PKM
sequenceIntegerDefines the position in the sequence.PKM
resource_idString(32)Specifies the id of the resource this relates to.

Foreign Key: Resources
M

Entity: Explanation_Message_Param (Output)

Stores the parameters to be used in a descriptive message to go with an Explanation_Outcome row.

Attribute NameData TypeDescriptionPKM/O
explanation_outcome_idString(32)The id of the Explanation_Outcome this message links to

Foreign Key: Explanation_Outcome_Message
PKM
explanation_response_idString(32)The id of the response this message is associated with

Foreign Key: Explanation_Outcome_Message
PKM
message_sequenceIntegerRepresents the order of the messages belonging to the outcome.

Foreign Key: Explanation_Outcome_Message
PKM
parameter_sequenceIntegerRepresents the order in which the parameters are used in the messagePKM
parameter_typeString(32)The type of the parameter, can be both generic types such as STRING and INTEGER, or internal types such as RESOURCE_ID or ACTIVITY_IDM(STRING)
plan_idInt64Defines the id for the plan the outcome is on

Foreign Key: Plan
M
valueString(200)The value of the parameter, to be shown in the messageM

Entity: Explanation_Outcome (Output)

Represents the result of an attempt that has been made for an Explanation_Request. The Schedule Explainability Service will attempt to schedule the requested activity in multiple positions within the schedule. This table gives an overview of the result from the attempt made for the chosen position.

Note

Since the activity may have linked activities, multiple activities may need to be allocated as part of the attempt. The specific details about the attempted allocations are stored in the Explanation_Outcome_Alloc table.

Attribute NameData TypeDescriptionPKM/O
explanation_response_idString(32)The id of the response this attempt is associated with

Foreign Key: Explanation_Response
PKM
idString(32)A unique id for the attemptPKM
explanation_result_type_idIntegerThe explanation result type, specifying if an attempt succeeded or why it failed

Foreign Key: Explanation_Result_Type
M
plan_idInt64Defines the id for the plan the outcome is on

Foreign Key: Plan
M
reason_level_idIntegerThe reason for the result of the attempt, either 'Success' or the level at which the attempt failed

Notes: Possible values: 0 = Success, 10 = Visit, 20 = Shift, 30 = Resource, 40 = Schedule
M
failing_activity_idString(32)The id of the activity that caused the attempt to failO
failing_activity_startDate TimeThe scheduled start time of the activity that caused the attempt to failO
failing_resource_idString(32)The id of the resource that caused the attempt to failO
failing_shift_start_datetimeDate TimeThe start time of the shift that caused the attempt to failO
failing_visit_idIntegerThe visit id of the actvity that caused the attempt to failO
plan_margin_differenceDoubleThe change to the overall plan margin as a result of this attemptO

Entity: Explanation_Outcome_Alloc (Output)

Represents the details of the allocations that make up an individual attempt as part of an explanation request. For example, an attempt may consist of allocating two linked activities.

Attribute NameData TypeDescriptionPKM/O
explanation_outcome_idString(32)The id of the Explanation_Outcome this allocation links to

Foreign Key: Explanation_Outcome
PKM
explanation_response_idString(32)The id of the response this attempt is associated with

Foreign Key: Explanation_Outcome, Explanation_Response
PKM
idString(32)A unique id for the attemptPKM
activity_idString(32)The id of the activity being allocatedM
plan_idInt64Defines the id for the plan the outcome is on

Foreign Key: Plan
M
reason_type_idIntegerThe reason type id to explain why this allocation was includedM
activity_startDate TimeThe time at which the activity is scheduled to start atO
rankIntegerThe visit index within the route being allocated toO
resource_idString(32)The id of the resource being allocated toO
shift_start_datetimeDate TimeThe start time of the shift the activity is being allocated intoO
visit_idIntegerThe visit id for the activity being allocatedO

Entity: Explanation_Outcome_Message (Output)

Represents a message belonging to an Explanation_Outcome.

Attribute NameData TypeDescriptionPKM/O
explanation_outcome_idString(32)The id of the Explanation_Outcome this message links to

Foreign Key: Explanation_Outcome
PKM
explanation_response_idString(32)The id of the response this message is associated with

Foreign Key: Explanation_Outcome
PKM
sequenceIntegerRepresents the order of the messages belonging to the outcome.PKM
message_idIntegerThe message id for a description of extra details about the failureM
plan_idInt64Defines the id for the plan the outcome is on

Foreign Key: Plan
M

Entity: Explanation_Request (Input)

Represents a request made to the Schedule Explainability Service.

Attribute NameData TypeDescriptionPKM/O
idString(32)A unique id for the requestPKM
explanation_typeString(11)Specifies whether this is an explanation or validation request

Allowed Values: EXPLANATION, VALIDATION
M(EXPLANATION)
linked_call_attemptsIntegerThe number of attempts the Schedule Explanation Service will make at allocating linked calls for each position tried for the requested activityM(3)
linked_deallocation_optionString(20)The option to use when deciding which linked calls to deallocate (to be rescheduled as part of the explanation process)

Notes: Permitted values: DEALLOCATE_ALL, DEALLOCATE_FORCED, DEALLOCATE_NONE

Notes: DEALLOCATE_ALL will remove all linked calls and calls which must be scheduled along with the requested activity. DEALLOCATE_FORCED will remove co-requisites, calls the requested activity is a pre-requisite of and calls which must be scheduled along with the requested activity. DEALLOCATE_NONE will not remove any activities other than the requested activity.
M(DEALLOCATE_ALL)
plan_idInt64The id for the plan the request will be processed againstM
requested_at_datetimeDate TimeThe time at which the request was madeM
activity_idString(32)The id of the activity the request is being made for

Foreign Key: Activity
O
end_datetime_rangeDate TimeThe end time of the date range specified for the requestO
positionIntegerThe position of the requestO
resource_idString(32)The id of the resource the request is being made for

Foreign Key: Resources
O
start_datetime_rangeDate TimeThe start time of the date range specified for the requestO

Entity: Explanation_Request_Change (Input)

Represents a change request made to the Schedule Explainability Service.

Attribute NameData TypeDescriptionPKM/O
activity_idString(32)The id of the activity the change is being made for

Foreign Key: Activity
PKM
explanation_request_idString(32)The id of the request this change is associated with

Foreign Key: Explanation_Request
PKM
visit_idIntegerThe id of the visit this relates toPKM
resource_idString(32)The id of the resource the change is being made for

Foreign Key: Resources
M
base_durationTime SpanThe base duration of the activityO
fixed_date_timeDate TimeThe fixed date time of the activityO
override_durationTime SpanThe overridden duration of the activityO
shift_start_timeDate TimeThe start date time of the shiftO

Entity: Explanation_Response (Output)

Represents the response to a request made to the Schedule Explainability Service.

Attribute NameData TypeDescriptionPKM/O
idString(32)A unique id for the responsePKM
explanation_request_idString(32)The id of the request this response is associated withM
explanation_typeString(11)Specifies whether this is an explanation or validation request

Allowed Values: EXPLANATION, VALIDATION
M(EXPLANATION)
plan_idInt64Defines the id for the plan the response is on

Foreign Key: Plan
M
requested_plan_idInt64The id for the plan the request was made against

Foreign Key: Plan
M
response_statusIntegerRepresents the status of the responseM
activity_idString(32)The id of the activity the request was made forO

Entity: Explanation_Result_Type (Lookup)

Represents the types of reasons why an allocation attempt failed, or if it was successful. Used by the Schedule Explainability Service when explaining the results of various allocation attempts.

Attribute NameData TypeDescriptionPKM/O
idIntegerA unique id for the result typePKM
message_idIntegerThe message id for the message giving a description or the result typeM

Entity: External_Change_Req_Resource (Input)

For an 'External_Change_Request', this table returns all resources that the external change request applies to, when the change applies to multiple resources (i.e. it is a bulk change).

Attribute NameData TypeDescriptionPKM/O
external_change_request_idString(32)The unique identifier of the external change request this relates to.

Foreign Key: External_Change_Request
PKM
resource_idString(32)The unique identifier of the resource that this change should apply to.

Foreign Key: Resources
PKM
external_change_type_idString(32)A unique identifier of the external change type this relates to.

Foreign Key: External_Change_Type
M

Entity: External_Change_Request (Input)

An 'External_Change_Request' is sent when a workbench user requests to make a change to the input data based on one of the supported 'External_Change_Type' options. The request row itself, along with related child data, will contain all the information requested by the integration in order to make the change. Note that no changes are made directly in PSO based on this request, it is expected that the change request will be handled by the integration, and the integration will then update the PSO input data as appropriate.

Attribute NameData TypeDescriptionPKM/O
idString(32)The unique identifier for each external change request.PKM
external_change_type_idString(32)The unique identifier of the external change type associated with the request.

Foreign Key: External_Change_Type
M
activity_idString(32)The unique identifier of the activity to which this request applies.

Foreign Key: Activity
O
datetime_endDate TimeThe end time selected by the user, if appropriate (e.g. when requesting to create a private activity, the end time of the activity).O
datetime_startDate TimeThe start time selected by the user, if appropriate (e.g. when requesting to create a private activity, the start time of the activity).O
descriptionString(2000)The description provided by the user, if appropriate (e.g. when requesting to create a private activity, a description for the private activity).O
resource_idString(32)The unique identifier of the resource to which this request applies.

Foreign Key: Resources
O

Entity: External_Change_Request_Item (Input)

When an 'External_Change_Request' is sent, this table will include all user selected items, based on the 'External_Change_Select_Item' records associated with the change type.

Attribute NameData TypeDescriptionPKM/O
external_change_request_idString(32)The unique identifier of the external change request this relates to.

Foreign Key: External_Change_Request
PKM
external_change_select_idString(32)The unique identifier of the external change selection this relates to.PKM
sequenceIntegerThe sequence value of the selected item.PKM
external_change_type_idString(32)The unique identifier of the external change type this relates to.

Foreign Key: External_Change_Type
M
valueString(100)The actual value of the selected item.M

Entity: External_Change_Select (Input)

This table and the related 'External_Change_Select_Item' table are used to define options that the user must select from when making a request of this type. For example, when creating a private activity, it may be required that the user select a reason for the private activity being needed (sickness, holiday etc.). An External_Change_Select row should then be included, with 'External_Change_Select_Item' rows listing the possible options.

Attribute NameData TypeDescriptionPKM/O
external_change_type_idString(32)The unique identifier of the external change type associated with the selection.

Foreign Key: External_Change_Type
PKM
idString(32)The unique identifier for each external change selection.PKM
headerString(100)The header or title that will be displayed to the user for this selection.M
sequenceIntegerIf multiple external change select rows are needed for the same change type, the sequence will determine the order in which the selection drop-downs are displayed.M(1)

Entity: External_Change_Select_Item (Input)

This table lists the items that can be selected for each specified 'External_Change_Select'. For example, if the user is required to select a reason for creating a private activity, this table would list the possible reasons to select from (Sickness, Holiday etc.).

Attribute NameData TypeDescriptionPKM/O
external_change_select_idString(32)The unique identifier of the external change select this item relates to.

Foreign Key: External_Change_Select
PKM
external_change_type_idString(32)The unique identifier of the external change type this relates to.

Foreign Key: External_Change_Select
PKM
sequenceIntegerThe sequence order to determine where this item should appear in the drop-down of selectable items.PKM
labelString(100)The label text to display for this item in the selection drop-down.M
valueString(100)The item value, which will be returned if this item is selected when a request is made.M

Entity: External_Change_Type (Input)

This table is used to indicate which external change types are supported by the integration. The id must be one of the values supported by PSO, which currently includes 'CREATE_PRIVATE' and 'DELETE_PRIVATE', used to request the creation and deletion of private activities. If a change type is supported, then a workbench user will be given the option to make these requests (provided they have permission), and this will result in an 'External_Change_Request' record being sent back to the integration via a 'WORKBENCH' broadcast. Note that this broadcast must also be in place so that the request can be sent to the integration, instead of to the PSO system. The integration should then process these requests, make any changes in the back-end system, and send the resulting change to the input data through to PSO. No changes will be made to PSO directly as a result of the request.

Attribute NameData TypeDescriptionPKM/O
idString(32)A unique id for the external change type.

Allowed Values: CREATE_PRIVATE, DELETE_PRIVATE
PKM
allow_bulkBooleanIndicates whether bulk operation are supported by the integration for this change type. For example, to create private activities for multiple resources at once.M(false)
supportedBooleanIndicates if the specific external change type is supported by the integration.M(true)

Entity: Fuel_Type (Input)

Defines the type of fuel used in the vehicle.

Attribute NameData TypeDescriptionPKM/O
idString(32)A unique id for the fuel typePKM
descriptionString(2000)Description of the type of fuel used in the vehicleO

Entity: Icon (Input)

An icon to be used when displaying data in the application. This can currently be linked to resource types and activity types.

Attribute NameData TypeDescriptionPKM/O
idString(32)A unique id for the icon.PKM
icon_type_idString(32)The type of the icon.

Foreign Key: Icon_Type

Allowed Values: DEFAULT, EXTERNAL_URL
M
pathString(2000)The reference path for the icon (either the icon name for DEFAULT type icons, or the url for EXTERNAL_URL type).M

Entity: Icon_Type (Lookup)

A lookup table of icon types.

Attribute NameData TypeDescriptionPKM/O
idString(32)A unique id of the icon type.PKM
message_idIntegerA description for this icon type.M

Entity: Incentive (Input)

Incentives add value to the total plan margin when activities are scheduled to resources that meet the conditions of the incentive being applied. The conditions relate to sets of skills that the resource must satisfy. Incentives can also be restricted to only apply to a given set of activities.

In this way it is possible to encourage the DSE to use resources with particular skills to carry out certain activities, without requiring this as a hard constraint.

The primary use for incentives is in automated resource planning, but they can also be used in other scheduling problems if appropriate.

Warning

Before using Incentives IFS PSO Product Development must be consulted.

Attribute NameData TypeDescriptionPKM/O
idString(32)Defines a unique id for the incentive.PKM
globalBooleanDefines whether the incentive applies to all activities.M
descriptionString(2000)Provides a description for this incentive.O

Entity: Incentive_Availability (Input)

This links an incentive to a period of availability where it is applicable. If no availabilities are specified then the incentive is always applicable.

Attribute NameData TypeDescriptionPKM/O
availability_idString(32)Defines a unique id for availability period of the incentive.

Foreign Key: Availability
PKM
incentive_idString(32)Specifies the id of the incentive this availability relates to.

Foreign Key: Incentive
PKM

Entity: Input_Load_Status (System)

For internal use only.

Entity: Input_Reference (Input)

This is used to associate an input file and scheduling time with a plan returned from the Scheduling software. The plan will contain the reference to this input data set.

One and only one record of this type should be in each data input, it is effectively the header record. This record is used to define the following :-

  • The current time to the scheduler. All activity status changes, schedule events within the data must be at or before this time.
  • What dataset the data belongs to, if not supplied it will default to 'Default'.
  • What organisation id the data belongs to, if not supplied it will default to 1.
  • Is it an initialisation of the system or an update to existing data.
  • The scheduling window to be used.
  • Should the scheduler produce a one off schedule or continuously seek to improve the schedule.
  • The source of the data i.e. who created it.

To initialise the scheduler for the first time the attribute Input_Reference.input_type must be set to ‘LOAD’. This will stop the scheduler of processing any data it currently has for the specified dataset. To stop the scheduler from processing current data but without loading a new set of data set Input_Reference.input_type to ‘STOP’. To stop future processing but keep any data that has already been processed, set Input_Reference.input_type to ‘PAUSE’.

If subsequent data inputs wish to apply updates, or just advance the time the scheduler is working to then the Input_Reference.input_type must be set to ‘CHANGE’. Any number of change files can be sent. It is strongly recommended that the changes are presented to scheduler in chronological order to ensure the best scheduling decisions are made.

The following values for Input_Reference.input_type are supported :-

SETUP = Used when the system first starts to load system reference data.

LOAD = Used by an application to provide an initial load of data and soft restart of the scheduler.

COMPLETE = Used by an external application to provide a complete replacement data set without a restart of the system.

CHANGE = Used to provide an update of existing data.

DATA = Used to change only information in data entry tables.

STOP = When submitted will set the dataset to expired and will not process any data included with the STOP action.

PAUSE = When submitted will stop processing of data, but not set the dataset to expired.

Note

Data Path can point to additional XML files conforming to this definition to be loaded. This file is merged with existing XML data set prior to processing. The XML file may itself also point to an additional file of XML to be loaded. All files specified will be merged and validated against the interface specification.

Note

Dataset_id is used to define discrete sets of data to be scheduled. When supplied this attribute is added to the primary key of all input/output entities. Each dataset is processed separately by the Scheduling system. Several schedulers can be configured to pick up the waiting datasets as they become free for processing.

Note

When the DSE is restarted it starts processing the data from the last LOAD operation and applies all changes forward from that.

Note

Appointment Booking Duration defines the period to be used by the Appointment Booking Engine Service (ABE) to provide appointments. It is only required if the ABE is in use. By default it is set to the Scheduling Window. This provides the option of having e.g. a scheduling window of 7 days and an appointment booking window of 6 months. In such circumstances, the DSE would do an approximate schedule in the period between 7 days and 6 months, and the ABE would book appointments based on this plan.

Attribute NameData TypeDescriptionPKM/O
dataset_idString(32)Defines the id to be used to identify which data set the data belongs to and should be stored against. This enables the system to be used for multiple and discrete sets of data to be scheduled.

Notes: This forms part of the primary key for all subsequent data loaded with this input reference. If not supplied then the default dataset_id is used (taken the parameter DefaultDatasetId, default value 'Default'.
PKM
datetimeDate TimeDefines a unique id for the current time.

Notes: This informs the system of the current time.
PKM
idString(100)Defines a unique id for the input.

Notes: Unique external identifier for the input.
PKM
organisation_idIntegerSpecifies the id of the organisation to which the data belongs.

Notes: This forms part of the primary key for all subsequent data loaded with this input reference. If not supplied then the default org_id of 1 is used.
PKM(1)
input_typeString(20)Indicates if the input data set is an initial load or a change to the data. ‘LOAD’ will initiate a data clear down within the scheduling system prior to the loading of new data.

Allowed Values: SETUP, LOAD, COMPLETE, CHANGE, DATA, PAUSE, STOP
M(LOAD)
load_statusIntegerFor internal use.M(0)
process_typeString(32)Identifies a particular process to be executed for this input data.

Allowed Values: APPOINTMENT – For use when scheduling over longer scheduling windows, typically when appointment booking is required.
DYNAMIC – To be used when dynamic scheduling is required.
MANUAL – To be used when manual overrides are being applied to the plan but no scheduling to take place.
PLAN – Used when advanced planning is required.
CYCLIC – Used when scheduling with modelling patterns.
STATIC – Used for static scheduling.
REACTIVE – Used when running almost statically, but with a few updates per day.
DISTRIBUTED - Used when scheduling with child schedules.
DISTRIBUTED_STATIC - Used for static scheduling with child schedules.
MANUAL_STATIC – An initial static schedule is created, and then manual overrides can be applied, but no further optimisation is performed.
INCREMENTAL - Schedules activity pools incrementally, according to dependency links between the pools.


M(DYNAMIC)
application_instance_idString(128)Specifies the id of the instance of the application creating the Input_Reference

Notes: Normally server name.
O
application_type_idString(32)Defines an optional identifier used to record the source of the data.O
appointment_window_durationTime SpanThis specifies the duration of the appointment window. This is in addition to the scheduling window and starts after the scheduling window ends.

Notes: This defines the window in which appointment planning is used. It defines a period that follows after the scheduling window. The DSE will make a quick and approximate schedule in the appointment window, and a fully-optimised schedule in the normal scheduling window. If the ABE is being used, it will offer appointments over entire period of scheduling and appointment planning.
O
data_pathString(100)This specifies a path to and file name location from which a file of XML conforming to this standard can be loaded.

Notes: Valid full path and file name. The loaded file may itself contain an Input Reference.Data Path to additional files.
O
dataset_id_parent_datasetString(32)For internal use only.O
descriptionString(2000)Provides a short description of the input data. If the Archive database is being used, this description is also used for the Audit row's description.O
durationTime SpanThis specifies the duration of the scheduling window.

Notes: If not provided the value from the parameters is used. This may only be set on the LOAD file, and updates in CHANGE files will be ignored. Also see schedule_end_datetime.
O
enacting_app_instance_idString(128)Specifies the id of the application instance which processed the data.O
enacting_app_type_idString(32)Specifies the type of the application instance which processed the data.O
input_datetimeDate TimePopulated internally to indicate when the data was entered into the database.O
internal_id_parent_datasetInt64For internal use only.O
licence_keyString(4000)This is the licence string supplied for operation of the software.

Notes: This string is normally supplied automatically from configuration parameters within the installation. See note above.
O
load_idString(100)The input reference id of the LOAD this change was intended for. If load_id is specified and does not match the id of the current load the input will not be applied.

Notes: Only applicable for input_type of CHANGE, PAUSE or STOP.
O
manual_scheduling_window_endDate TimeThe DSE will not attempt to schedule activities before this time, unless a Shift specifically permits it. Activities of status Committed or greater, and fixed activities, may still be scheduled before this time.O
profile_idString(32)The profile to be used for associating specific parameters with this input for processing.

Notes: If not provided default parameters will be used. If provided the parameters associated with the profile will be used. If a parameter is not present in the profile then the default value will be used. This field only has an effect for input type of ‘LOAD’.
O
schedule_end_datetimeDate TimeThis can be used to set the schedule end time instead of using Input_Reference.duration. If present, the schedule_end_datetime will override the duration.

Notes: The schedule_end_datetime is timezone specific. In general it is recommended to set this to midnight, or a time which no shifts overlap. As with duration, this may only be set on the LOAD file, and updates in CHANGE files will be ignored.
O
sourceString(50)Specifies where data originates from.O
user_idString(256)Specifies the id of the user who sent these changes.

Notes: When changes are sent from the Scheduling Workbench the user_id = user logon id
O

Example

<Input_Reference>
    <id>Test Create</id>
    <datetime>2006-01-03T08:01:00.0000000-00:00</datetime>
    <description>Test create data</description>
    <input_type>LOAD</input_type>
</Input_Reference>

Entity: Isochrone_Point (Output)

These are returned by the Travel Analysis service in response to an Isochrone_Request. The sequence of points together define the requested isochrone.

Attribute NameData TypeDescriptionPKM/O
isochrone_request_idString(32)The id of the isochrone request this relates to.PKM
sequenceIntegerThe sequence of this point within the isochrone.PKM
latitudeDoubleThe latitude of this point.M
longitudeDoubleThe longitude of this point.M
plan_idInt64The plan this isochrone point relates to.

Foreign Key: Plan
O

Entity: Isochrone_Request (Input)

Used to request an isochrone, which is the sequence of points of equal travel time from a particular location. The centre location can be defined either by specifying a latitude and longitude or by using an existing location within the input data.

Attribute NameData TypeDescriptionPKM/O
idString(32)Defines a unique id for the isochrone.PKM
calculate_envelopeBooleanSpecifies whether to return only the outer points that can be reached within the time. If false return all points that can be reached within the time.M(true)
end_datetimeDate TimeIf specified, the travels will be calculated assuming they end at this time.

Notes: Only one of start_datetime and end_datetime should be supplied.
O
grid_metresDoubleSpecifies that a grid of points this distance apart should be used as the basis of the calculation.O
latitudeDoubleSpecifies the latitude of the centre location of the isochrone.

Notes: Required if location_id is not supplied. Range from -90 to +90.
O
location_idString(32)Defines the id of the centre location of the isochrone.

Foreign Key: Location
O
longitudeDoubleDefines the longitude of the centre location of the isochrone.

Notes: Required if location_id is not supplied. Range from -180 to +180.
O
profile_id_travelString(32)Defines the id of the Profile to use when calculating travel times. The corresponding Travel_Time_Profile to be used is then defined by setting the parameter TravelTimeProfileId on the specified Profile.O
speed_factorDoubleDefines an additional speed factor to apply when calculating travels.

Notes: A speed factor of 2 will mean journeys take twice as long.
O
start_datetimeDate TimeIf specified, the travels will be calculated assuming they start at this time.

Notes: Only one of start_datetime and end_datetime should be supplied.
O
travel_timeTime SpanDefines the maximum travel time on which the isochrone calculation should be based.O

Entity: Load_Info (System)

For internal use only.

Entity: Location (Input)

Location entries need to be created for activities, resources, shifts where required. The EA is responsible for providing accurate location information. It is strongly advisable to have all location information validated prior to sending to the scheduling system.

Note

When the system is determining distances using the travel matrix it will search using the lat/long provided.

Warning

Only locations referenced by activities or resources that are being considered by the schedule should be sent to PSO.

Examples

<Location>
    <id>TEST26min-d</id>
    <latitude>52.9240</latitude>
    <longitude>-1.2487</longitude>
</Location>
<Location>
    <id>TEST26max</id>
    <location_type_id>Test26</location_type_id>
    <location_geocode_id>TEST26</location_geocode_id>
    <latitude>52.9240</latitude>
    <longitude>1.2487</longitude>
    <name>TEST26max</name>
    <address_line1>ad1</address_line1>
    <address_line2>ad2</address_line2>
    <address_line3>ad3</address_line3>
    <address_line4>ad4</address_line4>
    <address_line5>ad5</address_line5>
    <address_line6>ad6</address_line6>
    <city>city</city>
    <region>region</region>
    <state>state</state>
    <addtime>PT0H30M</addtime>
</Location>
Attribute NameData TypeDescriptionPKM/O
idString(32)Unique id.PKM
address_line1String(128)The first address line for this location.O
address_line2String(128)The second address line for this location.O
address_line3String(128)The third address line for this location.O
address_line4String(128)The fourth address line for this location.O
address_line5String(128)The fifth address line for this location.O
address_line6String(128)The sixth address line for this location.O
addtimeTime SpanSpecifies the amount of time to be added to the travel of an activity for gaining access to this location. If two consecutive activities are at the same location, the time is only added to the first travel. Activities are considered to be at the same location if a locality is specified for both locations, and it is the same; or if locality is not specified on one or both locations, and the two location ids are the same.

Notes: Default value will be taken from the Location Type if present.
O
cityString(40)Specifies address cityO
descriptionString(2000)Provides a description of the Location, which may be shown in the Scheduling WorkbenchO
duration_overheadTime SpanSpecifies the amount of time to be added to the expected duration of the first activity at a location or locality. If two consecutive activities are at the same location, the time is only added to the first activity. Activities are considered to be at the same location if a locality is specified for both locations, and it is the same; or if locality is not specified on one or both locations, and the two location ids are the same.

Notes: Default value will be taken from the Location Type if present.
O
lack_of_coverageBooleanIf provided, the Time Horizon parameter or Resource.maximum_committed_activities are overridden when considering commits for activities at a location marked 'lack of coverage'.

Notes: Used by the Schedule Dispatch Service.
O
latitudeDoubleProvides the latitude in decimal degrees.

Notes: Range from -90 to +90.
O
localityString(32)If the activity location has the attribute locality set to 'Site 1' then the do_in_locality_incentive is applied to all other activities that are linked to a location with Location.locality = 'Site 1'. The do_on_location_incentive will be used if the do_in_locality_incentive is not set.O
location_type_idString(32)Specifies the id of the location type for this location.

Foreign Key: Location_Type
O
longitudeDoubleProvides the longitude in decimal degrees.

Notes: Range from -180 to +180
O
nameString(64)Specifies the location name if required.O
post_code_zipString(20)Specifies post code / zip.O
regionString(40)Specifies address regionO
stateString(40)Specifies address countryO

Entity: Location_Availability_Set (Input)

Links a location to an availability set.

Attribute NameData TypeDescriptionPKM/O
availability_set_idString(32)The id of the availability set.

Foreign Key: Availability_Set
PKM
location_idString(32)The id of the location.

Foreign Key: Location
PKM

Entity: Location_Region (Input)

This links each location with a region entity. A location can belong to more than one region.

Attribute NameData TypeDescriptionPKM/O
location_idString(32)Defines the unique id of the location.

Foreign Key: Location
PKM
region_idString(32)Defines the unique id of the region.

Foreign Key: Region
PKM

Example

<Location_Region>
    <region_id>TEST34</region_id>
    <location_id>3165</location_id>
</Location_Region>

Entity: Location_Type (Input)

Location types are used to associate availabilities with a type of location. This is used to reduce the amount of availabilities to be loaded for each location, rather they can be loaded against the location type. Location types do not have to be used. Where the location has a location type with availabilities and the location has availabilities then the location availabilities take precedence.

Attribute NameData TypeDescriptionPKM/O
idString(32)Defines the unique id of the location type.PKM
addtimeTime SpanDefines the amount of time to be added to the travel of an activity at the location with this location type.O
descriptionString(2000)Provides name and description of the location type.O
duration_overheadTime SpanSpecifies the amount of time to be added to the expected duration of the first activity at a location or locality.O
lack_of_coverageBooleanIf provided, the Time Horizon parameter or Resource. maximum_ committed_ activities are overridden when considering commits for activities at a location marked 'lack of coverage'.

Notes: Used by Schedule Dispatch Service.
O

Example

<Location_Type>
    <id>LT Test 13</id>
    <description>Test 13 location type</description>
    <addtime>PT03H10M</addtime>
</Location_Type>

Entity: Location_Type_Avail_Set (Input)

Links a location type to an availability set.

Attribute NameData TypeDescriptionPKM/O
availability_set_idString(32)The id of the availability set.

Foreign Key: Availability_Set
PKM
location_type_idString(32)The id of the location type.

Foreign Key: Location_Type
PKM

Entity: Modelling_Pattern (Input)

This defines the set of rules to be applied to dataset activities for the modelling application.

Note

Min delay will be used in the following way. Suppose you have a pattern containing activities 1,2,3 and 4 with a 1 week interval. If the step was two, then activities 1 and 3 would be scheduled a week apart, as would activities 2 and 4. Furthermore, activity 2 would be scheduled between 1 and 3 with a gap of at least the min_delay between 1 and 2, and also between 2 and 3.

Note

For more detail and examples of how the various features of the modelling pattern are used by the Scheduling Engine, please refer to Scheduling Concepts - Long-Term Scheduling Guide.

Attribute NameData TypeDescriptionPKM/O
idString(32)Defines the unique id of the Modelling Pattern.PKM
intervalTime SpanSpecifies the amount of time to be reserved between each activity using this pattern.

Allowed Values: Interval should larger than zero.
M
same_resourceBooleanIndicates whether the same resource is used for all activities with this patternM(false)
stepIntegerSpecifies the step for which to apply the specified interval.M(1)
value_multiplierDoubleDefines how much to increase the value of later activities in the pattern, once the first activity is scheduled. This is to encourage it to schedule entire patterns, rather than leaving bits of different patterns unscheduled.M(1)
base_datetimeDate TimeSpecifies the date and time the interval should be added to in order to calculate the target time for the first visit of the activity.

Notes: If not specified, the first visit will be scheduled as early as possible.
O
descriptionString(2000)Provides a description of the Modelling Pattern, which may be shown in the Scheduling WorkbenchO
leewayTime SpanSpecifies the amount of leeway to be allowed either side of the calculated time from the interval. If 'leeway_before' is specified, then this will only apply asymmetrically, i.e. after the calculated time from the interval.O
leeway_beforeTime SpanSpecifies the amount of leeway to be allowed before the calculated time from the interval. If not specified, the 'leeway' value will be used instead.O
leeway_percentageDoubleSpecifies the percentage of the interval to be used as the amount of leeway to be allowed after the calculated time from the interval.O
leeway_percentage_beforeDoubleSpecifies the percentage of the interval to be used as the amount of leeway to be allowed before the calculated time from the interval.O
min_delayTime SpanDetermines the minimum time that should be left between activities in the pattern.

Notes: For use only when step > 1.
O

Entity: Object_Deletion (Input)

In order to delete an object from the DSE data set, an object deletion must be sent. Deletions should be done prior to new data stream being loaded. If referential constraints are broken then object exceptions will be created. When deleting objects consider the impacts in terms of cascade deletes. Cascade deletes can be stopped by setting the cascade column of the object deletion. If this value is null, the value of the parameter CascadeSchedulingObjectDeletions will be used instead. Object deletions can have a negative impact on the performance of the system and should be avoided if possible. Note that to update an object you do not need to delete it first, just send in the amended object using the same primary key.

Warning

All time spans are represented in the format "P0Y0M0DT0H0M0S" or just "PT0H0M0S" for a value less than one day.

Where the primary key of the object to be deleted is a datetime or time span then the full xml format must be specified in these fields for the deletion to take effect. e.g. 2007-12-03T12:00:00+01:00

For full specification of duration refer to this link:-

http://www.w3.org/TR/2001/REC-xmlschema-2-20010502/#duration

Warning

The use of object deletions should be restricted as much as possible since their use has an adverse effect on performance.

Warning

The use of object_deletions should be avoided if at all possible. They should be limited to the complete removal of objects from the dataset when it is essential that these are removed. Objects should not be added and deleted continuously since this will lead to sub optimal system performance. To update an object resend the object with the same primary key, do not delete and resend it. Do not delete objects which do not exist, this will slow the system down.

Warning

Object Deletions of the following objects will have major impacts on the schedule if there are currently any child objects since these will also be deleted unless cascading deletes is turned off. It is recommended to turn off cascading deletes for these object types, or not delete them at all.

Activity_Type
Location_Type
Resource_Type

SLA Type - This will cause all Activity_SLAs of that type to be deleted, unless cascading is disabled, possibly resulting in the activity not being scheduled.

Shift Type - This will cause all Shifts of that type to be deleted, unless cascading is disabled, possibly resulting in no activities being allocated to resources

Attribute NameData TypeDescriptionPKM/O
object_pk_name1String(40)Specifies the name of the column.PKM
object_pk_name2String(40)Specifies the name of the column.PKM
object_pk_name3String(40)Specifies the name of the column.PKM
object_pk_name4String(40)Specifies the name of the column.PKM
object_pk1String(100)Provides primary key value 1.PKM
object_pk2String(32)Provides primary key value 2.

Notes: Second part if composite primary key.
PKM
object_pk3String(32)Provides primary key value 3.

Notes: Third part if composite primary key.
PKM
object_pk4String(32)Provides primary key value 4.

Notes: Fourth part if composite primary key.
PKM
object_type_idString(40)Specifies the type of object which will be deleted.

Notes: Valid entity name
PKM
cascadeBooleanSpecifies if this object deletion should also cascade delete child objects

Notes: If set to null, the value of the CascadeSchedulingObjectDeletions parameter will be used
O

Example

<Object_Deletion>
    <object_type_id>Activity</object_type_id>
    <object_pk1>00001</object_pk1>
    <object_pk_name1>id</object_pk_name1>
    <cascade>true</cascade>
</Object_Deletion>

Entity: Object_Group (Input)

This enables an Activity, Activity Type, Resource, Resource_Type to be linked to more than one Group. Groups are used to control viewing and update access privileges to users. There may be instances where for example activities needed to be grouped geographically for dispatching but also need to be organized by cost centers for reporting.

Attribute NameData TypeDescriptionPKM/O
idString(32)Defines a unique id for the object group.PKM
group_idString(32)Defines the unique id of the group.M
activity_idString(32)Defines the unique id of the activity.

Foreign Key: Activity
O
activity_type_idString(32)Defines the unique id of the activity type.

Foreign Key: Activity_Type
O
resource_idString(32)The resource id.

Foreign Key: Resources
O
resource_type_idString(32)The resource type id.

Foreign Key: Resource_Type
O

Example

<Object_Group>
    <id>1234</id>
    <group_id>TEST32</group_id>
    <resource_id>TEST32</resource_id>
</Object_Group>

Entity: Operation (Input)

Defines an operation that can be linked to a repeatable activity. This represents a task that may need to be carried out during a visit to this activity.

For example, if the activity is to maintain a piece of machinery, the operation could be a particular type of maintenance that needs to be carried out.

Multiple operations can be linked to the same activity, each with different rules regarding how frequently they need to be carried out.

An operation can also have a 'subsequent operation' specified. If so, the subsequent operation will need to be performed next after this operation, instead of simply repeating this operation. If the 'subsequent_only' attribute is set, then this operation will not be scheduled initially, but only as the subsequent operation to a different operation.

For example, if operations A and B have each other as 'subsequent operations', then they must be performed in the order A -> B -> A -> B -> ...

Note

This is only intended for use with repeatable activities and cyclic scheduling.

Attribute NameData TypeDescriptionPKM/O
idString(32)An identifier for this operation.PKM
allow_parallel_operationsBooleanSpecifies if this operation can be carried out at the same time as other operations being performed on the activity.M(true)
base_valueDoubleThe base value for performing this operation.M(1000)
durationTime SpanThe expected duration of this operation.M
once_onlyBooleanIf true then this operation will only be scheduled once and will not be repeated.

Notes: If a operation_id_subsequent is specified then this value is ignored.
M(false)
subsequent_onlyBooleanIf true then this operation will only be scheduled as subsequent to another operation.M(false)
usage_model_idString(32)The identifier of the usage model linked to this operation.

Foreign Key: Usage_Model
M
descriptionString(2000)A description for the operation.O
operation_id_subsequentString(32)The identifier of the operation that must follow this one.

Foreign Key: Operation
O

Entity: Operation_Hierarchy (Input)

This allows operations to be placed in a hierarchy. In such cases, whenever a parent operation is carried out, the child operation will also be taken to have been carried out.

Note

This is only intended for use with repeatable activities and cyclic scheduling.

Attribute NameData TypeDescriptionPKM/O
operation_id_childString(32)The identifier for the child operation.

Foreign Key: Operation
PKM
operation_id_parentString(32)The identifier for the parent operation.

Foreign Key: Operation
PKM

Entity: Operation_Ordering (Input)

This allows a specific ordering of operations to be defined when multiple operations are carried out within a visit.

Note

This is only intended for use with repeatable activities and cyclic scheduling.

Attribute NameData TypeDescriptionPKM/O
operation_id_fromString(32)The identifier of the operation that must be carried out first.

Foreign Key: Operation
PKM
operation_id_toString(32)The identifier of the operation that must be carried out second.

Foreign Key: Operation
PKM

Entity: Operation_Skill (Input)

Used to set a skill requirement for a particular operation.

Note

This is only intended for use with repeatable activities and cyclic scheduling.

Attribute NameData TypeDescriptionPKM/O
operation_idString(32)The identifier of the operation.

Foreign Key: Operation
PKM
skill_idString(32)The identifier of the skill.

Foreign Key: Skill
PKM

Entity: Part (Input)

Defines parts to be carried by resources and used by activities.

If a part is reusable, then it will not be consumed by activities that require it. That is to say that a resource with a single reusable part can carry out multiple activities that require one unit of the part. This would normally be applied where a resource needs a certain tool or kit in order to carry out an activity.

If a reusable part is taken from a depot then the resource can also return the part to the depot later, so that it can also be used by other resources. In this case an hourly cost is applied to encourage resources to return the part when they no longer require it. This is specified via the cost_ph attribute.

Warning

The use of parts adds significant complexity to the scheduling problem, and as such should be as limited as possible.

Note

If a part is global, then it will be placed into a global part stock that is accessible to all resources. Global part stock is not linked to a resource or depot. See scheduling concept guide on parts for more information.

Note

If a resource_pool_set_id is specified, the part can be defined in shared part stocks. These function the same as a global stock, but can only be accessed by members of the resource pools specified. Parts should not be specified as both Global and Shared. See scheduling concept guide on parts for more information.

Note

If a part is reusable, a default cost per hour of 1 is applied if not already specified.

Note

If a part is marked as a vehicle part, then any part stock for this part should be either vehicle part stock or depot part stock. It should not be a global or resource pool set part. When a resource picks up this part from a depot, it will always be added to the vehicle part stock.

Attribute NameData TypeDescriptionPKM/O
idString(32)Defines a unique id for the part.PKM
is_globalBooleanIndicates whether the part is global.M(false)
is_vehicle_partBooleanIndicates whether the part is related to vehicle stock instead of direct resource stock.M(false)
cost_phDoubleFor reusable parts, the cost per hour to apply when the part is removed from a depot. This defaults to 1 if not specified.O
descriptionString(2000)Provides a description of the part.O
resource_pool_set_idString(32)If specified, defines the part as belonging to shared part stocks. Shared part stocks will be created for resource pools in the set.

Foreign Key: Resource_Pool_Set
O
reusableBooleanIndicates whether the part is used up when required by activities.O
volumeDoubleSpecifies the unit volume of the part to be used in capacity calculations.O
weightDoubleSpecifies the unit weight of the part to be used in capacity calculations.O

Example

<Part>
    <id>Test16max</id>
    <description>test part 16</description>
</Part>

Entity: Part_Stock (Input)

Defines the amount of stock for parts carried by resources or resource types and/or available from depot activities. Also used to specify global part stock.

This can be used to specify parts against a resource or resource type which can be time dependent. If no available_datetime is specified then the part is assumed to be available to the resource or resource type from the start of the schedule, otherwise the part is only available from the specified time. The override_existing states whether this part is in addition to any parts currently held by the resource or resource type (set to false), or whether it replaces any existing parts (set to true). See example below.

Part stock can also be specified for vehicles. The setup is the same as that described for resources above, except that the vehicle_id should be provided, instead of a resource_id or resource_type_id. The part itself must be marked as a vehicle part via the 'is_vehicle_part' attribute.

Part stock can also be specified for depot activities. The setup is the same as that described for resources above, except that the activity_id for the depot activity should be provided, instead of a resource_id or resource_type_id.

A part stock can also be specified for global parts. In this case there is no need to link the part to either a resource or a depot, but the part_id should match the id of a part with the 'global' flag set.

Finally, a Part stock can be specified for shared parts. In this case the resource_pool_id of the resource pool able to access the stock should be specified, and the part_id should match the part_id of a part with a resource_pool_set_id.

Attribute NameData TypeDescriptionPKM/O
idString(32)Defines a unique id for the part stock.PKM
override_existingBooleanDefines whether this stock replace any existing stock, rather than being added to it.M(true)
part_idString(32)Defines the unique id of the part.

Foreign Key: Part
M
stockIntegerDefines the quantity of stock.M
activity_idString(32)Provides the activity id of the depot requiring a stock update.

Foreign Key: Activity

Notes: This must be an activity of class ‘DEPOT’.
O
available_datetimeDate TimeSpecifies the date and time the stock becomes available.O
resource_idString(32)Specifies the id of the resource carrying the stock.

Foreign Key: Resources

Notes: For resource part stock, exactly one of resource_id and resource_type_id must be specified.
O
resource_pool_idString(32)If specified, the part stock will be designated as a shared part stock accessible by members of the resource pool indicated.

Foreign Key: Resource_Pool
O
resource_type_idString(32)Specifies the id of the type of the resource carrying the stock.

Foreign Key: Resource_Type

Notes: For resource part stock, exactly one of resource_id and resource_type_id must be specified.
O
vehicle_idString(32)Specifies the id of the vehicle carrying the stock.

Foreign Key: Vehicle

Notes: If specified, the part stock will belong to the vehicle and not directly to the resource. No resource_id or resource_type_id should be specified.
O

Example

As an example, take the following xml:

<Part_Stock>
    <id>1</id>
    <part_id>KEYBOARD</part_id>
    <resource_id>RES1</resource_id>
    <stock>5</stock>
    <override_existing>true</override_existing>
</Part_Stock>
<Part_Stock>
    <id>2</id>
    <part_id> KEYBOARD </part_id>
    <resource_id>RES1</resource_id>
    <stock>2</stock>
    <available_datetime>2010-10-13T08:00:00</available_datetime>
    <override_existing>false</override_existing>
</Part_Stock>
<Part_Stock>
    <id>3</id>
    <part_id> KEYBOARD </part_id>
    <resource_id>RES1</resource_id>
    <stock>6</stock>
    <available_datetime>2010-10-15T08:00:00</available_datetime>
    <override_existing>true</override_existing>
</Part_Stock>

This would mean that the resource has 5 KEYBOARD parts at the start of the schedule today, picks up an extra two on Wednesday (regardless of how many he has used at this point), and then starts Friday with 6 KEYBOARD parts (again regardless of how many he has used up to this point). So if he were to carry out activities on Tuesday and Thursday which required 3 KEYBOARDs each, his stock levels at the end of each day would be :-

Monday 5 (initial stock)
Tuesday 2 (used 3)
Wednesday 4 (2 added)
Thursday 1 (used 3)
Friday 6 (reset to 6)

Any Resource_Parts specified will be treated as Part_Stock with no available_datetime. Resource_Parts entity is obsolete, since the Part_Stock table effectively replaces it.

Entity: Part_Transfer_Settings (Input)

Part transfer settings can be used when transferring parts from one depot to another. Part transfer settings allow specific parts to be linked to transfer settings, and this can override the default transfer rules (defined in Depot_Transfer_Settings) to use for this part.

Attribute NameData TypeDescriptionPKM/O
depot_transfer_settings_idString(32)Specifies a unique identifier for the depot transfer settings these settings are included in.

Foreign Key: Depot_Transfer_Settings
PKM
part_idString(32)Specifies a unique identifier for the part the settings apply to.

Foreign Key: Part
PKM
transfer_rule_set_idString(32)Specifies a unique identifier for the set of transfer rules to use for this part.

Foreign Key: Transfer_Rule_Set
O

Entity: Plan (Output)

Each time a plan is produced an entry is created here. This defines the plan id, the date and time the plan was produced and the type of travel calculation used.

Note

Schedule quality is expressed as a percentage from 0 - 100. Higher percentage quality plans take longer to produce so there is a trade-off between speed and quality of optimisation. This is not to say that the optimisation is poor. A 100 percent optimisation is achieved after a period of time in which the optimiser has not been able to improve the quality. Schedules have a quality of 0 until every element has been processed at least once. Thereafter the quality of a resource's schedule is dependent on how many times it has been improved recently.

Note

Quality is relative to the size and complexity of the scheduling problem being resolved. It actually measures the rate of change in the plan through improvements to the plan. So a plan of quality 80 is improving more slowly than a plan with quality 50. Quality is relative to the size of the problem so a quality of 50 may be producing a very good plan for a large scheduling problem, and a quality of 80 would be needed to produce a good plan for a less complex scheduling problem.

Note

Plan.allocation_type = 2, 4, 8, 16 indicates the plan data is associated with the Appointment Booking Engine, Manual Scheduling, Schedule Dispatch Service or the Scheduling Travel Analyser. This is a binary field where the values are added together to specify multiple types. Plan.allocation_type is used in broadcasts to select what type of data should be output.

Note

Plan.last_plan_id is populated by the Scheduling Broadcast Manager and is not populated in the scheduling database.

Note

The input and output from the system are asynchronous. In order for the plan to be matched with a given input the input_reference_id should be used. Many inputs may be processed before a plan is produced in which case the Plan. input_reference_id will be the last one processed.

In circumstance where updates are being supplied slowly, you might do the following:

Input ref 1
Broadcast (input ref 1)
Input ref 2
Broadcast (input ref 2)
Input ref 3
Broadcast (input ref 3)
Input ref 4
Broadcast (input ref 4)
Input ref 5
Broadcast (input ref 5)

In each case, the input reference is processed and the results are broadcast before the next update is received.

Now, if the updates are provided more quickly, you may get something like this:

Input ref 1
Input ref 2
Broadcast (input ref 2)
Input ref 3
Input ref 4
Broadcast (input ref 4)
Input ref 5
Broadcast (input ref 5)

Here, input references 1 and 2 have been processed together, and the broadcast gives the input reference of the last input processed. So when you see “Broadcast(input ref 2)”, you know that it has processed inputs 1 and 2. Similarly, when you see “Broadcast (input ref 4)”, you know it has processed inputs 3 and 4.

Thus, as long as the input references are in order, you always know which ones have been processed in any broadcast.

Note

Plan_Margin is used as a measure of how good the plan is using the values supplied to it. The Plan_Margin is calculated as the sum of all allocated activity values, minus the travel costs.

An allocated activity has a value determined by its “base value” (derived from the Activity or Activity_Type entity), which is then modified by various multipliers. For instance, an activity’s value may decline over time because of a slope specified in an SLA_Type record.

The travel costs are the sum of two components: time cost, and distance cost. Each resource has a “cost per km”, which is used to calculate the distance costs for any travel that they do; and each resource also has a time cost “cost_ph”, which is applied to all travel and activity time. If a resource is working in an overtime period, then the “cost_phot” value is used instead.

The value for the Plan_Margin contains only those activities and travels the scheduler can schedule and does not include those activities whose status is committed (30) or above, and have not been fixed to a datetime/resource.

Plan_Margin includes only schedulable activities. Non-schedulable activities (e.g. activities fixed to a resource and time) are not included in the calculation.

Note

Statistics for utilisation and total time for activities/breaks/etc. will not include parallel and bucket resources.

Attribute NameData TypeDescriptionPKM/O
idInt64System generated plan id.PKM
allocation_typeIntegerType of allocation used. This is a binary addition. To specify Dynamic Scheduling and Appointment the value would be 3, 1+2. To include Scheduling Dispatch the value would be 11.

Allowed Values: 1 = Dynamic Scheduling
2 = Appointment Booking Engine
4 = Manual Scheduling
8 = Schedule Dispatch Service
16 = Scheduling Travel Analyser


M(1)
input_reference_date_timeDate TimeThe date and time the data was loaded to create this plan.M
input_reference_idString(100)Unique external identifier of the input file used for plan generation.M
input_reference_internal_idInt64The internal id for the last input reference processed.M
load_statusIntegerFor internal use only.M(0)
organisation_idIntegerOrganisation for datasetM(1)
output_datetimeDate TimeThe date and time the plan was calculatedM
plan_typeString(32)The type of this plan.

Notes: Complete plan = ‘COMPLETE’ Plan containing only changes since last plan = ‘CHANGE’
M
schedule_fromDate TimeThe start date of the scheduling windowM
schedule_toDate TimeThe end date of the scheduling window.

Notes: Must be after Schedule From date time.
M
application_instance_idString(128)The id of the application instance writing the plan.O
application_type_idString(32)The type of the application instance writing the plan.O
appointment_window_endDate TimeThe end of the appointment booking windowO
average_travel_distanceDoubleThe average distance each resource spends travelling.O
average_travel_timeTime SpanThe average amount of time each resource spends travelling.O
broadcast_idString(32)The broadcast id for which the plan was generated.

Notes: Enables plans for different broadcasts to be identified.
O
dataset_idString(32)Id for dataset.O
dataset_typeString(32)The type of the dataset that the plan relates to.O
diagnosticsString(500)For internal use only.O
last_plan_idInt64The previous plan id.

Notes: Needed to ensure that when a Changes only plan is sent the previous plan id is known so that it is know that no changes have been missed.
O
licence_informationString(1000)Licence information detailing customer name and licence restrictions.O
load_input_ref_internal_idInt64The internal id of the load input reference.O
plan_marginDoubleNet value of the entire schedule.O
profile_idString(32)The profile used for generating this plan.O
qualityDoubleIndicates the quality of the plan produced.

Notes: 0 = Plan not ready. 100 = Plan will not be improved further. Values between 0 and 100 indicate the current quality of the plan.
O
software_versionString(100)Software version of the software generating the plan.O
time_takenTime SpanThe amount of time it took to optimise the data.O
total_allocationsIntegerThe total number of allocations made in the plan.O
total_break_timeTime SpanThe total amount of time spent as breaks.O
total_on_site_timeTime SpanThe total amount of time spent on-site doing activities.O
total_private_timeTime SpanThe total amount of time spent undertaking private activities.O
total_travel_distanceDoubleThe total amount of travel in the plan.O
total_travel_timeTime SpanThe total amount of time spent by all resources included in the plan in travelling.O
total_unutilised_timeTime SpanThe total amount of unused shift time in the schedule.O
travel_typeString(32)Describes the type of travel calculation used in deriving the plan.

Notes: Specifies how the distance was calculated. Values are: Lat/Long
O
utilisationDoubleThe amount of resource availability utilised in the plan as a %.

Notes: This is a percentage of the time available as defined by shifts including the overtime. Time consumed on private appointments is counted as utilised time.
O

Example

<Plan>
    <id>1347</id>
    <output_datetime>2007-02-19T20:17:03.203125+00:00</output_datetime>
    <travel_type>X/Y</travel_type>
    <schedule_from>2006-01-03T00:00:00+00:00</schedule_from>
    <schedule_to>2006-01-05T00:00:00+00:00</schedule_to>
    <input_reference_datetime>2006-01-03T08:01:00+00:00</input_reference_datetime>
    <allocation_type>1</allocation_type>
    <input_reference_id>Test Create</input_reference_id>
    <quality>91.538461538461533</quality>
    <plan_type>COMPLETE</plan_type>
    <diagnostics>91.5384615384615</diagnostics>
    <time_taken>PT31.484375S</time_taken>
    <average_travel_time>PT31M9.214S</average_travel_time>
    <average_travel_distance>22428.275212969056</average_travel_distance>
    <total_allocations>14</total_allocations>
    <total_travel_time>PT7H16M9S</total_travel_time>
    <total_travel_distance>313995.8529815668</total_travel_distance>
    <utilisation>11.438097479423876</utilisation>
</Plan>

Entity: Plan_Area (Output)

For internal use only.

Entity: Plan_Break (Output)

Holds details about each implicit break (Shift_Break) in the route. Does not store any details about breaks scheduled as break class activities.

Attribute NameData TypeDescriptionPKM/O
rankIntegerSpecifies the position of this break in the plan.

Notes: Starts from 1. Visits are included in the ranking order
PKM
resource_idString(32)Specifies the id of the resource this break relates to.

Foreign Key: Plan_Route
PKM
shift_start_datetimeDate TimeDefines the start date time of the shift.

Foreign Key: Plan_Route
PKM
end_timeDate TimeDefines the end date time for the break.M
plan_idInt64The id of the plan this break relates to.M
start_timeDate TimeDefines the start date time for the break.M
status_idIntegerDefines the current status of the break.M(10)
shift_break_idString(32)Specifies the id of the shift break this relates to.

Notes: One of shift_break_id or shift_type_break_id will be populated
O
shift_type_break_idString(32)Specifies the id of the shift type break this break relates to.

Notes: One of shift_break_id or shift_type_break_id will be populated
O

Entity: Plan_Deletion (Output)

This records the change in the plan as a result of a deletion of an object such an activity or resource. This enable external application to identify changes in the plan when only plan changes are being broadcast.

Warning

All time spans are represented in the format "P0Y0M0DT0H0M0S" or just "PT0H0M0S" for a value less than one day.

Where the primary key of the object to be deleted is a datetime or time span then the full xml format must be specified in these fields for the deletion to take effect. e.g. 2007-12-03T12:00:00+01:00

For full specification of duration refer to this link:-

http://www.w3.org/TR/2001/REC-xmlschema-2-20010502/#duration

Attribute NameData TypeDescriptionPKM/O
object_pk_name1String(40)The name of the column.PKM
object_pk_name2String(40)The name of the column.PKM
object_pk_name3String(40)The name of the column.PKM
object_pk_name4String(40)The name of the column.PKM
object_pk1String(32)Primary key value 1.PKM
object_pk2String(32)Primary key value 2.

Notes: Second part if composite primary key.
PKM
object_pk3String(32)Primary key value 3.

Notes: Third part if composite primary key.
PKM
object_pk4String(32)Primary key value 4.

Notes: Fourth part if composite primary key.
PKM
object_type_idString(40)The type of object the error refers too.

Notes: Valid entity name
PKM
plan_idInt64The plan id the object was deleted on.M

Entity: Plan_Depot_Transfer (Output)

Holds details about each transfer made for parts from one depot to another.

Attribute NameData TypeDescriptionPKM/O
activity_id_childString(32)Specifies a unique identifier for the depot the part is being transferred to.PKM
activity_id_parentString(32)Specifies a unique identifier for the depot the part is being transferred from.PKM
part_idString(32)Specifies a unique identifier for the part transferred.PKM
required_by_timeDate TimeSpecifies the time the part is needed at the child depot by.PKM
costDoubleSpecifies the overall cost for the transfer.M
plan_idInt64Defines the plan this transfer is included in.M
quantityIntegerSpecifies the quantity of part transferred.M

Entity: Plan_Info (System)

For internal use only.

Entity: Plan_Load_Status (System)

For internal use only.

Entity: Plan_Point (Output)

For internal use only.

Entity: Plan_Polygon (Output)

For internal use only.

Entity: Plan_Resource (Output)

Holds details about each resource in the plan and the cost margin calculated.

Note

Statistics for utilisation and total time for activities/breaks/etc. will not be included if the resource is a parallel or bucket resource.

Attribute NameData TypeDescriptionPKM/O
resource_idString(32)The resource used in the plan.PKM
plan_idInt64The plan it is included in.

Foreign Key: Plan
M
average_travel_distanceDoubleThe average distance each resource travels.O
average_travel_timeTime SpanThe average amount of time each resource spends travelling.O
max_parallel_allocationsIntegerThe maximum number of parallel allocations made at any single time in the plan (for parallel resources only).O
resource_marginDoubleNet value of the schedule for this resource.O
total_allocationsIntegerThe total number of allocations made to this resource in the plan.O
total_break_timeTime SpanThe total amount of time spent as breaks.O
total_on_site_timeTime SpanThe total amount of time spent on-site doing activities.O
total_private_timeTime SpanThe total amount of time spent undertaking private activities.O
total_travel_timeTime SpanThe total amount of travel time in all routes for this resource.O
total_unutilised_timeTime SpanThe total amount of unutilised time in all routes for this resource.O
utilisationDoubleThe amount of resource availability utilised in the plan as %.O

Example

<Plan_Resource>
    <plan_id>1347</plan_id>
    <resource_id>TEST27</resource_id>
    <average_travel_time>PT0S</average_travel_time>
    <average_travel_distance>0</average_travel_distance>
    <total_allocations>1</total_allocations>
    <utilisation>3.125</utilisation>
</Plan_Resource>

Entity: Plan_Route (Output)

Holds details about each route included in a plan. A route relates to each resource and a shift.

Note

When Shift Patterns have been used the shift_pattern_id attribute will be populated and the shift_id attribute is not populated.

Note

Statistics for utilisation and total time for activities/breaks/etc. will not be included if the resource is a bucket resource.

Attribute NameData TypeDescriptionPKM/O
resource_idString(32)The resource used in the plan.

Foreign Key: Plan_Resource
PKM
shift_start_datetimeDate TimeThe time the shift started.PKM
plan_idInt64The plan it is included in.M
shift_end_datetimeDate TimeThe time the shift ended.M
shift_overtime_endDate TimeThe time the overtime period ended.M
average_travel_distanceDoubleThe average distance each resource spends travelling.O
average_travel_timeTime SpanThe average amount of time each resource spends travelling on this route.O
route_marginDoubleNet value of the schedule for this route.O
shift_actual_endDate TimeThe time the shift actually ended.O
shift_actual_startDate TimeThe time the shift actually did start.O
shift_idString(32)The shift the route has been planned for.

Notes: If the shift has been generated from a Shift Pattern then the shift id here will not be populated.
O
shift_pattern_idString(32)The Shift Pattern id from which this route and shift were derived.

Notes: If the shift has been created using a shift pattern then the shift pattern id is populated.
O
snap_timeTime SpanThe snap time allowed for this shift.O
total_allocationsIntegerThe total number of allocations made for this route in the plan.O
total_break_timeTime SpanThe total amount of time spent as breaks.O
total_on_site_timeTime SpanThe total amount of time spent on-site doing activities.O
total_private_timeTime SpanThe total amount of time spent undertaking private activities.O
total_travel_timeTime SpanThe total amount of travel time in the route.O
total_unutilised_timeTime SpanThe total amount of unutilised time in this route.O
utilisationDoubleThe amount of utilised time in this route as %.O
vehicle_idString(32)Vehicle id which the resource used during the shift.

Foreign Key: Vehicle
O

Example

<Plan_Route>
    <plan_id>1347</plan_id>
    <resource_id>Test25max</resource_id>
    <shift_id>Test25max_03/01/2006 09:00</shift_id>
    <average_travel_time>PT0S</average_travel_time>
    <average_travel_distance>0</average_travel_distance>
    <total_allocations>2</total_allocations>
    <utilisation>6.25</utilisation>
</Plan_Route>

Entity: Plan_Split_Resource_Order (Output)

Specifies the preferential ordering of resources that was used for allocating this activity when choosing which resource to split to. This ordering can then be provided as input via the Split_Resource_Order table when committing the activity so that the same split selection is maintained.

Note

It's possible for this ordering to include resources that were not used for any of the allocations for this activity.

Note

See Split_Resource_Order for more details of how this ordering can be used in the input.

Attribute NameData TypeDescriptionPKM/O
activity_idString(32)Specifies the id of the activity this relates to.PKM
sequenceIntegerDefines the position in the sequence.PKM
plan_idInt64The plan this is included in.M
resource_idString(32)Specifies the id of the resource this relates to.M
is_fixedBooleanWhether this resource in this position in the sequence is fixed.O

Entity: Plan_Travel (Output)

Holds details about each element of travel in the route.

Attribute NameData TypeDescriptionPKM/O
resource_idString(32)The resource used in the plan.

Foreign Key: Plan_Route
PKM
start_timeDate TimeThe date and time the travel started.PKM
distanceDoubleThe distance of the travel.M
end_timeDate TimeThe date and time the travel finished.M
expected_travel_timeTime SpanThe amount of time the journey is or was expected to take.M
plan_idInt64The plan it is included in.M
activity_idString(32)The activity the travel relates to.

Foreign Key: Allocation
O
end_location_idString(32)The end location for the travelO
previous_activity_idString(32)The activity id the travel started from.

Foreign Key: Allocation
O
previous_visit_idIntegerThe activity visit id the travel started from.

Foreign Key: Allocation

Notes: Must be present if previous_activity_id is present.
O
schedule_event_idString(32)If a resource's travel starts from a location defined by a schedule_event the schedule_event_id will be recorded hereO
shift_idString(32)The shift the route has been planned for.O
shift_pattern_idString(32)The Shift Pattern id from which this route and shift were derived.

Notes: If the shift has been created using a shift pattern then the shift pattern id is populated.
O
shift_start_datetimeDate TimeThe start date time of the shift.

Foreign Key: Plan_Route
O
start_location_idString(32)The start location for the travel.O
visit_idIntegerThe activity visit id the travel relates to.

Foreign Key: Allocation

Notes: Must be present if activity_id is present.
O

Example

<Plan_Travel>
    <plan_id>1347</plan_id>
    <resource_id>TEST28max</resource_id>
    <shift_id>TEST28max</shift_id>
    <distance>7788.64410536263</distance>
    <end_time>2006-01-03T11:15:00+00:00</end_time>
    <start_time>2006-01-03T11:04:10+00:00</start_time>
</Plan_Travel>

Entity: Plan_Travel_Part_Usage (Output)

Holds details about any part usage incurred while a vehicle is travelling.

Attribute NameData TypeDescriptionPKM/O
part_idString(32)The id of the part used during this travel.PKM
resource_idString(32)The id of the resource this relates to.

Foreign Key: Plan_Travel
PKM
start_timeDate TimeThe date and time the travel started.

Foreign Key: Plan_Travel
PKM
plan_idInt64The plan id.M
usageIntegerThe usage of the part during this travel.M
vehicle_idString(32)The id of the vehicle used during this travel.M

Example

<Plan_Travel_Part_Usage>
    <plan_id>1347</plan_id>
    <resource_id>TEST28max</resource_id>
    <start_time>2006-01-03T11:04:10+00:00</start_time>
    <vehicle_id>RANGE</vehicle_id>
    <vehicle_id>V1</vehicle_id>
    <usage>24</usage>
</Plan_Travel_Part_Usage>

Entity: Position (Input)

This is a display only table that contains the positions a resource can hold within a team.

Attribute NameData TypeDescriptionPKM/O
idString(32)A unique id.PKM
descriptionString(2000)A description for this position.O
position_idString(32)The id of the parent position.

Foreign Key: Position
O
sequenceIntegerA sequence number, used to define the sort order of the positions.O

Entity: Productivity_Category (Input)

This is used to categorise productive time, which is used when applying both incentives and (productive time) rules.

Attribute NameData TypeDescriptionPKM/O
idString(32)Defines a unique id for the productivity category.PKM
descriptionString(2000)Provides a description for this category.O
productivity_category_idString(32)Defines the id of a parent category.

Foreign Key: Productivity_Category

Notes: Productive time in this category will also count towards the parent category.
O

Entity: Region (Input)

Defines a (usually geographic) region to limit which resources are able to carry out a given activity. Activities are linked to one or more regions via their location, and the Location_Region entity. Resources are linked to regions via the Resource_Region entity.

If an activity is linked to a region then a resource must also be linked to either this region or a parent region (or have non-zero out_of_region_multiplier) to allow the scheduler to use the resource for this activity. If an activity is not in a region there is no restriction.

If an activity is linked to multiple regions then the resource must also be linked to all specified regions, either directly or via a parent (or grandparent, etc.) region.

Attribute NameData TypeDescriptionPKM/O
idString(32)Defines a unique, system-generated, id for the region.PKM
descriptionString(2000)Provides a description for the region.O
region_idString(32)Specifies the id of the parent region to which the region belongs.

Foreign Key: Region

Notes: A region can only have one parent region id.
O

Example

<Region>
    <id>Test21min</id>
</Region>
<Region>
    <id>Test21max</id>
    <description>test 21 max</description>
    <region_id>Test21min</region_id>
</Region>

Entity: Resource_Capacity (Input)

This links a capacity to a resource. It is possible for a resource to have more than one capacity, representing for example different compartments within a van. If no resource capacity is specified the resource is assumed to be capable of carrying any parts.

Attribute NameData TypeDescriptionPKM/O
capacity_idString(32)Defines a unique id for the resource capacity.

Foreign Key: Capacity
PKM
resource_idString(32)Defines the id of the resource to which this capacity belongs.

Foreign Key: Resources
PKM

Entity: Resource_Category (Input)

Represents the association between a resource and a category.

Attribute NameData TypeDescriptionPKM/O
categorisation_idString(32)The id of the categorisation to link to the resource.

Foreign Key: Category
PKM
resource_idString(32)The id of the resource to be associated with a category and categorisation.

Foreign Key: Resources
PKM
category_idString(32)The id of the category to link to the resource.

Foreign Key: Category
M

Entity: Resource_Class (Lookup)

Resource Class defines whether a resource is: a standard resource (i.e. a single worker); a team of resources; a bucket resource, which represents an external contractor capable of completing activities, possibly consisting of multiple workers unknown and irrelevant to the DSE; or a parallel resource capable of carrying out multiple activities at once (i.e. a machine with batch processing capabilities).

Attribute NameData TypeDescriptionPKM/O
idString(8)Defines a unique id for the resource class.

Allowed Values: STANDARD, TEAM, BUCKET, PARALLEL
PKM
message_idIntegerDefines the id of the message describing the resource class purpose.O

Entity: Resource_Custom_URL (Input)

Defines the custom url to be used for a particular resource. Custom url parameters can be specified for the resource, the use of which is defined on the URL_Parameter record for the specific custom url id (see example below).

<Resource_Custom_URL>
    <resource_id>R1</resource_id>
    <custom_url_id>urlResources</custom_url_id>
    <custom_parameter_value1>255ER1</custom_parameter_value1>
  </Resource_Custom_URL>
  <Custom_URL>
    <id>urlResources</id>
    <name>Prepare work order</name>
    <custom_action>RESOURCE_DETAIL_FORM</custom_action>
  </Custom_URL>
  <URL_String>
    <custom_url_id>urlResources</custom_url_id>
    <sequence>1</sequence>
    <string_value>https://example.com/</string_value>
  </URL_String>
  <URL_String>
    <custom_url_id>urlResources</custom_url_id>
    <sequence>3</sequence>
    <string_value>%23frmEmployees</string_value>
  </URL_String>
  <URL_Parameter>
    <custom_url_id>urlResources</custom_url_id>
    <sequence>2</sequence>
    <custom_parameter>1</custom_parameter>
  </URL_Parameter>
Attribute NameData TypeDescriptionPKM/O
custom_url_idString(32)Defines the custom url linked to the specified resource.

Foreign Key: Custom_URL
PKM
resource_idString(32)Defines the resource linked to the specified custom url.

Foreign Key: Resources
PKM
custom_parameter_value1String(2000)Defines the first custom url parameter value to be used in the custom url for this resource. The sequence in the url string is defined on URL_Parameter. See example code above.O
custom_parameter_value2String(2000)Defines the second custom url parameter value to be used in the custom url for this resource. The sequence in the url string is defined on URL_Parameter. See example code above.O
custom_parameter_value3String(2000)Defines the third custom url parameter value to be used in the custom url for this resource. The sequence in the url string is defined on URL_Parameter. See example code above.O
custom_parameter_value4String(2000)Defines the fourth custom url parameter value to be used in the custom url for this resource. The sequence in the url string is defined on URL_Parameter. See example code above.O

Entity: Resource_Movement (Output)

For use with the Advanced Planning Module only. Indicates what changes to the resource structure are recommended. An entry is made for any proposed new resources, change in location of resources or removal of resources from the plan.

Attribute NameData TypeDescriptionPKM/O
movement_typeIntegerThe type of resource change being recommended by the APCS.

Allowed Values: 1 = Added, 2 = Removed, 3 = Location Change
M
plan_idInt64Id of the plan.M
resource_idString(32)The resource id.

Foreign Key: Plan_Resource
M
latitudeDoubleThe latitude of the location where the resource is being added.O
location_idString(32)The location if it already exists.O
longitudeDoubleThe longitude of the location where the resource is being added.O
resource_type_idString(32)The resource type id of created resources.O

Entity: Resource_Part (Input)

Defines what parts and quantity carried by a resource. There is an entry for each part a resource has available with the quantity of stock to be used in completing activities. (This functionality has been replaced by Part Stock. Part Stock should be used instead).

Warning

This functionality has been replaced by Part Stock. Part Stock should be used instead.

Attribute NameData TypeDescriptionPKM/O
part_idString(32)Defines a unique id for the part.

Foreign Key: Part
PKM
resource_idString(32)Defines a unique id for the resource.

Foreign Key: Resources
PKM
stockIntegerDefines the amount of stock carried by the resource.M(1)

Example

<Resource_Part>
    <resource_id>TEST30</resource_id>
    <part_id>TEST30</part_id>
    <stock>1</stock>
</Resource_Part>

Entity: Resource_Pool (Input)

Defines a set of resources which may be used to schedule a set of activities linked in a "chain". Activities are linked into a chain using Activity Resource Pool Set. All activities in the chain must be scheduled to resources from a single Resource Pool, although there may be several alternative Resource Pools in the Resource Pool Set. Some Resource Pools may be preferred to others.

Warning

The use of Resource Pools should be as limited as possible. Alternative “region” based constraints should be considered before using Resource Pools. IFS PSO Product Development must be consulted before using Resource Pools.

Attribute NameData TypeDescriptionPKM/O
idString(32)Defines a unique id for the Resource Pool.PKM
descriptionString(2000)Provides a description of the Resource Pool, which may be shown in the Scheduling WorkbenchO
pool_multiplierDoubleDetermines the preference for this Resource Pool. Default is 1. Use a higher multiplier e.g. 1.5 to prefer the use of this pool to others in the same Resource Pool Set.O

Example

<Resource_Pool>
    <id>Route1</id>
    <pool_multiplier>1.3</pool_multiplier>
</Resource_Pool>

Entity: Resource_Pool_Item (Input)

Defines a Resource or a Resource Type to be a member of a Resource Pool. Many resources (or types) may be in a single resource pool, and a resource (or type) may be in more than one pool.

Note

If shift_id is set, permanent resource pool memberships are overridden for the duration of that shift for any resource pools in the same resource pool set. Resource pool memberships in other resource pool sets are unaffected.

Warning

The use of Resource Pools should be as limited as possible. Alternative “region” based constraints should be considered before using Resource Pools. IFS PSO Product Development must be consulted before using Resource Pools.

Attribute NameData TypeDescriptionPKM/O
idString(32)Specifies the unique id for the Resource Pool Item.PKM
resource_pool_idString(32)Specifies the identifier of the Resource Pool to which this item belongs.

Foreign Key: Resource_Pool
M
resource_idString(32)Specifies the identifier of a resource to be included in the Resource Pool.

Foreign Key: Resources
O
resource_type_idString(32)Specifies the identifier of a resource type to be included in the Resource Pool

Foreign Key: Resource_Type
O
shift_idString(32)Specifies the identifier of the shift to which this item belongs. If unspecified, the membership applies to all shifts.

Foreign Key: Shift
O

Example

<Resource_Pool_Item>
    <id>Route1_item1</id>
    <resource_pool_id>Route1</resource_pool_id>
    <resource_type_id>Stage1</resource_type_id>
</Resource_Pool_Item>

Entity: Resource_Pool_Set (Input)

Defines a number of different groups of resources which may be used to schedule a set of activities linked in a ''chain''. Activities are linked into a chain using Activity Resource Pool Set. All activities in the chain must be scheduled to resources from a single Resource Pool, although any of the Resource Pools in this set may be chosen.

Warning

The use of Resource Pools should be as limited as possible. Alternative “region” based constraints should be considered before using Resource Pools. IFS PSO Product Development must be consulted before using Resource Pools.

Attribute NameData TypeDescriptionPKM/O
idString(32)Specifies the unique id for the Resource Pool Set.PKM
descriptionString(2000)Provides a description for this Resource Pool SetO

Example

<Resource_Pool_Set>
    <id>ProcessingRoutes</id>
    <description>The various ways in which jobs may be processed</description>
</Resource_Pool_Set>

Entity: Resource_Pool_Set_Item (Input)

An item within a resource pool set.

Attribute NameData TypeDescriptionPKM/O
resource_pool_idString(32)The id of the resource pool.

Foreign Key: Resource_Pool
PKM
resource_pool_set_idString(32)The id of the resource pool set.

Foreign Key: Resource_Pool_Set
PKM
pool_multiplierDoubleThe preference override for this resource pool. Defaults to the value on the resource pool.O

Entity: Resource_Preference (Input)

This instructs the scheduler to either not consider a resource/resource type for an activity, activity type or location, or to only consider specified resources/resource types, or to prefer resources on a sliding scale of preference from any values greater than 0 and less than 1.

If any resource preferences are created with values of 1, then one of these resources must be used for the activity or location. So if resource A and B have a preference of 1 for an activity, and resource C has preference 0.9, then only A or B may be allocated to the activity, despite the strong soft preference for resource C. As another example, if resource preferences are created with values of 0.5 and then one with a value of 1 then only this last one will be considered for having the activity allocated.

If resource preferences are created with values of 0.5 and then one with a value of 1 then only this last one will be considered for having the activity allocated.

The DSE will prefer particular resources for an activity by internally modifying the value for the activity if that resource is used. So for example an activity with a normal value of 1000 will have a resultant value (for allocating the activity to a resource) as shown below for various preference values:

PreferenceValue
00(activity will not be allocated to this resource)
0.1200
0.51000
0.91800
1.02000(also stops resources with a preference less than 1 being chosen)
Not specified1000

Note

When no resource preference is specified for some resources but exists for others then those without a resource preference defined have a default preference value of 0.5.

Note

Where a preference exists for the resource type and the resource of that type against an activity/location then the preferences will be combined as follows. If either of the preferences are 0, the result will be a preference of 0. Otherwise, if either of the preferences are 1, the result will be a preference of 1. Otherwise, the preferences A and B will be combined using the formula "(A * B) / (((1 - A) * (1 - B)) + (A * B))"

For example, if a preference of 0.8 is combined with a preference of 0.3 then the resulting preference would be (0.8 * 0.3) / (((1 - 0.8) * (1 - 0.3)) + (0.8 * 0.3)) = 0.63.

Note

Only one of activity_id, activity_type_id and location_id must be supplied.

Note

Only one of resource_id or resource_type_id must be supplied.

Note

An availability or availability pattern may be optionally linked to the resource preference. The resource preference will then only be applied within the availability period. If multiple resource preference availabilities overlap then the preferences will be combined in the usual way. Only one of availability_id or availability_pattern_id may be provided (or neither).

Attribute NameData TypeDescriptionPKM/O
idString(32)Specifies the unique id for the Resource Preference.PKM
override_priorityIntegerDefines a precedence order for preferences when multiple preferences could apply to the same allocation. The preference with the higher override priority will be used. See the Constraints and Preferences Guide for details of how preferences are combined when the override priorities are equal.M(1)
preferenceDoubleProvides the preference value.

Notes: 0 = Resource cannot be used on this activity. >0 <1 = Sliding scale of preference greater than 0 and less than 1. 1=No other resources to be considered.
M
activity_idString(32)Specifies the activity to which the preference applies.

Foreign Key: Activity

Notes: Exactly one and only one of these foreign keys in Arc 1 must be provided.
O
activity_pool_idString(32)Defines the id of the activity pool this relates to. The preference will apply to all activities in the activity pool.

Foreign Key: Activity_Pool
O
activity_type_idString(32)Specifies the activity type to which the preference applies.

Foreign Key: Activity_Type
O
availability_idString(32)Specifies the unique id of an availability.

Foreign Key: Availability
O
availability_pattern_idString(32)Specifies the unique id of an availability pattern.

Foreign Key: Availability_Pattern
O
descriptionString(2000)Provides a description of the Resource Preference, which may be shown in the Scheduling WorkbenchO
location_idString(32)Specifies the location to which the preference applies.

Foreign Key: Location
O
resource_idString(32)Specifies the resource to which the preference applies.

Foreign Key: Resources

Notes: Exactly one and only one of these foreign keys in Arc 2 must be provided.
O
resource_type_idString(32)Specifies the resource type to which the preference applies.

Foreign Key: Resource_Type
O

Examples

<Resource_Preference>
    <id>RP1</id>
    <activity_id>TEST27_A</activity_id>
    <resource_id>TEST27</resource_id>
    <preference>1</preference>
</Resource_Preference>
<Resource_Preference>
    <id>RP2</id>
    <activity_id>TEST27_B</activity_id>
    <resource_id>TEST27</resource_id>
    <preference>0.5</preference>
</Resource_Preference>
<Resource_Preference>
    <id>RP3</id>
    <activity_id>TEST27_C</activity_id>
    <resource_id>TEST27</resource_id>
    <preference>0</preference>
</Resource_Preference>

Entity: Resource_Region (Input)

Links resources with regions for the purpose of limiting scheduling of activities to resources within the region.

Note

It is possible for a location to be linked to multiple regions, in which case there may be more than one within_region_multiplier which applies. In this case the override_priority is used to filter which of these are applied - only the highest value(s) are applied.

If after filtering there are still multiple values that apply then the within_region_multipliers are combined, so effectively all are applied.

For example, suppose there are 3 regions A, B and C linked to an activity (via it's location), and a resource is linked to all 3 regions as follows:

  • Region A: within region multiplier 1.5, override priority 1
  • Region B: within region multiplier 1.2, override priority 2
  • Region C: within region multiplier 1.1, override priority 2

Since the within region multiplier on region A has a lower override priority, this value will be ignored. The other two values will be combined so that the overall within region multiplier for this resource and this activity will be 1.1 * 1.2 = 1.32.

Note

If the resource is linked to some but not all of the activity regions, then the minimum value between out_of_region_multiplier and within_region_multiplier will be used.

Note

Setting the within region multiplier to zero makes it a hard constraint, meaning that the resource is not permitted to work in this region.

Attribute NameData TypeDescriptionPKM/O
region_idString(32)Specifies the unique id for the Region.

Foreign Key: Region
PKM
resource_idString(32)Specifies the unique id for the Resource.

Foreign Key: Resources
PKM
override_priorityIntegerDefines a precedence order for within region multipliers when multiple values apply to the same activity.M(1)
within_region_multiplierDoubleSpecifies a multiplier on the value of the resource carrying out activities in this region. The value 1 has no effect.O

Example

<Resource_Region>
    <region_id>TEST34</region_id>
    <resource_id>TEST34</resource_id>
</Resource_Region>

Entity: Resource_Region_Availability (Input)

This defines what regions are linked to a resource with a time dependency. If resource region availabilities are defined then the resource will only be treated as being a member of the region within the availability periods. If the resource has a region and no availabilities defined then the resource is treated as always being a member of the region.

See the Resource_Region entity for details of combining within_region_multiplier values and the use of override_priority.

Note

Setting the within region multiplier to zero makes it a hard constraint, meaning that the resource is not permitted to work in this region during this time.

Attribute NameData TypeDescriptionPKM/O
idString(32)Defines a unique id for the resource region availability.PKM
override_priorityIntegerDefines a precedence order for within region multipliers when multiple values apply to the same activity.M(1)
region_idString(32)Specifies the unique id for the Region.

Foreign Key: Resource_Region
M
resource_idString(32)Specifies the unique id for the Resource.

Foreign Key: Resource_Region
M
availability_idString(32)Specifies the unique id for the Availability.

Foreign Key: Availability

Notes: One of availability_id or availability_pattern_id must be provided.
O
availability_pattern_idString(32)Specifies the unique id for the Availability Pattern.

Foreign Key: Availability_Pattern

Notes: One of availability_id or availability_pattern_id must be provided.
O
within_region_multiplierDoubleIf specified, this overrides the resource's within region multiplier for this region during the defined period.O

Entity: Resource_Skill (Input)

This defines what skills are linked to a resource. When determining what skills a resource has, a union of the skills between resource skills and resource type skills will be made.

Note

Proficiencies are implemented so the weakest proficiency takes precedence. So if an activity requires 2 skills A and B, and a resource has skill A with proficiency 2 and skill B with proficiency 0.5, the overall proficiency for the resource would be 0.5. This means it would take him twice as long to carry out the work.

If the proficiency is not specified for a particular resource skill, then this is ignored from the proficiency calculation.

In the case where a resource has been committed to an activity but only has skill A with proficiency 2 (and does not have skill B), we would assume the proficiency on skill B to be 1, so the overall proficiency would be 1. If a resource only had skill B with proficiency 0.5, the overall proficiency would still be 0.5, so it would take twice as long.

Attribute NameData TypeDescriptionPKM/O
resource_idString(32)Specifies the unique id for the Resource.

Foreign Key: Resources
PKM
skill_idString(32)Specifies the unique id for the Skill.

Foreign Key: Skill
PKM
in_use_costDoubleThe cost to apply when the skill is available at the time and being used.O
in_use_multiplierDoubleSpecifies the multiplier on the value of the skill being available and in use.O
not_in_use_costDoubleThe cost to apply when the skill is available at the time but not being used.O
not_in_use_multiplierDoubleSpecifies the multiplier on the value of the skill being available and not in use.O
proficiencyDoubleSpecifies the level of the resource's proficiency in the given skill. 1 is normal speed; 0.5 is half as quick; 2 is twice as quick. A value of 0 is equivalent to the resource not having the skill.O

Example

<Resource_Skill>
    <resource_id>TEST33</resource_id>
    <skill_id>TEST33</skill_id>
</Resource_Skill>

Entity: Resource_Skill_Availability (Input)

This defines what skills are linked to a resource with a time dependency. Such skills would typically be periods of certification to undertake a particular type of work. This can also be used for team resources where the individual resources within the team are subject to change.

Attribute NameData TypeDescriptionPKM/O
override_priorityIntegerDefines a precedence order for the skill proficiency to use when skill availabilities overlap. The lower proficiency value will be used if override priorities are equal.M(1)
resource_idString(32)Specifies the unique id for the Resource.

Foreign Key: Resource_Skill
M
skill_idString(32)Specifies the unique id for the Skill.

Foreign Key: Resource_Skill
M
availability_idString(32)Specifies the unique id for the Availability.

Foreign Key: Availability

Notes: One of availability_id or availability_pattern_id must be provided.
O
availability_pattern_idString(32)Specifies the unique id for the Availability Pattern.

Foreign Key: Availability_Pattern

Notes: One of availability_id or availability_pattern_id must be provided.
O
in_use_costDoubleThe cost to apply when the skill is available at the time and being used.O
in_use_multiplierDoubleSpecifies the multiplier on the value of the skill being available and in use.O
not_in_use_costDoubleThe cost to apply when the skill is available at the time but not being used.O
not_in_use_multiplierDoubleSpecifies the multiplier on the value of the skill being available and not in use.O
proficiencyDoubleIf specified, this overrides the resource's proficiency in this skill during the defined period.O

Entity: Resource_Type (Input)

Defines types of resources to be used in the scheduling. Used to define default values for resources of a specified type. If values are not specified in the source type then they must be specified on the resource.

Note

When Activities are fixed to a resource by the EA the max_travel constraint may be broken. The scheduler will allow other activities to be scheduled, provided the max_travel rule is obeyed on the travel to these activities, but does not apply it on the travel to the fixed activity / travel home.

Attribute NameData TypeDescriptionPKM/O
idString(32)Specifies the unique id for the Resource Type.

Notes: Default resource type id of ‘Default’ already exists.
PKM
cost_kmDoubleDefines the cost per KM travelling.M(0.25)
cost_phDoubleDefines the cost per hour on shift.M(20)
cost_photDoubleDefines the cost per hour on shift overtime.M(30)
out_of_region_multiplierDoubleDefines a multiplier to be applied to the value of any activities done by a resource outside his/her region. So a value of 0 means that activities cannot be done outside the region, whereas a value of 1 means that activities may freely be done outside the region and are just as likely to be chosen as ones inside the region.

Notes: If not defined a value of 0 is assumed.
M(0)
resource_class_idString(8)Specifies which class of resource resources of this type belong to (STANDARD, TEAM, BUCKET or PARALLEL)

Foreign Key: Resource_Class
M(STANDARD)
utilisationIntegerDefines the maximum amount of time to be scheduled in the shift for all the resources of this type.

Notes: Values between 0 and 100. Value to be used only if Shift.Utilisation is not provided or Resource.Utilisation is not provided. Default 100.
M(100)
descriptionString(2000)Provides a description for the resource type.O
display_context_idString(32)Provides the context to determine which list should be used when viewing in the Scheduling Workbench.

Notes: This should match the id of a Display_Context row defined in the system data.
O
hire_costDoubleDefines the cost of hiring resources of this type. If not provided then no new resources can be included for planning.

Notes: Only used in Advanced Planning Module.
O
icon_idString(32)The id of an icon to use for this resource type.

Foreign Key: Icon
O
location_id_endString(32)Specifies the end location id when finishing shift.

Foreign Key: Location

Notes: If not supplied then must be set on all resources.
O
location_id_startString(32)Specifies the start location id when logging on to shift.

Foreign Key: Location

Notes: If not supplied then all associated shifts for this resource will need to have the start location set. If not supplied to Resource_Type and Resource the resource will not be created.
O
max_travelTime SpanSpecifies the max travel time away from the start location a resource will travel.O
parallel_index_categorisationString(32)Activities of the same category within the specified categorisation will be separated onto different rows when displayed in the Scheduling Workbench.

Foreign Key: Categorisation

Notes: Only applies for parallel resources.
O
profile_id_travelString(32)Specifies the id of the Profile to be used for this Resource Type. The corresponding Travel_Time_Profile to be used is then defined by setting the parameter TravelTimeProfileId on the specified Profile.

Notes: If not present then the Travel_Time_Profile specified by the parameter TravelTimeProfileId on the active Profile (which may be the default Profile unless otherwise set at, for example, the Input_Reference or Dataset level) will be used.
O
release_costDoubleThe cost of releasing a resource of this type. If not provided the APCS will not release any resources of this type.

Notes: Only used in Advanced Planning Module
O
relocation_costDoubleSpecifies the cost of relocating a resource of this type. If not provided a resource of this type cannot be relocated.

Notes: Only used in the Advanced Planning Module.
O
rule_collection_idString(32)Specifies the id of the rule collection associated with resources of this type.

Foreign Key: Rule_Collection
O
separation_model_idString(32)Specifies the id of the separation model associated with resources of this type.

Foreign Key: Separation_Model
O
shift_costDoubleDefines the one off cost of a resource being given work in a shift. Can be overridden at Resource and Shift levels.

Notes: If a shift_cost is specified the cost will be applied to the shift as soon as there is at least one activity with a location in the shift. Breaks and locationless private appointments will be ignored.
O
shift_cut_offTime SpanWhen the current schedule time exceeds the cut off period activities can no longer be scheduled to the shift.

Notes: The shift cut off is added to the shift start time and can be negative.
O
shift_visit_costDoubleThe cost applied to every CALL class activity scheduled in the resource's routeO
speedfactorDoubleDefines the proportion of any travel time approximation made by the DSE. If this is set to 0.5, the DSE assumes half its estimated travel time as the actual travel time. If it is set to 2, the DSE assumes twice its estimated travel time.O
time_zoneString(32)Specifies the id of the time zone associated with resources of this type.O
travel_cost_model_idString(32)Specifies the travel cost model to use for resources of this type.

Foreign Key: Travel_Cost_Model
O
travel_fromTime SpanProvides the maximum unpaid travel time at end of shift.O
travel_toTime SpanProvides the maximum unpaid travel time at start of shift.O

Default Entries

IDDescriptionCost KMCost PHCost PHOTMax TravelSpeed FactorUtilisation
DefaultDefault resource type.252030PT4H0M0S1100

Examples

<Resource_Type>
    <id>Test23min</id>
    <cost_km>1</cost_km>
    <cost_ph>1</cost_ph>
    <cost_phot>1</cost_phot>
    <max_travel>PT4H</max_travel>
    <speedfactor>1</speedfactor>
    <utilisation>100</utilisation>
</Resource_Type>
<Resource_Type>
    <id>Test23max</id>
    <description>resource type test 23 max</description>
    <cost_km>1</cost_km>
    <cost_ph>1</cost_ph>
    <cost_phot>1</cost_phot>
    <location_id_start>loc23start</location_id_start>
    <location_id_end>loc23end</location_id_end>
    <max_travel>PT4H</max_travel>
    <travel_from>PT4H</travel_from>
    <travel_to>PT4H</travel_to>
    <speedfactor>1</speedfactor>
    <utilisation>100</utilisation>
</Resource_Type>

Entity: Resource_Type_Capacity (Input)

This links a capacity to a resource type. It is possible for a resource type to have more than one capacity, representing for example different compartments within a van. If no resource type capacity is specified the resource type is assumed to be capable of carrying any parts.

Attribute NameData TypeDescriptionPKM/O
capacity_idString(32)Specifies the unique id for the Capacity.

Foreign Key: Capacity
PKM
resource_type_idString(32)Specifies the id of the resource type holding this capacity.

Foreign Key: Resource_Type
PKM

Entity: Resource_Type_Category (Input)

Represents the association between a resource type and a category.

Attribute NameData TypeDescriptionPKM/O
categorisation_idString(32)The id of the categorisation to link to the resource type.

Foreign Key: Category
PKM
resource_type_idString(32)The id of the resource type to be associated with a category and categorisation.

Foreign Key: Resource_Type
PKM
category_idString(32)The id of the category to link to the resource type.

Foreign Key: Category
M

Entity: Resource_Type_Custom_URL (Input)

Defines the custom url to be used for a particular resource type. Custom url parameters can be specified for the resource type, the use of which is defined on the URL_Parameter record for the specific custom url id (see example below).

<Resource_Type_Custom_URL>
    <resource_type_id>GAS</resource_type_id>
    <custom_url_id>urlResourceTypes</custom_url_id>
    <custom_parameter_value1>10</custom_parameter_value1>
  </Resource_Type_Custom_URL>
  <Custom_URL>
    <id>urlResourceTypes</id>
    <name>Prepare work order</name>
    <custom_action>RESOURCE_DETAIL_FORM</custom_action>
  </Custom_URL>
  <URL_String>
    <custom_url_id>urlResourceTypes</custom_url_id>
    <sequence>1</sequence>
    <string_value>https://example.com/</string_value>
  </URL_String>
  <URL_String>
    <custom_url_id>urlResourceTypes</custom_url_id>
    <sequence>3</sequence>
    <string_value>%23frmEmployees</string_value>
  </URL_String>
  <URL_Parameter>
    <custom_url_id>urlResourceTypes</custom_url_id>
    <sequence>2</sequence>
    <custom_parameter>1</custom_parameter>
  </URL_Parameter>
Attribute NameData TypeDescriptionPKM/O
custom_url_idString(32)Defines the custom url linked to the specified resource type.

Foreign Key: Custom_URL
PKM
resource_type_idString(32)Defines the resource type linked to the specified custom url.

Foreign Key: Resource_Type
PKM
custom_parameter_value1String(2000)Defines the first custom url parameter value to be used in the custom url for this resource type. The sequence in the url string is defined on URL_Parameter. See example code above.O
custom_parameter_value2String(2000)Defines the second custom url parameter value to be used in the custom url for this resource type. The sequence in the url string is defined on URL_Parameter. See example code above.O
custom_parameter_value3String(2000)Defines the third custom url parameter value to be used in the custom url for this resource type. The sequence in the url string is defined on URL_Parameter. See example code above.O
custom_parameter_value4String(2000)Defines the fourth custom url parameter value to be used in the custom url for this resource type. The sequence in the url string is defined on URL_Parameter. See example code above.O

Entity: Resource_Type_Location (Input)

Used to restrict the locations that can be used by the WISE when adding resources of this type. If no locations are specified the WISE is able to use any location. If some locations are specified then only those specified can be used.

Attribute NameData TypeDescriptionPKM/O
location_idString(32)Specifies the unique id for the Location.

Foreign Key: Location
PKM
resource_type_idString(32)Specifies the unique id for the Resource Type.

Foreign Key: Resource_Type
PKM

Entity: Resource_Type_Skill (Input)

This defines what skills are linked to resource types. When determining what skills a resource has, a union of the skills between resource skills and resource type skills will be made. Values from resource skill will take precedence over any values also specified in resource type skill.

See resource skill for details of the proficiency attribute.

Attribute NameData TypeDescriptionPKM/O
resource_type_idString(32)Specifies the unique id for the Resource Type.

Foreign Key: Resource_Type
PKM
skill_idString(32)Specifies the unique id for the Skill.

Foreign Key: Skill
PKM
in_use_costDoubleThe cost to apply when the skill is available at the time and being used.O
in_use_multiplierDoubleSpecifies the multiplier on the value of the skill being available and in use.O
not_in_use_costDoubleThe cost to apply when the skill is available at the time but not being used.O
not_in_use_multiplierDoubleSpecifies the multiplier on the value of the skill being available and not in use.O
proficiencyDoubleDefines the proficiency level of the resource type in the given skill. 1 is normal speed; 0.5 is half as quick; 2 is twice as quick. A value of 0 is equivalent to the resource not having the skill.O

Example

<Resource_Type_Skill>
    <resource_type_id>Test23min</resource_type_id>
    <skill_id>Skill1</skill_id>
</Resource_Type_Skill>

Entity: Resource_Type_Transition (Input)

These are used to allow the WISE to consider switching resources from one type to another. This could be to a more skilled resource type, or to a resource type with a different shift pattern for example.

Attribute NameData TypeDescriptionPKM/O
resource_type_id_fromString(32)Specifies the unique id of the Resource Type to transition from.

Foreign Key: Resource_Type
PKM
resource_type_id_toString(32)Specifies the unique id of the Resource Type to transition to.

Foreign Key: Resource_Type
PKM
transition_costDoubleDefines the cost of the transition. If not specified there is no cost.O

Entity: Resource_Wrapper (Input)

Allows exceptions to Activity_Pool_Wrapper, overriding whether it's required for specific resources, or allowing the duration to be overridden for specific resources.

Note

If there is a conflict due to a Resource_Wrapper row defined against an activity and resource type, with another row defined against an activity type and resource, the resource type will take precedence.

Attribute NameData TypeDescriptionPKM/O
idString(32)A unique id for the row.PKM
activity_idString(32)Specifies the id of the wrapper activity.

Foreign Key: Activity

Notes: One of activity_id or activity_type_id must be specified.
O
activity_type_idString(32)Specifies the id of the activity type. The row will apply to wrapper activities belonging to the activity type.

Foreign Key: Activity_Type

Notes: One of activity_id or activity_type_id must be specified.
O
duration_overrideTime SpanIf specified, if the wrapper activity is scheduled to this resource, this duration will be used directly as the expected duration, ignoring any other settings that affect the duration (auto duration, resource proficiency etc.)O
is_requiredBooleanIf set to false, then the wrapper activity will not be required for this resource.

Notes: If null, this will be assumed true.

Notes: Overrides the setting in Activity_Pool_Wrapper
O
resource_idString(32)Specifies the id of the resource.

Foreign Key: Resources

Notes: One of resource_id or resource_type_id must be specified.
O
resource_type_idString(32)Specifies the id of the resource type.

Foreign Key: Resource_Type

Notes: One of resource_id or resource_type_id must be specified.
O

Entity: Resources (Input)

Defines a resource and the costs associated with it. These are what are scheduled by the Dynamic Scheduling Engine.

Note

The plural Resources is used instead of Resource in order to avoid system naming conflicts.

Note

Max_travel is calculated from location_id_start.

Note

When Activities are fixed to a resource by the EA the max_travel constraint may be broken. The scheduler will allow other activities to be scheduled, provided the max_travel constraint is obeyed on the travel to these activities, but does not apply it on the travel to the fixed activity / travel home.

Note

Whenever the "travel_with_resource_id" is at a location, the resource must be at the same location. This constraint applies to the resource for the entire scheduling period (if specified on the resource/resource type), or for the shift/shift pattern if specified there.

If a value is specified on a shift/shift pattern, it overrides the value specified on the Resources or resource_Type.

The default value (if not specified anywhere) is that a resource is not constrained to travel with any other resource

A resource that is travelling with another resource will not save plan_travel records back to the Scheduling database, so on the Scheduling Workbench the apprentice/chaperone will show only the activities which they are doing, and no travel.

The costs incurred by the apprentice/chaperone doing their activity (which would normally be half of a coreq) will be the time cost of the duration of the activity only. The value of the activity will be computed as normal.

Skills etc may be attached to the activities/resources as normal.

Warning

The travel with resource functionality is not supported for use with splittable activities.

Note

The skills of the travel with resource can be inherited by the main resource system wide by setting system parameter 'TravelWithSkillsInherited', defaults to false. If set to true, the skills of the travelling with resource are inherited by the main resource for the time that they are travelling together (and provided the travelling with resource has the skill at that time).

Note

When Activities are fixed to a resource by the EA the Resources.max_travel or Resource_Type.max_travel constraint may be broken. The scheduler will allow other activities to be scheduled, provided the max_travel rule is obeyed on the travel to these activities, but does not apply it on the travel to the fixed activity / travel home.

Note

Where travel_from and overtime are both used, the travel home will be charged at normal shift rate up to the travel_from allowance, even if this travel is within the overtime period. For example if travel_from is set to 30 minutes the last 30 minutes of travel_home will be charged at the standard rate, regardless of whether or not it is within overtime.

Warning

Resources should not be deleted if allocated to activities with a status of committed or above.

Examples

<Resources>
    <id>Test25min</id>
    <location_id_start>TEST25</location_id_start>
    <location_id_end>TEST25</location_id_end>
    <resource_type_id>Default</resource_type_id>
    <max_travel>PT0H</max_travel>
    <travel_to>PT0H</travel_to>
    <travel_from>PT0H</travel_from>
    <cost_ph>1</cost_ph>
    <cost_km>1</cost_km>
</Resources>
<Resources>
    <id>Bob</id>
    <travel_with_resource_id>Carol</travel_with_resource_id>
    <location_id_start>TEST25</location_id_start>
    <location_id_end>TEST25</location_id_end>
    <resource_type_id>Default</resource_type_id>
    <max_travel>PT0H</max_travel>
    <travel_to>PT0H</travel_to>
    <travel_from>PT0H</travel_from>
    <cost_ph>1</cost_ph>
    <cost_km>1</cost_km>
</Resources>
Attribute NameData TypeDescriptionPKM/O
idString(32)Defines a unique id for the Resource.PKM
resource_type_idString(32)Specifies the unique id of the Resource Type

Foreign Key: Resource_Type

Notes: Resource type of ‘Default’ always present to define default values.
M(Default)
contact_detailsString(256)Provides contact details for the resource.O
cost_kmDoubleDefines cost per KM travelling for this resource.

Notes: Default value taken from Resource Type if not supplied.
O
cost_phDoubleDefines cost per hour on shift for this resource.

Notes: Default value taken from Resource Type if not supplied. In the case of a parallel resource, the activity cost logic in the DSE will only account for utilised time.
O
cost_photDoubleDefines cost per hour on shift overtime for this resource.

Notes: Default value taken from Resource Type if not supplied.
O
descriptionString(2000)Optional description of the Resource.O
display_context_idString(32)Provides the context to determine which list should be used when viewing in the Scheduling Workbench.

Notes: This should match the id of a Display_Context row defined in the system data.
O
first_nameString(40)Specifies the Resource first nameO
icon_idString(32)The id of an icon to use for this resource.

Foreign Key: Icon
O
location_id_endString(32)Defines the end location id when finishing shift.

Foreign Key: Location

Notes: Default value taken from Resource Type if not supplied.
O
location_id_startString(32)Defines the start location id when logging on to shift.

Foreign Key: Location

Notes: Default value taken from Resource Type if not supplied.
O
max_travelTime SpanDefines the max travel time away from location start resource will travel.

Notes: Default value taken from Resource Type if not supplied.
O
memoString(4000)Provides a free format memo field.O
out_of_region_multiplierDoubleDefines a multiplier to be applied to the value of any activities done by a resource outside his/her region. So a value of 0 means that activities cannot be done outside the region, whereas a value of 1 means that activities may freely be done outside the region and are just as likely to be chosen as ones inside the region.O
parallel_index_categorisationString(32)Activities of the same category within the specified categorisation will be separated onto different rows when displayed in the Scheduling Workbench.

Foreign Key: Categorisation

Notes: Only applies for parallel resources.
O
profile_id_travelString(32)Specifies the id of the Profile to be used for this Resource. The corresponding Travel_Time_Profile to be used is then defined by setting the parameter TravelTimeProfileId on the specified Profile.

Notes: If not present then the profile specified by profile_id_travel on the Resource Type will be used.
O
resource_class_idString(8)Specifies which class of Resource this Resource belongs to (STANDARD, TEAM, BUCKET or PARALLEL)

Foreign Key: Resource_Class
O
rule_collection_idString(32)Specifies the id of the rule collection associated with this resource.

Foreign Key: Rule_Collection
O
separation_model_idString(32)Specifies the id of the separation model associated with this resource.

Foreign Key: Separation_Model
O
shift_costDoubleSpecifies the default cost to apply when using a shift for this resource.O
shift_cut_offTime SpanWhen the current schedule time exceeds the cut off period activities can no longer be scheduled to the shift.

Notes: The shift cut off is added to the shift start time and can be negative.
O
shift_visit_costDoubleThe cost applied to every CALL class activity scheduled in the resource's routeO
speedfactorDoubleDefines the proportion of any travel time approximation made by the DSE. If this is set to 0.5, the DSE assumes half its estimated travel time as the actual travel time. If it is set to 2, the DSE assumes twice its estimated travel time.

Notes: If not supplied the Resource_Type.Speedfactor will be used. If this is not supplied then the parameter Speedfactor will be used.
O
surnameString(40)Specifies the Resource name.O
time_zoneString(32)Specifies the id of the time zone associated with this resource.O
travel_cost_model_idString(32)Specifies the travel cost model to use for this resource.

Foreign Key: Travel_Cost_Model
O
travel_fromTime SpanSpecifies the maximum unpaid travel time at end of shift.

Notes: Default value taken from Resource Type if not supplied.
O
travel_toTime SpanSpecifies the maximum unpaid travel time at start of shift.

Notes: Default value taken from Resource Type if not supplied.
O
travel_with_resource_idString(32)Specifies the id of the accompanying resource with whom this resource must travel.O
utilisationIntegerSpecifies the maximum amount of time to be scheduled in the shift for the resource.

Notes: Values between 0 and 100. Value to be used only if Shift.Utilisation is not provided.
O
vehicle_idString(32)Id of the vehicle which the resource may use during the shift.

Foreign Key: Vehicle
O

Entity: Rule (Input)

Defines a rule of a given type. Rules can either be commit rules related to the Schedule Dispatch Service, productive time rules which relate to scheduling when Activity_Productive_Time is used, or shift capacity rules which relate to the number of activities that may be scheduled within a shift.

See the Rule_Type definition for details of each rule type that rules can be defined for.

Attribute NameData TypeDescriptionPKM/O
idString(32)Defines the unique id for the rule.PKM
rule_type_idString(32)Specifies the id of the type of this rule.

Foreign Key: Rule_Type
PKM
globalBooleanDefines whether the rule applies to all resources in the schedule.M(false)
activity_type_idString(32)Specify activity type that this rule applies to.

Foreign Key: Activity_Type

Notes: Only applies to commit override rule type COMMIT_ACTIVITY_TYPE.
O
descriptionString(2000)Provides a description for this rule.O
productivity_category_idString(32)Specifies the productive category that this rule relates to.

Foreign Key: Productivity_Category

Notes: Only applies to productive time rules.
O

Entity: Rule_Collection (Input)

Defines a collection of rules that can be linked to a resource or resource type.

Attribute NameData TypeDescriptionPKM/O
idString(32)Defines the unique id for the rule collection.PKM
descriptionString(2000)Provides a description for this collection.O

Entity: Rule_Collection_Rule (Input)

Links a rule to a given rule collection.

Attribute NameData TypeDescriptionPKM/O
rule_collection_idString(32)Specifies the id of the rule collection to which this rule belongs.

Foreign Key: Rule_Collection
PKM
rule_idString(32)Specifies the id of the rule to be linked to the collection.

Foreign Key: Rule
PKM
rule_type_idString(32)Specifies the rule type id of the rule.

Foreign Key: Rule
PKM

Entity: Rule_Dataset (Input)

Rule_Dataset is now deprecated: please use Rule and Rule_Parameter instead.

Defines a set of rules to be used by applications related to the dataset being processed. Default rules and values are provided as part of the installation.

Attribute NameData TypeDescriptionPKM/O
application_type_idString(32)Specifies the id of the Application type the rule is used by.PKM
rule_idString(32)Specifies the id of the Rule.PKM
default_valueString(100)Specifies the default value to be used for the rule.M

Entity: Rule_Dataset_Override (Input)

Rule_Dataset_Override is now deprecated: please use Rule and Rule_Parameter instead.

Defines a set of rules to be used by applications related to the dataset being processed and override rules to be used instead.

Attribute NameData TypeDescriptionPKM/O
application_type_idString(32)Specifies the id of the Application type the rule is used by.M
override_valueString(100)Specifies the value to be used for the override.M
rule_idString(32)Specifies the id of the Rule.

Foreign Key: Rule
M
rule_override_type_idString(32)Specifies the id of the rule override. Possible values: SameLocation, LackOfCoverage, Corequisites, TravelTime.M
override_thresholdString(100)Specifies the threshold value when the value should be applied.O

Entity: Rule_Parameter (Input)

This defines the parameter settings for a rule. For each Rule_Parameter row there should always be a Rule_Type_Parameter row with matching parameter id and rule type id. Note that Rule_Type_Parameter is a lookup table so these are pre-existing values and do not need to be included in the input. The Rule_Parameter row can be omitted is the default value on the Rule_Type_Parameter is correct.

Attribute NameData TypeDescriptionPKM/O
parameter_idString(40)Specifies the parameter_id of the matching Rule_Type_Parameter

Foreign Key: Rule_Type_Parameter
PKM
rule_idString(32)Defines the id of the rule this parameter relates to.

Foreign Key: Rule
PKM
rule_type_idString(32)Specifies the rule_type_id of the matching Rule_Type_Parameter

Foreign Key: Rule, Rule_Type_Parameter
PKM
parameter_valueString(32)Specifies the value of this rule parameter.

Notes: This should be supplied in xml format matching the data type specified on the Rule_Type_Parameter
O

Entity: Rule_Parameter_Override (Input)

If a Rule_Parameter needs to be changed for a period of time, an Override can be applied. Note that Rule_Type_Parameter is a lookup table so these are pre-existing values and do not need to be included in the input. See the Resource Capacity Management Guide for further details.

Note

Rule parameter overrides are only compatible with parallel rules: PARALLEL_ACTIVITY_COUNT, PARALLEL_CUSTOM_METRIC, PARALLEL_CATEGORIES_COUNT, and PARALLEL_CATEGORIES_METRIC.

Note

Rule parameter overrides are only compatible with rule type parameters: MaximumCount and MaximumTotalValue.

Note

The period of time can either be a specific one off range of time, or a shift offset time which will be applied to every shift. Exactly one of these options must be defined in each row.

Attribute NameData TypeDescriptionPKM/O
idString(32)Defines the unique id for the override.PKM
parameter_idString(40)Specifies the parameter_id of the matching Rule_Type_Parameter.

Foreign Key: Rule_Type_Parameter
PKM
rule_idString(32)Defines the id of the rule this override relates to.

Foreign Key: Rule
PKM
rule_type_idString(32)Specifies the id of the matching Rule_Type.

Foreign Key: Rule_Type
PKM
is_relativeBooleanIf true, the value of the parameter_value will be applied relative to the existing valueM(false)
override_priorityIntegerDefines a precendence order when multiple overrides could apply to the same rule parameter. The override with the highest value will be used.M(1)
parameter_valueString(32)Specifies the value of this rule parameter.

Notes: This should be supplied in xml format matching the data type specified on the Rule_Type_Parameter.
M
end_timeDate TimeSpecifies the override's end time as a specific DateTime

Notes: If this has been defined, start_time must also be defined. Additionally, shift_offset_start and shift_offset_end must be null.
O
shift_offset_endTime SpanSpecifies the override's end time as a generic TimeSpan that will apply to each shift

Notes: If this has been defined, shift_offset_start must also be defined. Additionally, start_time and end_time must be null.
O
shift_offset_startTime SpanSpecifies the override's starting time as a generic TimeSpan that will apply to each shift

Notes: If this has been defined, shift_offset_end must also be defined. Additionally, start_time and end_time must be null.
O
start_timeDate TimeSpecifies the override's starting time as a specific DateTime

Notes: If this has been defined, end_time must also be defined. Additionally, shift_offset_start and shift_offset_end must be null.
O

Entity: Rule_Resource (Input)

Rule_Resource is now deprecated: please use Rule and Rule_Parameter instead.

Defines a set of rules to be used by applications for specified resources.

Attribute NameData TypeDescriptionPKM/O
application_type_idString(32)Specifies the id of the Application type the rule is used by.M
rule_idString(32)Specifies the id of the Rule.

Foreign Key: Rule
M
rule_valueString(100)Specifies the value to apply for this resource.M
resource_idString(32)Specifies the resource to which the rule must apply.

Foreign Key: Resources

Notes: One of resource_id or resource_type_id must be applied.
O
resource_type_idString(32)Defines the resource_type to which the rule must apply.

Foreign Key: Resource_Type

Notes: One of resource_id or resource_type_id must be applied.
O

Entity: Rule_Resource_Override (Input)

Rule_Resource_Override is now deprecated: please use Rule and Rule_Parameter instead.

Defines a set of override rules to be used by applications for specified resources and resource types.

Attribute NameData TypeDescriptionPKM/O
application_type_idString(32)Specifies the id of the Application type the rule is used by.M
override_valueString(100)Specifies the value to be used for the override.M
rule_idString(32)Specifies the id of the Rule.

Foreign Key: Rule
M
rule_override_type_idString(32)Specifies the rule override id. Possible values: SameLocation, LackOfCoverage, Corequisites, TravelTime.M
override_thresholdString(100)Specifies the threshold value when the value should be applied.O
resource_idString(32)Specifies the resource to which the rule must apply.

Foreign Key: Resources

Notes: One of resource_id or resource_type_id must be applied.
O
resource_type_idString(32)Specifies the resource_type to which the rule must apply.

Foreign Key: Resource_Type

Notes: One of resource_id or resource_type_id must be applied.
O

Entity: Rule_Type (Lookup)

This defines the various rule types against which rules can be set up. Each rule type belongs to one of four categories:

  • COMMIT: Commit rules used by the Schedule Dispatch Service when making suggestions to commit activities.
  • PRODUCTIVE_TIME: Rules that limit the amount of activity productive time scheduled to a resource.
  • SHIFT_CAPACITY: Rules that limit the number of activities that can be scheduled within a shift or multiple consecutive shifts or reference period. Please see Scheduling Concepts - Resource Capacity Management for more information about shift capacity rules.
  • PARALLEL: Rules that limit the number of activities that can be scheduled in parallel when scheduled to a parallel resource. Please see Scheduling Concepts - Resource Capacity Management for more information about parallel resources.
Attribute NameData TypeDescriptionPKM/O
idString(32)A unique identifier.PKM
message_idIntegerThe id of a message describing this rule type.O
rule_type_category_idString(32)The rule category that this rule type relates to.

Foreign Key: Rule_Type_Category
O

Each rule type is described below, along with the parameters that apply to that rule.

Rule type: COMMIT

The general commit rules to use for a resource. Commit rules defined against a resource can be overridden by a rule defined at the resource’s shift level, provided that the rule type matches. If there are any non matching rules at either resource or resource's shift, then both rules would apply to the shift.

Parameter NameData TypeDefault ValueDescription
CommitBreaksBOOLEANTrueIf suggestions should be made to commit breaks.
CountBreaksBOOLEANTrueIf breaks should be counted in the maximum committed activity allowance.
IgnoreBreakTimeBOOLEANTrueIf true then any time spent on breaks is ignored when calculating the commit window.
EndShiftHorizonTIMESPANPT1HThe time at which a shift is considered to have finished even if the resource has not logged off.
LogoffUncommitINTEGER30The maximum status of jobs for which uncommit suggestions should be made once the resource is no longer considered logged on.
LogonRequiredBOOLEANTrueIf true suggestions are only made for logged on resources.
MaximumCommittedActivitiesINTEGER1The maximum number of committed to on-site activities that a resource is allowed to have at one time.
NextDayCommitBOOLEANFalseIf true then commit suggestions can be made for the next day shift.
SendExternalCommitsModeSTRINGNONEWhether to create commit suggestions for manual scheduling workbench commits (MANUAL), or all external commits (ALL).
TimeBeforeShiftStartTIMESPANPT30MThe maximum time before a shift starts when commit suggestions can be made.
TimeHorizonTIMESPANPT30MThe maximum time into the future that travel to an activity can start for it to be suggested for commit.
NextDayCommitBufferTIMESPANPT0SThis allows the schedule dispatch service to start suggesting commits for the resource's next shift before the end of the current shift. For example, a value of 1 hour would mean that the dispatch service could start suggesting commits for the next shift 1 hour before the end of the current shift.
Is not considered if ShiftsInFuture is greater than zero - the Schedule Dispatch Service will not wait for the buffer period to begin in this case.
ShiftsInFutureINTEGER0Specifies the number of shifts beyond the current shift to be considered for making commit suggestions.
RuleWindowStartTIMESPANSuggestions will only be made if the current schedule time is past this time of day. Can be set to null to indicate no restrictions on the start of the window.
RuleWindowEndTIMESPANSuggestions will only be made if the current schedule time is before this time of day. Can be set to null to indicate no restrictions on the end of the window.
DayPatternSTRINGYYYYYYYSuggestions will only be made on the days specified by the day pattern.
TimeZoneIdSTRINGSpecifies the time zone to use when checking the RuleWindowStart and RuleWindowEnd.

Rule type: COMMIT_COREQUISITES

Commit rule overrides to use for co-requisite activities.

Parameter NameData TypeDefault ValueDescription
MaximumCommittedActivitiesINTEGERThe maximum number of committed to on-site activities that a resource is allowed to have at one time.

Rule type: COMMIT_LACK_OF_COVERAGE

Commit rule overrides to see where a location is attributed as having lack of coverage.

Parameter NameData TypeDefault ValueDescription
MaximumCommittedActivitiesINTEGERThe maximum number of committed to on-site activities that a resource is allowed to have at one time.
TimeHorizonTIMESPANThe maximum time into the future that travel to an activity can start for it to be suggested for commit.

Rule type: COMMIT_PARALLEL_RESOURCE

Commit rule overrides for activities that begin at the same time as each other when scheduled to the same parallel resource.

Parameter NameData TypeDefault ValueDescription
MaximumCommittedActivitiesINTEGERThe maximum number of committed to on-site activities that a resource is allowed to have at one time.
TimeHorizonTIMESPANThe maximum time into the future that travel to an activity can start for it to be suggested for commit.

Rule type: COMMIT_SAME_LOCATION

Commit rule override to use for activities at the same location.

Parameter NameData TypeDefault ValueDescription
MaximumCommittedActivitiesINTEGERThe maximum number of committed to on-site activities that a resource is allowed to have at one time.
TimeHorizonTIMESPANThe maximum time into the future that travel to an activity can start for it to be suggested for commit.

Rule type: COMMIT_TRAVEL_TIME

Commit rule overrides to use for activities with a long travel time.

Parameter NameData TypeDefault ValueDescription
MaximumCommittedActivitiesINTEGERThe maximum number of committed to on-site activities that a resource is allowed to have at one time.
OverrideThresholdTIMESPANThe minimum travel time at which this override will apply.
TimeHorizonTIMESPANThe maximum time into the future that travel to an activity can start for it to be suggested for commit.

Rule type: COMMIT_ACTIVITY_TYPE

Commit rule overrides to use for activities of a set activity type.

Parameter NameData TypeDefault ValueDescription
MaximumCommittedActivitiesINTEGERThe maximum number of committed to on-site activities that a resource is allowed to have at one time.
MaximumCommittedActivitiesOfMatchingTypeINTEGERThe maximum number of committed to on-site activities that a resource is allowed to have at one time for a matching activity type.
TimeHorizonTIMESPANThe maximum time into the future that travel to an activity can start for it to be suggested for commit.

Rule type: NON_PRODUCTIVE_TIME

Ensures a minimum period of non productive time after a period of productive time.

Parameter NameData TypeDefault ValueDescription
IsProportionalBOOLEANIf true then the period of non productive time following a period of productive time must be at least in proportion to the minimum values.
MinimumNonProductiveTimeTIMESPANThe minimum period of non productive time required.
MinimumProductiveTimeTIMESPANThe minimum applicable productive time.

Rule type: NON_PRODUCTIVE_TIME_MULTI

Ensures a period of non productive time occurs a given number of times within a reference period. This rule cannot be defined against an individual shift.

Parameter NameData TypeDefault ValueDescription
MinimumNonProductiveTimeTIMESPANThe minimum period of non productive time required.
MinimumOccurrencesTIMESPANThe minimum occurrences of non productive time required within the reference period.
ReferencePeriodTIMESPANThe length of the reference period.

Rule type: PRODUCTIVE_TIME_EXCLUSION

Limits the hours during which productive time can be assigned.

Parameter NameData TypeDefault ValueDescription
ExclusionEndTIMESPANThe end of the exclusion period.
ExclusionStartTIMESPANThe start of the exclusion period.
MaximumTimeTIMESPANThe maximum amount of productive time allowed within the exclusion period.

Rule type: PRODUCTIVE_TIME_LIMIT

Limits the length of each occurrence of productive time.

Parameter NameData TypeDefault ValueDescription
MaximumLengthTIMESPANThe maximum allowed continuous length of productive time.

Rule type: TOTAL_PRODUCTIVE_TIME

Limits the total amount of productive time within a reference period. This rule cannot be defined against an individual shift.

Parameter NameData TypeDefault ValueDescription
MaximumTotalTimeTIMESPANThe maximum allowed productive time within the reference period.
ReferencePeriodTIMESPANThe length of the reference period.

Rule type: SHIFT_MAX_TOTAL_ACTIVITY_COUNT

Limits the number of activities that can be carried out within the given number of shifts or the reference period.

Parameter NameData TypeDefault ValueDescription
MaximumCountINTEGERThe maximum number of activities permitted within the shift or reference period. Must be specified.
ReferencePeriodTIMESPANThe length of the reference period to use for the rule.
NumberOfShiftsINTEGERTotal number of consecutive shifts against which the rule is applied.

Note

If neither ReferencePeriod nor NumberOfShifts parameter are specified, then the rule will apply over each shift. If both are provided, then ReferencePeriod takes precedence and NumberOfShifts is ignored.

Rule type: SHIFT_MAX_TOTAL_VALUE

Limits the total activity value that can be carried out within the given number of shifts or the reference period.

Note

The base value for each activity is used when calculating the total value in the shift/reference period.

Parameter NameData TypeDefault ValueDescription
MaximumTotalValueDOUBLEThe maximum total activity value permitted within the given number of shifts or the reference period. Must be specified.
ReferencePeriodTIMESPANThe length of the reference period to use for the rule.
NumberOfShiftsINTEGERTotal number of consecutive shifts against which the rule is applied.

Note

If neither ReferencePeriod nor NumberOfShifts parameter are specified, then the rule will apply over each shift. If both are provided, then ReferencePeriod takes precedence and NumberOfShifts is ignored.

Rule type: SHIFT_MAX_TOTAL_DURATION

Limits the total activity duration that can be carried out within the given number of shifts or the reference period.

Parameter NameData TypeDefault ValueDescription
MaximumTotalDurationTIMESPANThe maximum total activity duration permitted within the shift or reference period. Must be specified.
ReferencePeriodTIMESPANThe length of the reference period to use for the rule.
NumberOfShiftsINTEGERTotal number of consecutive shifts against which the rule is applied.
IncludeTravelBOOLEANFalseWhether or not travel durations should be included in the total duration

Note

If neither ReferencePeriod nor NumberOfShifts parameter are specified, then the rule will apply over each shift. If both are provided, then ReferencePeriod takes precedence and NumberOfShifts is ignored.

Rule type: SHIFT_CUSTOM_METRIC

Limits the number of activities that can be carried out within the given number of shifts or the reference period against a custom metric value for the activity. See the Custom_Metric table for further details.

Parameter NameData TypeDefault ValueDescription
MaximumTotalValueDOUBLEThe maximum total custom metric value permitted within the given number of shifts or the reference period. Must be specified.
ReferencePeriodTIMESPANThe length of the reference period to use for the rule.
NumberOfShiftsINTEGERTotal number of consecutive shifts against which the rule is applied.
MetricIdSTRINGThe id for the custom metric to be used. Must be specified.

Note

If neither ReferencePeriod nor NumberOfShifts parameter are specified, then the rule will apply over each shift. If both are provided, then ReferencePeriod takes precedence and NumberOfShifts is ignored.

Rule type: PARALLEL_ACTIVITY_COUNT

Limits the number of activities that can be carried out in parallel when scheduled to a parallel resource.

Parameter NameData TypeDefault ValueDescription
MaximumCountINTEGERThe maximum number of activities permitted in parallel. Must be specified.

Rule type: PARALLEL_CUSTOM_METRIC

Limits the number of activities that can be carried out in parallel when scheduled to a parallel resource against a custom metric value for the activity. See the Custom_Metric table for further details.

Parameter NameData TypeDefault ValueDescription
MaximumTotalValueDOUBLEThe maximum total custom metric value permitted in parallel. Must be specified.
MetricIdSTRINGThe id for the custom metric to be used. Must be specified.

Rule type: PARALLEL_CATEGORIES_COUNT

Limits the number of categories that can be carried out in parallel when scheduled to a parallel resource.

Parameter NameData TypeDefault ValueDescription
MaximumCountINTEGERThe maximum number of categories permitted in parallel for a resource. Must be specified.
CategorisationIdSTRINGThe id of the categorisation to be used. Must be specified.
IncludeNoCategoryBOOLEANTrueSpecifies whether uncategorised activities contribute to the rule's calculation. Multiple uncategorised activities are treated as a single category for metric rules.

Rule type: PARALLEL_CATEGORIES_METRIC

Limits the number of categories that can be carried out in parallel against a custom metric value for the category.

Parameter NameData TypeDefault ValueDescription
MaximumTotalValueDOUBLEThe maximum total custom metric value permitted in parallel for a resource. Must be specified.
MetricIdSTRINGThe id for the custom metric to be used. Must be specified.
IncludeNoCategoryBOOLEANTrueSpecifies whether uncategorised activities contribute to the rule's calculation. Multiple uncategorised activities are treated as a single category for metric rules.

Entity: Rule_Type_Category (Lookup)

Specifies the category of a rule type.

Rules types of category 'COMMIT' relate to the schedule dispatch rules that govern when the Schedule Dispatch Service will suggest activities to be committed.

Rule types of category 'PRODUCTIVE_TIME' relate to schedules where activities have productive time associated with them. The rules limit the amount of productive time a resource can be scheduled within a given period. This is primarily intended for use with automated resource planning.

Rule types of category 'SHIFT_CAPACITY' relate to limits that can be placed on how many activities can be scheduled within a shift, or within a defined reference period. Each activity's contribution towards the limit can be varied by using different metrics for the shift capacity rule.

Rule types of category 'PARALLEL' relate to limits that can be placed on how many activities can be scheduled in parallel to a parallel resource. Each activity's contribution towards the limit can be varied by using different metrics for the parallel rule.

Attribute NameData TypeDescriptionPKM/O
idString(32)The category id. Either 'COMMIT' or 'PRODUCTIVE_TIME'.PKM
message_idIntegerThe id of the message describing this category.O

Entity: Rule_Type_Parameter (Lookup)

This defines the parameters that can be set against a given rule type. See Rule_Type for details.

Attribute NameData TypeDescriptionPKM/O
parameter_idString(40)A unique identifier for this parameter within the rule type.PKM
rule_type_idString(32)The id of the rule type this parameter relates to.

Foreign Key: Rule_Type
PKM
data_type_idString(32)the id of the data type for this parameter.O
default_valueString(32)The default value used for this parameter.O
message_idIntegerThe id of a message describing this rule type parameter.O

Entity: Schedule_Data_Usage (System)

This table records the data usage each time a new load is submitted for processing.

Attribute NameData TypeDescriptionPKM/O
idInt64An identity column that is the primary key of the table.PKM
datetime_stampDate TimeThe date and time that the usage was recorded.M
organisation_idInt64The id of the organisation that the usage applies to.M
usage_type_idIntegerAn integer representing the usage type.

Allowed Values: ResourceCount = 0, ActivityCount = 1, ScheduleWindowLength = 2, AppointmentBookingLength = 3, DatasetCount = 4
M
valueDoubleThe usage value.M
dataset_idString(32)The id of the dataset that the usage applies to.O

Entity: Schedule_Event (Input)

These record events against resources. The type of events are defined in event types and relate to what happens when the system is interacting dynamically with mobile devices.

When event type id = FIX then any of location id or latitude and longitude can be supplied to provide the current location of the resource. The columns will be processed in the same way as for location.

Break events BO and BF are indications that an Activity of class ‘BREAK’ is to be acted upon and are typically sent from the mobile device. The DSE will handle these events by trying to find a matching break activity in the input data and setting this to on site / complete.

For break on matching is based on the activity SLA. The DSE will first look for a break with an activity SLA that overlaps the event_date_time on the break event. If more than one is found it will take the one which is able to start earliest. If none are found it will find the closest break whose SLA ends in the past. If it still cannot find a break it will use the closest future break.

For BF the DSE will first try to find a break that is currently started, and failing this will use the same logic as above.

Once a break activity has been found the DSE will internally treat the event as an activity status update for that activity - mapping the date_time_stamp on the event directly and mapping the event_date_time to the date_time_status. The usual rules on ordering of activity statuses will then apply.

The Scheduling Workbench will display the events in the activity history along with the usual activity status updates.

Attribute NameData TypeDescriptionPKM/O
idString(32)Defines a unique identifier for the schedule event.PKM
date_time_stampDate TimeProvides the system date and time when the event was recorded.

Notes: Provided automatically if not present.
M
event_date_timeDate TimeSpecifies the date and time the event actually happened.

Notes: The event_date_time must not be after the Input_Reference.datetime. If it is the system will change it to Input_Reference.datetime.
M
event_type_idString(32)Specifies the event type id.

Foreign Key: Event_Type

Allowed Values: AO = Attention on, AF = Attention off, BO = Break on, BF = Break off, FIX = Co-ordinate fix, RO = Resource on, RF = Resource off
M
resource_idString(32)Specifies the resource id. The resource the event occurred on.

Foreign Key: Resources
M
latitudeDoubleProvides the latitude co-ordinate

Notes: Required when Event Type Id = FIX if location_id is not provided. Range from -90 to +90.
O
location_idString(32)Provides the location id

Foreign Key: Location

Notes: Required when Event Type Id = FIX if latitude and longitude not provided.
O
longitudeDoubleProvides the longitude co-ordinate

Notes: Required when Event Type Id = FIX if location_id is not provided. Range from -180 to +180
O

Example

<Schedule_Event>
    <id>TEST35-A</id>
    <date_time_stamp>2006-01-03T08:52:20</date_time_stamp>
    <event_type_id>RO</event_type_id>
    <event_date_time>2006-01-03T08:52:23</event_date_time>
    <resource_id>TEST35-A</resource_id>
</Schedule_Event>
<Schedule_Event>
    <id>TEST35-C</id>
    <date_time_stamp>2006-01-03T08:44:00</date_time_stamp>
    <event_type_id>FIX</event_type_id>
    <event_date_time>2006-01-03T08:45:00</event_date_time>
    <resource_id>TEST35-A</resource_id>
    <location_id>TEST35-C</location_id>
    <latitude>52.16</latitude>
    <longitude>-1.54</longitude>
</Schedule_Event> 
<Schedule_Event>
    <id>TEST35-D</id>
    <event_type_id>RF</event_type_id>
    <date_time_stamp>2006-01-03T08:50:20</date_time_stamp>
    <event_date_time>2006-01-03T07:52:23</event_date_time>
    <resource_id>TEST35-D</resource_id>
</Schedule_Event>

Entity: Schedule_Exception (Output)

These are the exceptions generated related to the current plan. Exceptions may relate to the condition of activities and resources.

Attribute NameData TypeDescriptionPKM/O
idString(32)A unique id.PKM
datetime_generatedDate TimeThe time the exception was first generated.M
plan_idInt64The plan the exceptions relate to.

Foreign Key: Plan
M
schedule_exception_type_idIntegerThe type of the exceptionM
activity_idString(32)The activity the exception applies to.

Foreign Key: Allocation
O
resource_idString(32)The resource the exception applies to.

Foreign Key: Plan_Resource
O
visit_idIntegerThe id of the visit this exception applies to.

Foreign Key: Allocation
O

Example

<Schedule_Exception>
    <schedule_exception_type_id>70</schedule_exception_type_id>
    <plan_id>1347</plan_id>
    <resource_id>""</resource_id>
    <activity_id>Test15</activity_id>
</Schedule_Exception>

Entity: Schedule_Exception_Data (Output)

These hold the values required for each exception to be displayed.

Note

For exception data representing a delay period (up to the current schedule time), the DSE will populate the 'activation_datetime' attribute instead of the 'value' attribute. The exception data value can then be calculated by subtracting the activation datetime from the current schedule time.

This is used to reduce data in plan changes, so it is recommended to use the default behaviour. However, if the exception data value is required by an integration, the parameter 'ScheduleExceptionUseActivationDateTime' can be switched off, and then the value will be populated directly by the DSE instead.

Attribute NameData TypeDescriptionPKM/O
schedule_exception_idString(32)The id of the schedule exception this relates to.

Foreign Key: Schedule_Exception
PKM
sequenceIntegerThe sequence in which the data value should be displayed.PKM(1)
labelString(40)The label used to describe the exception value.M
plan_idInt64The plan the exceptions relate to.M
activation_datetimeDate TimeThe start date and time used for calculating the value for this exception data.O
activity_idString(32)The activity the exception applies to.O
label_message_idIntegerThe id of the message containing the exception data label text.O
reason_type_idIntegerThe reason for the exception if available.

Notes: Only supplied for certain exception types and particular types of scheduling.
O
resource_idString(32)The resource the exception applies to.O
schedule_exception_type_idIntegerThe type of the exceptionO
valueString(256)The exception value.O
visit_idIntegerThe id of the visit this relates to.O

Entity: Schedule_Exception_Response (Input)

This records that an exception has been acknowledged and can be removed from the list of outstanding exceptions.

Attribute NameData TypeDescriptionPKM/O
schedule_exception_idString(32)Specifies the id of the schedule exception this response is for.PKM
sequenceIntegerA sequence number for this response.PKM(1)
acknowledge_expiry_datetimeDate TimeSpecifies the time at which the acknowledgement of the exception should no longer be considered active.O
acknowledgedBooleanIndicates that the exception is acknowledged.O
acknowledgement_commentString(2000)Provides the comment recorded against an acknowledgement.O
acknowledgement_datetimeDate TimeSpecifies the date and time the acknowledgement was made.O
acknowledgement_user_idString(256)Specifies the id of the user who acknowledged the exception.O
activity_idString(32)Defines the activity to which the exception response applies.

Foreign Key: Activity
O
resource_idString(32)Defines the resource to which the exception response applies.

Foreign Key: Resources
O
schedule_exception_type_idIntegerSpecifies the type of the exception the response is for.O

Entity: Secured_Data (System)

For internal use only.

Entity: Separation_Group (Input)

Defines a group of activities to which separation rules should apply. The rules are defined in a separation model.

Warning

The use of Separation Models should be as limited as possible. Alternative time-based constraints should be evaluated before using Separation Models. IFS PSO Product Development must be consulted before using Separation Models. Separation models can only be used to constrain to a single time range, they cannot be used to provide a series of separations each with a different incentive.

Attribute NameData TypeDescriptionPKM/O
idString(32)Specifies a unique identifier for the separation group.PKM
descriptionString(2000)Provides a description for this group.O
separation_group_idString(32)Specifies a parent separation group.

Foreign Key: Separation_Group

Notes: All activities belonging to this separation group also belong to the parent group.
O

Entity: Separation_Model (Input)

This defines a set of rules for preventing activities from being scheduled too closely together, or too far apart. Activities to which the rules apply must belong to a separation group, which they can be linked to via the separation_group_id attribute on either Activity or Activity_Type. Resources are then linked to the separation model via the separation_model_id attribute on either Resources or Resource_Type.

The rules themselves are defined via Separation_Model_Item rows. Each row specifies a separation group from and to, and a minimum and maximum allowed separation (at least one or other should be supplied). Additionally an incentive can be provided. With the default incentive value of -1 the separation will be applied as a hard constraint, so the minimum and maximum must be satisfied. If a positive incentive value is used then the value is added to the plan margin if the separation conditions are satisfied.

In the case of a hard maximum separation constraint, the plan is considered invalid if the gap between an activity in the separation to group and the nearest previously scheduled activity in the separation from group (scheduled to the same resource) exceeds the maximum separation. If there is no such activity then this is valid. If an activity in the separation from group is followed by multiple activities in the separation to group, then only the first of these must obey the maximum separation constraint.

For a soft separation constraint the incentive is applied if the gap between an activity in the separation to group and the nearest previously scheduled activity in the separation from group (scheduled to the same resource) is within both the minimum and maximum separations. If an activity in the separation from group is followed by multiple activities in the separation to group, then the incentive will only be applied to the first of these.

Warning

The use of Separation Models should be as limited as possible. Alternative time-based constraints should be evaluated before using Separation Models. IFS PSO Product Development must be consulted before using Separation Models. Separation models can only be used to constrain to a single time range, they cannot be used to provide a series of separations each with a different incentive.

Attribute NameData TypeDescriptionPKM/O
idString(32)Specifies a unique identifier for the separation model.PKM
descriptionString(2000)Provides a description for this separation model.O

Entity: Separation_Model_Item (Input)

Defines the items that make up a separation model. See `Separation Model' for details.

Warning

The use of Separation Models should be as limited as possible. Alternative time-based constraints should be evaluated before using Separation Models. IFS PSO Product Development must be consulted before using Separation Models. Separation models can only be used to constrain to a single time range, they cannot be used to provide a series of separations each with a different incentive.

Attribute NameData TypeDescriptionPKM/O
incentiveDoubleSpecifies the incentive value.

Notes: The default value of -1 implies a hard constraint.
PKM(-1)
separation_group_id_fromString(32)Defines the group of activities which the separation start applies from.

Foreign Key: Separation_Group
PKM
separation_group_id_toString(32)Defines the group of activities to which the separation applies.

Foreign Key: Separation_Group
PKM
separation_model_idString(32)Specifies the id of the separation model this relates to.

Foreign Key: Separation_Model
PKM
shift_separationBooleanDetermines whether there should be a shift separating the two separation groups.

Notes: Either this needs to be set to true, a minimum or maximum separation or a duration overhead must be defined
M(false)
duration_overheadTime SpanSpecifies an amount of time to be added to the 'to' activity's duration.

Notes: This will only apply based on the most recent relevant activity (not based on time between the activities).

Notes: Incentive must be set to -1 for use of duration_overhead.
O
maximum_separationTime SpanDefines the maximum separation allowed.

Notes: This may be omitted if there is no maximum.
O
minimum_separationTime SpanDefines the minimum separation allowed

Notes: This may be omitted if there is no minimum.
O

Entity: Shift (Input)

This provides the shift for a resource and details the start/end location of the shift. Shifts are used to determine what planned availability there is for a resource.

The expected behaviour for shift utilisation will be applied to the entire shift and anything scheduled in the shift will be counted including all activity types: private, call and break. For example, if utilisation is set to 70% and the shift is 10 hours then only 7 hours of activities will be scheduled:

Of the 10 hours 5 hours has already been utilised with various activities leaving 2 hours available for scheduling activities.

On shifts for the current day the percentage of utilisation applied will be on a diminishing value as you progress through the day. Anything before the timeline on the current shift does not count towards the utilisation.

Note

Where Location ID Start is populated the scheduler will schedule the activities for the resource assuming that this location is where the resource will start the shift. Where this is left empty the Location ID Start for the shift will default to the Location ID Start loaded against the resource.

Note

Where Location ID End is populated, the scheduler will schedule the visits for the shift to ensure that the resource can travel to this location in time for the end of their shift (including possibly any permissible overtime on the shift.) Where this is left empty the Location ID End for the shift will default to the Location ID End loaded against the resource.

Note

Shifts may be associated with a resource either directly or via the resource type. If a shift exists for a resource then any shifts associated via the resource type will be ignored.

Note

Resource.max_travel is calculated from the Resource.location_id_start if the Shift.location_id_start is not present.

Note

The time when a resource actually starts their shift is determined by what time they log onto the shift (which can be before the defined start of the shift, if within the snap time), or when committed/fixed work begins (this does not include breaks or private activities). So for example, if a shift is defined to start at 9:00 and end at 17:00, but the resource logs on at 8:30, the shift has started at 8:30. If this shift has an early end leeway, then the shift would be adjusted to end at 16:30.

Note

For parallel resources, activities will only count towards the utilisation proportionally to how much of the resource's parallel limits that they use. For example, if a parallel resource has a metric limit of 100, then an activity with 50 as the metric value will count twice as much towards the utilisation as an activity with 25 as the metric value. The utilisation is calculated separately for each parallel rule and all must be satisfied. Also, the time for private activities will not count towards the overall shift time for a parallel resource and the private activity will not count towards the utilisation.

Attribute NameData TypeDescriptionPKM/O
idString(32)Specifies the unique id for the shift.

Notes: This is created automatically when shift patterns are used.
PKM
start_datetimeDate TimeDefines the start date and time of shiftM
cost_kmDoubleDefines the cost per KM travelling.

Notes: Default value taken from Resources if not supplied.
O
cost_phDoubleDefines the cost per hour on shift.

Notes: Default value taken from Resources if not supplied.
O
cost_photDoubleDefines the cost per hour on shift overtime.

Notes: Default value taken from Resources if not supplied.
O
descriptionString(2000)Provides a description of the Shift, which may be shown in the Scheduling WorkbenchO
early_end_leewayTime SpanIf specified, the shift end time will be brought forward within the leeway to match how early the resource started the shift.

Notes: If specified will override Shift_Type
O
end_datetimeDate TimeDefines the end date and time of shift

Notes: If End Date Time is not provided then Shift Type. Duration must not be null.
O
late_end_leewayTime SpanIf specified, the shift end time will be advanced within the leeway to match how late the resource started the shift.

Notes: If specified will override Shift_Type
O
location_id_endString(32)Specifies the end location id for shift.

Foreign Key: Location

Notes: If not specified then the shift will use Resource.location_id_end
O
location_id_startString(32)Specifies the start location id for shift.

Foreign Key: Location

Notes: If not specified then the shift will use Resource.location_id_start
O
manual_scheduling_onlyBooleanSpecifies that this shift should not have activities automatically scheduled into it by the DSE.

Notes: If unspecified, then default behaviour applies, which is that activities may be automatically scheduled in all shifts, unless a manual scheduling period is specified in the Input Reference. Setting this to false allows the DSE to schedule activities in a shift, even if that shift is (at least partially) before the Input Reference manual scheduling end time.
O
max_travelTime SpanSpecifies the max travel_time away from location start resource will travel.

Notes: Default value taken from Resources if not supplied.
O
overtime_periodTime SpanSpecifies the maximum number of hours overtime within the shift.

Notes: Overtime will begin from the end_datetime on the shift

Notes: If specified will override Shift_Type
O
profile_id_travelString(32)Specifies the id of the Profile to be used for this Shift. The corresponding Travel_Time_Profile to be used is then defined by setting the parameter TravelTimeProfileId on the specified Profile.

Notes: If not present then the profile specified by profile_id_travel on the Resource will be used.
O
resource_idString(32)Specifies the id of the resource

Foreign Key: Resources

Notes: One of Resource Type ID or Resource ID must be provided
O
resource_type_idString(32)Specifies the resource type id

Foreign Key: Resource_Type

Notes: One of Resource Type ID or Resource ID must be provided
O
rule_collection_idString(32)Links a rule collection to the shift.

Foreign Key: Rule_Collection

Notes: This value supersedes the rule_collection_id which may be specified in the Resources table.
O
shift_costDoubleDefines the one off cost of a resource being given work in this shift.

Notes: If a shift_cost is specified the cost will be applied to the shift as soon as there is at least one activity with a location in the shift. Breaks and locationless private appointments will be ignored.
O
shift_cut_offTime SpanWhen the current schedule time exceeds the cut off period activities can no longer be scheduled to the shift.

Notes: The shift cut off is added to the shift start time and can be negative.
O
shift_type_idString(32)Specifies the type of shift if required.

Foreign Key: Shift_Type

Notes: Must be provided if End Date Time is null.
O
shift_visit_costDoubleThe cost applied to every CALL class activity scheduled in the resource's routeO
snap_timeTime SpanDefines the period of time before a shift starts where if a resource logs on within this time, the scheduler assumes that the resource is logging on to this shift.

Notes: If not provided the value will be taken from Shift_Type.
O
split_allowedBooleanDetermines whether activities are allowed to be split into this shift.O
split_priorityIntegerDefines the priority of this shift when considering whether to split an activity into it.

Notes: An activity may only be split into this shift if the split_priority is at least the split_minimum_priority on the activity.
O
travel_cost_model_idString(32)Specifies the travel cost model to use for this shift.

Foreign Key: Travel_Cost_Model
O
travel_fromTime SpanDefines the maximum unpaid travel time at end of shift.

Notes: Default value taken from Resources if not supplied.
O
travel_toTime SpanDefines the maximum unpaid travel time at start of shift.

Notes: Default value taken from Resources if not supplied.
O
travel_with_resource_idString(32)Specifies the id of the resource this resource must travel with.

Notes: This supersedes the value which may be at Resources or Resource Type or Shift Pattern
O
utilisationIntegerSpecifies the maximum percentage of time to be scheduled in the shift (including snap and overtime).

Notes: Values between 0 and 100.
O
vehicle_idString(32)ID of the vehicle which the resource may use during the shift.

Foreign Key: Vehicle

Notes: We assume resource uses single vehicle per shift.
O

Example

<Shift>
    <id>Test25min_03/01/2006 09:00</id>
    <resource_id>Test25min</resource_id>
    <start_datetime>2006-01-03T09:00:00.0000000-00:00</start_datetime>
    <end_datetime>2006-01-03T17:00:00.0000000-00:00</end_datetime>
    <snap_time>PT2H0M0S</snap_time>
    <overtime_period>PT2H0M0S</overtime_period>
</Shift>

Entity: Shift_Break (Input)

Shift breaks (also referred to as implicit breaks) provide an alternate way of defining breaks. Instead of creating activities of class "BREAK", shift breaks can be used. Each shift break defines a single break, assigned to a shift, with a window in which the break may begin.

See Scheduling Concepts - Constraints and Preferences for details around the rules that define the placement of an implicit break in a shift.

Attribute NameData TypeDescriptionPKM/O
idString(32)Defines a unique id for the Shift Break.PKM
durationTime SpanDefines the duration of the break.M
earliest_start_offsetTime SpanThe earliest offset from the start of the shift at which the break may start.M
latest_start_offsetTime SpanThe latest offset from the start of the shift at which the break may start.M
shift_idString(32)Defines the shift id of the route this break belongs to.

Foreign Key: Shift
M

Entity: Shift_Pattern (Input)

This enables a pattern of shifts to be defined for either a Resource or Resource Type. The system will automatically create these shifts over the scheduling window based upon values within Shift Type and Shift Pattern.

Note

Shift patterns only create shifts for the period covered by the scheduling window and appointment window if present.

Note

Shift patterns may be associated with a resource either directly (via resource_id) or via the resource type. Shifts from patterns associated with the resource directly will only be used if they do not overlap the resource’s existing shifts. Shift patterns associated via the resource type will be ignored if a resource already has shifts or a shift pattern associated directly to the resource.

Note

If operating across multiple time zones ensure the time_zone attribute is set accordingly.

Attribute NameData TypeDescriptionPKM/O
idString(32)Specifies the unique identifier for the shift pattern.PKM
day_patternString(7)Specifies a seven character string indicating each day of the week the default shift should apply too.

Notes: Each character represents Monday – Sunday. ‘Y’ indicates the shift should be applied for this day.
M(YYYYYNN)
period_end_datetimeDate TimeSpecifies the end date and time for the pattern to be applied.

Notes: Cannot be before period_start_datetime.
M
period_start_datetimeDate TimeSpecifies the starting date and time for the pattern to be applied.M
shift_type_idString(32)Specifies the type of shift to be created from the day_pattern.

Foreign Key: Shift_Type
M
start_timeTime SpanSpecifies the time each day specified in day_pattern when the shift starts.M(PT8H)
descriptionString(2000)Provides a description of the Shift Pattern, which may be shown in the Scheduling WorkbenchO
resource_idString(32)Specifies the resource to which the shift pattern should be applied.

Foreign Key: Resources

Notes: One of Resource Type ID or Resource ID must be provided.
O
resource_type_idString(32)Specifies the resource type to which the shift pattern should be applied.

Foreign Key: Resource_Type

Notes: One of Resource Type ID or Resource ID must be provided.
O
split_allowedBooleanIndicates whether activities are allowed to be split into the shifts created from Shift.O
time_zoneString(32)Defines the time zone code to be used for start_time and day_pattern.O
travel_with_resource_idString(32)Specifies the id of the resource this resource must travel with.

Notes: This value will be used on all shifts created from this shift pattern.
O

Example

<Shift_Pattern>
    <id>TEST29resourcetype</id>
    <shift_type_id>TEST29</shift_type_id>
    <resource_type_id>TEST29</resource_type_id>
    <day_pattern>YYYNYNY</day_pattern>
    <start_time>PT7H</start_time>
    <period_start_datetime>2006-01-02T09:00:00.0000000-00:00</period_start_datetime>
    <period_end_datetime>2006-01-10T09:00:00.0000000-00:00</period_end_datetime>
</Shift_Pattern>

Entity: Shift_Type (Input)

This provides an optional definition to group shifts together by type. This can be used link activities with shifts of a type.

It also defines the default values to be used when default shifts are being created automatically.

Attribute NameData TypeDescriptionPKM/O
idString(32)Specifies a unique shift identifier.

Notes: Shift type id of ‘Default’ must always exist.
PKM
durationTime SpanDefines the duration of shift

Notes: If null then Shift.end_datetime must be provided on related Shifts. Used to determine the length of a default shift.
M(PT8H)
overtime_periodTime SpanDefines the maximum number of hours overtime within the shift.

Notes: Overtime begins after the defined end of the shift.

Notes: To be used when overtime period is not provided on a shift and for the default shift.
M(PT0S)
snap_timeTime SpanSpecifies the period of time before a shift starts where if a resource logs on within this time, the scheduler assumes that the resource is logging on to this shift.M(PT3H)
split_allowedBooleanIndicates whether splittable activities are allowed to be split into this shift.M(true)
colourString(9)Specifies the background colour of a shift in the Gantt.O
descriptionString(2000)Provides a description of the type of shift.O
early_end_leewayTime SpanThe shift end time will be brought forward within the leeway to match how early the resource started the shift.

Notes: Will be overridden by Shift if specified on both
O
late_end_leewayTime SpanThe shift end time will be advanced within the leeway to match how late the resource started the shift.

Notes: Will be overridden by Shift if specified on both
O
split_priorityIntegerSpecifies the priority of this shift when considering whether to split an activity into it.

Notes: An activity may only be split into this shift if the split_priority is at least the split_minimum_priority on the activity.
O

Default Entries

IDDescriptionDurationSnap TimeOvertime Period
DefaultDefault shift type.PT8H0M0SPT3H0M0SPT0H0M0S

Example

<Shift_Type>
    <id>TEST28max</id>
    <description>Test 28 shift type</description>
    <duration>PT4H</duration>
    <snap_time>PT2H</snap_time>
    <overtime_period>PT1H</overtime_period>
</Shift_Type>

Entity: Shift_Type_Break (Input)

This allows a shift break to be defined for a shift type, rather than defining each break individually.

Shift type breaks should be used instead of shift breaks if shift patterns are being used.

Attribute NameData TypeDescriptionPKM/O
idString(32)Defines a unique id for the shift type break.PKM
durationTime SpanDefines the duration of the break.M
earliest_start_offsetTime SpanDefines the earliest offset from the start of the shift at which the break may start.M
latest_start_offsetTime SpanDefines the latest offset from the start of the shift at which the break may start.M
shift_type_idString(32)Specifies the id of the shift type the break relates to.

Foreign Key: Shift_Type
M

Entity: Skill (Input)

This defines what skills can be assigned to resources and activities.

Attribute NameData TypeDescriptionPKM/O
idString(32)Specifies a unique identifier for the Skill.PKM
descriptionString(2000)Provides a Skill descriptionO
in_use_costDoubleThe cost to apply when the skill is available at the time and being used.O
in_use_multiplierDoubleSpecifies the multiplier on the value of the skill being available and in use.O
not_in_use_costDoubleThe cost to apply when the skill is available at the time but not being used.O
not_in_use_multiplierDoubleSpecifies the multiplier on the value of the skill being available and not in use.O
skill_type_idString(32)Defines the type of skill if required.

Foreign Key: Skill_Type
O

Example

<Skill>
    <id>TEST33</id>
</Skill>

Entity: Skill_Hierarchy (Input)

This defines the hierarchy of skills which may be present. This allows the grade or level concept to be used with skills and so reduces the amount of skill data and combinations required to define skill competences.

Warning

Recursive relationship between parent and child skills is not allowed.

Attribute NameData TypeDescriptionPKM/O
skill_id_childString(32)Specifies a unique identifier for the child skill.

Foreign Key: Skill
PKM
skill_id_parentString(32)Specifies a unique identifier for the parent skill.

Foreign Key: Skill
PKM

Example

In this example we have three skills defined: A, B1 and B2. Skill A is the parent of skills B1 and B2. There are two activities: 1 and 2 which require skills B1 and B2, respectively. We also have resource 1001 with skill B1 and resource 1002 with skill A.

Resource 1002 can do either activity 1 or 2. Resource 1001 can only do activity 1.

<Skill>
    <id>A</id>
    <description>A</description>
</Skill>
<Skill>
    <id>B1</id>
    <description>B</description>
</Skill>
<Skill>
    <id>B2</id>
    <description>B2</description>
</Skill>
<Skill_Hierarchy>
    <skill_id_parent>A</skill_id_parent>
    <skill_id_child>B1</skill_id_child>
</Skill_Hierarchy>
<Skill_Hierarchy>
    <skill_id_parent>A</skill_id_parent>
    <skill_id_child>B2</skill_id_child>
</Skill_Hierarchy>
<Activity_Skill>
    <activity_id>1</activity_id>
    <skill_id>B1</skill_id>
</Activity_Skill>
<Activity_Skill>
    <activity_id>2</activity_id>
    <skill_id>B2</skill_id>
</Activity_Skill>
<Resource_Skill>
    <skill_id>B2</skill_id>
    <resource_id>1001</resource_id>
</Resource_Skill>
<Resource_Skill>
    <skill_id>A</skill_id>
    <resource_id>1002</resource_id>
</Resource_Skill>

Entity: Skill_Set (Input)

Defines a set of skills, which are used when applying incentives.

Warning

Skill sets are primarily used when planning shifts within the advanced resource planner. Before they are used in a project IFS PSO Product Development must be consulted.

Attribute NameData TypeDescriptionPKM/O
idString(32)Defines a unique identifier for the skill set.PKM
all_skills_requiredBooleanIndicates whether a resource is required to satisfy all skills in order to satisfy the set. If not, the resource need only satisfy any skill in the set.M(true)
descriptionString(2000)Provides a description for this skill set.O

Entity: Skill_Set_Incentive (Input)

This links a skill set to an incentive. Resources who satisfy this skill set are eligible to receive an incentive when they carry out applicable activities with productive time of the required category.

Warning

Skill sets are primarily used when planning shifts within the advanced resource planner. Before they are used in a project IFS PSO Product Development must be consulted.

Attribute NameData TypeDescriptionPKM/O
idString(32)Defines a unique identifier for the Skill_Set_Incentive.PKM
incentive_idString(32)Specifies the id of the incentive this relates to.

Foreign Key: Incentive
M
incentive_typeString(32)Specifies the type of this incentive.

Allowed Values: STANDARD – Applies to all resources who satisfy the incentive conditions.
EXCLUSIVE – If the incentive is applied to a resource then that resource is not counted towards other skill sets he may satisfy.
ALL_RESOURCES – Counted when resources fail to satisfy the incentive skill set. Incentive values are expected to be negative.

M(STANDARD)
skill_set_idString(32)Specifies the id of the required skill set.

Foreign Key: Skill_Set
M
productivity_category_idString(32)Specifies the category of productive time that will apply.

Foreign Key: Productivity_Category
O

Entity: Skill_Set_Incentive_Avail (Input)

This links a skill set incentive to a period of availability where it is applicable. If no availabilities are specified then the skill set incentive is applicable whenever the incentive itself is.

Warning

Skill sets are primarily used when planning shifts within the advanced resource planner. Before they are used in a project IFS PSO Product Development must be consulted.

Attribute NameData TypeDescriptionPKM/O
availability_idString(32)Specifies the id of the availability this relates to.

Foreign Key: Availability
PKM
skill_set_incentive_idString(32)Specifies the id of the skill set incentive this relates to.

Foreign Key: Skill_Set_Incentive
PKM

Entity: Skill_Set_Incentive_Level (Input)

This defines the actual incentive value to be gained when the conditions of the skill set incentive are met.

Warning

Skill sets are primarily used when planning shifts within the advanced resource planner. Before they are used in a project IFS PSO Product Development must be consulted.

Attribute NameData TypeDescriptionPKM/O
from_resource_countIntegerSpecifies the number of resources satisfying the incentive from which this level will apply.

Notes: It is usual for the first incentive level to start from a resource count of 0.
PKM
skill_set_incentive_idString(32)Defines the id of the skill set incentive this applies to.

Foreign Key: Skill_Set_Incentive
PKM
unit_resource_valueDoubleDefines the value per resource per hour that is added to the plan when the incentive is met at this level.M(1000)

Entity: Skill_Set_Skill (Input)

This defines the skills that make up a given skill set.

Attribute NameData TypeDescriptionPKM/O
skill_idString(32)Defines the id of the skill this relates to.

Foreign Key: Skill
PKM
skill_set_idString(32)Defines the id of the skill set to which this skill belongs.

Foreign Key: Skill_Set
PKM

Entity: Skill_Type (Input)

This provides an optional definition that is used to group skills together by type. This can be used to link activities and/or resources with skills of a type.

Attribute NameData TypeDescriptionPKM/O
idString(32)Defines a unique id for the Skill type.PKM
descriptionString(2000)Provides a description of the Skill type.O

Example

<Skill_Type>
    <id>Type A</id>
    <description>skill type A</description>
</Skill_Type>

Entity: SLA_Template (Input)

This defines a template for SLAs that can be linked with activities

Attribute NameData TypeDescriptionPKM/O
idString(32)A unique id.PKM
start_basedBooleanShould the SLA be applied using the start time or end time of the scheduled activity?M(true)
descriptionString(2000)A description for the template.O

Entity: SLA_Template_Item (Input)

This defines an item within an SLA Template to apply to the activity.

Attribute NameData TypeDescriptionPKM/O
deadlineTime SpanThe period from the open time of the activity to the end of this SLA period.PKM
sla_template_idString(32)The id of the template.

Foreign Key: SLA_Template
PKM
sla_type_idString(32)The SLA Type to use for this period.

Foreign Key: SLA_Type
M

Entity: SLA_Type (Input)

This defines what SLAs can be assigned to activities. The type of SLA mechanism required is defined by the Mechanism Type. Which attributes are required will depend on the mechanism type.

The required attributes for each mechanism to work correctly are listed below.

SLA Mechanism / AttributesSLAPower Based
Activity.priorityRequired-
SLA_TYPE.revenueRequired-
SLA_TYPE.costRequired-
SLA_TYPE.early_sla_benefitRequired-
SLA_TYPE.start_proportion-Required
SLA_TYPE.end_proportion-Required
SLA_TYPE.curve_shape-Required
SLA_TYPE.activity_ageing_factor-Required

Note

For SLA mechanism ‘POWER_BASED’ both start_proportion and end_proportion will be settable independently, and curve_factor will define the curvature of the line between the start and end points.

Note

For SLA mechanism 'GAUSSIAN', the end_proportion is required, while the start_proportion is not. A start_proportion will have no effect on the shape of the curve.

Note

Revenue should only have an effect for mechanism_type of SLA. The other mechanisms will use the Activity.base_value to calculate the SLA curve.

Note

The Base Value of an activity is scaled by the activity_ageing_factor value for each day that the activity has been open, according to a defined formula. So a value of 1 makes no difference with age; a value of < 1 makes the activity less important with time as it gets older; and a value > 1 makes the activity more important as it gets older. The base time for the ageing factor is the Activity_SLA.datetime_start. So if the Activity base value is 1000, and the activity_ageing_factor is 1.1, then if the current time is now exactly one day past the datetime_start on the Activity_SLA, it will have a net value of 1100 or proportion of it for a partial day.

Warning

Mechanism type SLA has been deprecated and should not be used. Elements are only provided for backwards compatibility.

Attribute NameData TypeDescriptionPKM/O
idString(32)Defines a unique id for the SLA type.PKM
activity_ageing_factorDoubleDefines a value that is used to scale the Base Value of an activity for each day that the activity has been open, according to a defined formula. So a value of 1 makes no difference with time; a value of < 1 makes the activity less important with time as it gets older; and a value > 1 makes the activity more important as it gets older. The base time for the ageing factor is the Activity_SLA.datetime_start.

Notes: May be used where Mechanism Type = 'POWER_BASED'
M(1)
costDoubleSpecifies the cost incurred by attending an activity in this SLA type.

Notes: May be used where Mechanism Type = 'SLA'
M(0)
curve_shapeDoubleDefines a power to be used to determine how the Value of this activity varies with time. A value of 1 makes the variation linear; a value <1 means that as the end of the Scheduling Period approaches, the value of the activity drops off more quickly; a value >1 means that as the end of the Scheduling Period approaches, the value of the activity drops off more slowly.

Notes: May be used where Mechanism Type = 'POWER_BASED'
M(1)
early_sla_benefitDoubleDefines a value that will have the effect of trying to place activities earlier in the SLA. The higher the benefit the harder the DSE will try to move the activity to the start of the SLA.

Notes: May be used where Mechanism Type = 'SLA' The higher the value the harder the scheduler will try to do the activities earlier within the SLA, possible at the detriment to the quality of the routes. The value must be in the range 0 - 1
M(0)
generate_jeopardy_exceptionsBooleanDetermines if jeopardy exceptions should be raised for this Activity and SLA.

Notes: If generate_jeopardy_exceptions is not specified this is treated the same as if it was set to true. So the exception will be raised for the first Activity_SLA deadline whose SLA_Type does not have generate_jeopardy_exceptions set to false.
M(true)
mechanism_typeString(20)Specifies the type of SLA mechanism to be deployed.

Allowed Values: SLA, POWER_BASED, GAUSSIAN
M(POWER_BASED)
revenueDoubleSpecifies the revenue gained by attending an activity in this SLA type.

Notes: May be used where Mechanism Type = 'SLA'
M(1000)
start_proportionDoubleSpecifies the proportion of the Base Value which applies at the start of the scheduling period e.g. if this is 0.5, the activity has half as much value at the start of the scheduling period than at the end. This should always be greater or equal to the end proportion and less than or equal to the proportions used in any previous SLA periods.

Notes: May be used where Mechanism Type = 'POWER_BASED' Valid values >= 0 < = 1
M(1)
descriptionString(2000)Provides a description of the SLA and its purpose.O
end_proportionDoubleSpecifies the proportion of the Base Value which applies at the end of the scheduling period e.g. if this is 0.5, the activity has half as much value at the end of the scheduling period than at the beginning. So the activity is more likely to be scheduled earlier.

Notes: Must be used where Mechanism Type = 'POWER_BASED' Valid values => 0 <= 1
O

Example

<SLA_Type>
    <id>SLA_TYPE_2</id>
    <description>SLA 2 POWER_BASED Curve</description>
    <mechanism_type>POWER_BASED</mechanism_type>
    <end_proportion>0.5</end_proportion>
    <curve_shape>0.5</curve_shape>
    <activity_ageing_factor>0.5</activity_ageing_factor>
</SLA_Type>

Entity: Slot_Usage_Rule (Input)

Limits the total amount of resource time that can be used during the slot available times, when making offers for an appointment request.

Attribute NameData TypeDescriptionPKM/O
minimum_start_offsetTime SpanThe minimum offset from appointment_base_datetime to the slot start time at which this rule will apply. If appointment_base_datetime is not set, offset is applied from the current schedule time.

Notes: See the 'Appointment_Request' entity for details on 'appointment_base_datetime' parameter.
PKM
slot_usage_rule_set_idString(32)The id of the rule set that this rule relates to.

Foreign Key: Slot_Usage_Rule_Set
PKM
maximum_slot_utilisationDoubleThe maximum utilisation permitted for offers made in this slot window.

Notes: Range from 0 to 100
O
maximum_utilisationDoubleThe maximum utilisation permitted for offers made in this slot usage window.

Notes: Range from 0 to 100
O
minimum_free_timeTime SpanThe minimum amount of free time required in order for offers to be made in this slot usage window.O
minimum_slot_free_timeTime SpanThe minimum amount of free time required in order for offers to be made in this slot window.O

Entity: Slot_Usage_Rule_Set (Input)

Defines a set of rules used to reserve some resource time when appointment booking.

This consists of a set of Slot_Usage_Rule rows which specify limits based on how far into the future the slot being considered is. The minimum_start_offset on the rule determines which rule is used for any given slot.

Rules can specify either a maximum utilisation, or a minimum free time, or both. In either case this is applied only during the available times for the slot, and is applied across all resources able to carry out the activity, and within the distance threshold if specified.

Rules sets can then be linked to appointment templates for use when appointment booking.

Note

The rule set can be filtered to limit which activities are counted in the utilised time.

For example, it may be that a customer only wishes to allow 70% of slot time to be filled with installation activities. A slot usage rule should then be setup with a maximum_utilisation of 70, and the filter options on the slot usage rule set can be used to restrict which activities this applies to. If all installation activities are of the same type then the filter_by_activity_type option can be used. If not, the activity priority should be set appropriately and these options can be used instead.

There are also options to ignore private activity time from the calculation, and to either ignore or exclude (i.e. filter out) break time from the calculation.

For further details on this see the Scheduling Concepts - Appointment Booking guide.

Attribute NameData TypeDescriptionPKM/O
idString(32)A unique identifier for this rule set.PKM
filter_by_activity_typeBooleanIf true, only activities of the same type as the activity being requested will contribute to the utilised time.M(false)
filter_exclude_break_timeBooleanIf true, break time (implicit or explicit) will not contribute to the utilised time.M(false)
filter_exclude_higher_priorityBooleanIf true, activities of a higher priority than the activity being requested will not contribute to the utilised time.M(false)
filter_exclude_lower_priorityBooleanIf true, activities of a lower priority than the activity being requested will not contribute to the utilised time.M(false)
filter_ignore_break_timeBooleanIf true, any shift time covered by a break (implicit or explicit) will be ignored from the utilisation calculation.M(false)
filter_ignore_private_timeBooleanIf true, any shift time covered by a private activity will be ignored from the utilisation calculation.M(false)
descriptionString(2000)A description for this rule set.O
distance_threshold_kmDoubleThe maximum distance from a shift start location to the activity location in order for the shift to be considered.O
resource_pool_set_idString(32)If specified, only resources belonging to at least one pool within the set will be considered. In addition, the slot usage check will be performed against all resources in the matching pool(s) of the resource being considered.

Foreign Key: Resource_Pool_Set
O

Entity: Source_Data (Input)

Defines the source of additional data to be added to input. By including a Source Data entity in the input, additional data from the source is automatically extracted and included in the input. This extraction and insertion of data occurs automatically during an initial load of scheduling data. This process is used to load data held in other systems. The Schedule Input Manager writes the merged input to Input History and the Scheduling Database as normal.

Note

It is possible to extract data from multiple sources of the same type (e.g. 2 or more Modelling datasets or rotas). This can be done by setting the sequence number on the Source_Data. Note however that this option is not available for Source Data Type SCHEDULING where data may only be extracted from a single source.

Modelling / Advanced Resource Planner Data Extract

It is possible to extract the Modelling data from the Advanced Resource Planner and then merge it into the Scheduling module.

To pull through Modelling data into the scheduling you include a Source_Data entity with source_data_type_id of RAM. Rota data from the MASTER rota will be included automatically, provided that exactly one master rota exists in the dataset. You may also specify a Source_Data_Parameter with name 'rota_id' and value the id of the rota you wish to use.

The following data that is pulled though:

General data: Activity Types, Activity Type Skills and SLA Types always get pulled through to scheduling DB.

Resource Data: This is based on the rota items that overlap the scheduling period. Resources will only be included if they have rota items within the scheduling period and all other related data is pulled through as required. Any shifts which are pulled through for a resource will be displayed in the Gantt with a background colour that is a lightened value of that shifts shift category colour.

Activity Data: Locations and SLA information can also be included for activities. For locations, the activity must have an activity type that exists within the Modelling dataset, and this activity type must have supply_locations set to true. The Input Manager will then include the location if it finds a matching one to the location_id on the activity. For SLAs, the activity must have a date_time_open and the Activity_Type must have a SLA_Template specified. The Input Manager will then create Activity_SLAs for the activity, starting from the date_time_open on the activity and based on the SLA_Template.

Source Data Parameter include_rota_data controls whether the Input Manager will bring in shift details from the modelling dataset.

<Source_Data> 
    <source_data_type_id>RAM</source_data_type_id>
</Source_Data> 
<Source_Data_Parameter> 
    <source_data_type_id>RAM</source_data_type_id>
    <parameter_name>rota_id</parameter_name>
    <parameter_value>Master</parameter_value>
</Source_Data_Parameter>

Scheduling Data

There are three options, determined by the value of parameter_name "source_extraction_method" in Source_Data_Parameter: "FULL", "PARTIAL" or "AUTOMATIC".

Data can be loaded from either the same or from a different dataset. To use a different dataset, the dataset_id should be specified on the Source_Data row.

"FULL": with this option all the existing scheduling data for a certain dataset will be extracted, and so a reload of the existing data is achieved without sending any data again. Note however that not all data is persisted:

  • completed or incomplete activities in a past shift will be ignored. If, however the activity part of an activity group with the other activity being in current shift then that activity is persisted.
  • shifts which are in the past are ignored. A shift is regarded as being in the past if the current time is past the overtime of the shift.
  • only the latest schedule events are persisted.

"PARTIAL": this option is used to retrieve the only the dynamic "status" of activities and resources that are specified. Specifically, if the load includes the entity for activity A and all the entities related to activity A apart from activity statuses then the Input Manager automatically merges into the load all the activity_status entities of activity A from the existing scheduling data in the Scheduling Database. Likewise, the Input Manager persists the latest schedule_events for the resources included in the new load.

"AUTOMATIC": option does not perform any extraction initially, but informs the Scheduling Administration Service to automatically send new LOADs on a daily basis from that point forward, using a FULL extraction based on this Source Data row. Please see the Scheduling Administration Guide for details on setting the administration service parameters.

<Source_Data>
    <source_data_type_id>SCHEDULING</source_data_type_id>
    <source_dataset_id>Default</source_dataset_id>
    <source_db>Scheduling Database</source_db>
</Source_Data>
<Source_Data_Parameter>
    <source_data_type_id>SCHEDULING</source_data_type_id>
    <parameter_name>source_extraction_method</parameter_name>
    <parameter_value>FULL</parameter_value>
</Source_Data_Parameter>
Attribute NameData TypeDescriptionPKM/O
sequenceIntegerA uniquifier to allow multiple source data rows of the same type to be specified.PKM(1)
source_data_type_idString(32)Defines a unique identifier for the Source data type.

Foreign Key: Source_Data_Type

Notes: See entity Source_Data_Type.
PKM
source_dataset_idString(32)Specifies the dataset to be used for the source data.O

Entity: Source_Data_Parameter (Input)

This defines the various parameter values for each Source Data provided on the input.

Attribute NameData TypeDescriptionPKM/O
parameter_nameString(100)Provides the name of the parameter.

Notes: include_rota_data (RAM), source_extraction_method (SCHEDULING), rota_id (RAM), ignore_unavailabilities (RAM)
PKM
sequenceIntegerA uniquifier to allow multiple source data rows of the same type to be specified.

Foreign Key: Source_Data
PKM(1)
source_data_type_idString(32)Specifies the source data type identifier.

Foreign Key: Source_Data

Notes: See entity Source_Data_Type.
PKM
parameter_valueString(1000)Specifies the actual value of the parameter.O

Entity: Source_Data_Type (Lookup)

Defines sources of data to be incorporated into a dataset input.

The source of the data is defined as the following :-

DATABASE: Additional input is provided by a call to a database procedure.
RAM: Additional input is extracted from the RPL database.
SCHEDULING: Additional input is extracted from an existing scheduling database.

Refer to entity Source Data for details on configuring these input streams.

Attribute NameData TypeDescriptionPKM/O
idString(32)Source identifier.

Allowed Values: DATABASE, RAM, SCHEDULING, SPM
PKM
descriptionString(100)Source descriptionM

Entity: Special_Day (Input)

This defines a special day within a calendar where the usual calendar pattern does not apply. The relative day number determines the actual date of the special day. The 1st of January 2000 is counted as 1, and days count forwards from there. Thus the 2nd of January 2000 would be 2, the 1st of February 2000 would be 32, and the 1st of January 2001 would be 367.

If the special day is a public holiday for example then the 'is_working_day' attribute can be set to false. Otherwise the new working times for the special day should be recorded as Special_Day_Item rows.

Note

Special days do not affect the availability of the activity - as with calendars, they only impact how the slope of the activity SLA changes over time.

Attribute NameData TypeDescriptionPKM/O
calendar_idString(32)Specifies the id of the calendar this relates to.

Foreign Key: Calendar
PKM
relative_day_numberIntegerSpecifies the day this relates to, counting from 1st Jan 2000 = 1.PKM
descriptionString(2000)Provides a description for this special day.M
is_working_dayBooleanWhether this is a working day - i.e. a day where the SLA slope will change.M(false)

Entity: Special_Day_Item (Input)

Defines the active periods for a special day.

Attribute NameData TypeDescriptionPKM/O
calendar_idString(32)Specifies the id of the calendar this relates to.

Foreign Key: Calendar
PKM
relative_day_numberIntegerSpecifies the relative day number, identifying the special day this relates to.

Foreign Key: Special_Day
PKM
start_timeTime SpanDefines the active period start time.PKM
end_timeTime SpanDefines the active period end time.M

Entity: Split_Model (Input)

Split models contain the settings which relate to splitting an activity.

Note

If a split model is specified on either an activity or its activity type, the split model settings will be used rather than any settings specified directly on the Activity or Activity_Type row (even if set to null).

Note

If a split model is specified for an activity, it is treated as having split_allowed set to true.

Attribute NameData TypeDescriptionPKM/O
idString(32)The id for the split model.PKM
cost_of_splitDoubleDefines the cost incurred each time an activity using this split model is split.O
delay_cost_phDoubleDefines the cost per hour to be applied from the point at which an activity using this model is split until the next visit begins.

Notes: If a preferred_handover_time has been set, the cost will apply from the time at which the preferred handover should begin, rather than the time of the split.
O
descriptionString(2000)A description for the split model.O
extra_resource_costDoubleDefines the cost applied for each extra resource used (beyond the initial resource) for an activity using this model.O
maximum_delayTime SpanDefines the maximum amount of time that may pass between the end of one visit to an activity using this model, and the start of the next visit.O
maximum_resourcesIntegerDefines the maximum number of resources that may be used in total, across all visits to an activity using this model.

Notes: If unspecified, the maximum number of resources will be 1, meaning that all visits will be carried out by the same resource.
O
minimum_handover_timeTime SpanDefines a minimum amount of overlap that must be scheduled between two visits for an activity using this model, when switching from one resource to another.

Notes: Handover time is not included as part of the activity's duration.
O
minimum_priorityIntegerDefines the minimum split priority required for an activity using this model to be split into a shift, and the minimum interrupt priority required for another activity to be able to interrupt an activity using this model.

Notes: This is the equivalent of split_minimum_priority on an Activity or Activity_Type.
O
minimum_visit_durationTime SpanDefines the minimum on site duration for any visit to a split activity using this model.

Notes: This is the equivalent of min_split on an Activity or Activity_Type.
O
preferred_handover_timeTime SpanDefines the preferred amount of overlap to be scheduled between two visits for an activity using this model, when switching from one resource to another.

Notes: It is permitted for the activity to begin with a handover time less than the preferred handover time. To make the handover time a required amount of time, only the minimum_handover_time need be used.

Notes: Handover time is not included as part of the activity's duration.
O
resource_switch_leewayTime SpanDefines the amount of time between the start of resources' shifts for them to be considered when considering which resource to split to.

Notes: For example, if the resource_switch_leeway is set to 30 minutes and there are three resources to choose between when splitting an activity, with shifts starting at 9:00, 9:30 and 10:00, only the first two resources will be considered. This is because the third resource starts their shift more that 30 minutes after the start of the first resource's shift.
O

Entity: Split_Resource_Order (Input)

Defines the order of preference of resources to choose from when splitting an activity.

Note

The order is defined with the highest preference given to the resource that is first in the sequence (i.e. with the lowest sequence value).

Note

The sequence values do not relate to the visit ids, so the second resource in the sequence will not necessarily be used for the second visit for the activity.

Note

If the activity does not have a fixed resource (on the Activity_Status), the first resource in the sequence will be used as its fixed resource.

Note

The sequence as defined here can override the split settings for the activity - so an activity could split to more resources than specified in the maximum_resources column in the Split_Model table, if there are more resources defined in the sequence.

Note

Fixing the resource and position in the sequence means that the resource order will be maintained if the activity is reverted back to schedulable after being committed.

Warning

Without setting an ordering for the resources, a committed activity will not split to multiple resources.

Attribute NameData TypeDescriptionPKM/O
activity_idString(32)Specifies the id of the activity this relates to.

Foreign Key: Activity
PKM
sequenceIntegerDefines the position in the sequence.PKM
is_fixedBooleanWhether this resource in this position in the sequence is fixed.M(false)
resource_idString(32)Specifies the id of the resource this relates to.

Foreign Key: Resources
M

Entity: Split_Resource_Order_Hint (Input)

This is intended to be used with Allocation_Hint and serves the same purpose as Split_Resource_Order.

Note

This table and the Allocation_Hint table are only usable within a LOAD file.

Attribute NameData TypeDescriptionPKM/O
activity_idString(32)Specifies the id of the activity this relates to.

Foreign Key: Activity
PKM
sequenceIntegerDefines the position in the sequence.PKM
resource_idString(32)Specifies the id of the resource this relates to.

Foreign Key: Resources
M

Entity: Status_Type (Lookup)

For internal use only. Defines the allowed status of an activity.

An activity is, at all times, in one logical status. This may be:

-1:Ignore Denotes that the activity is in the system but the scheduler must ignore that activity. This could be for a number of reasons. It may be that further information is expected or that the Activity is currently being processed by another service. The activity is treated as being unallocated.

0:Unallocated Denotes that the activity is in the system but the scheduler has not allocated a resource to do that activity. This could be for a number of reasons. It may be that the utilization is at less than 100% and the scheduler has chosen to postpone allocating this activity in the current allocation time window. It may also be that the scheduler cannot find a resource with appropriate skills that can answer the activity inside one of the activity SLAs.

10:Allocated Denotes that the activity has been provisionally assigned to a resource. In other words, the activity is on the route. However, this activity could be taken from this resource and placed onto another resource’s route at any time. This might happen if, for instance, another resource runs early and could now fit this activity into their schedule more efficiently.

In general it is the responsibility of the DSE to determine whether an activity is in status 0 or 10.

20:Follow On This is an output status, and denotes that the visit to an activity is a follow up visit to a splittable activity, and that at least one visit to the activity is at status committed or higher. As a result the DSE has much less flexibility in deciding where the visit should be allocated.

30:Committed Denotes that the activity has been finalized to a resource. An activity can only become committed as a result of the scheduler passing control to the EA. The scheduler will not give away a committed activity to another resource until it receives further information from the client that the activity has returned to a status of 0 or 10.

32:Sent Denotes that the activity has been finalized to a resource as with Committed but has now been transferred to an external application.

35:Downloaded Denotes that the activity has been finalized to a resource as with Committed but has now been transferred to the remote device.

40:Accepted Denotes that the resource has accepted the activity. The activity remains committed but this provide a positive confirmation that the resource has undertaken to do the work. If the resource rejects the activity then the EA must inform the scheduler by amending the status.

50:Travelling Denotes that the resource has started to travel to the activity. An activity can only have status travelling as a result of the EA sending that status update .

55:Waiting Where co-requisite activities have been identified a status of waiting is assigned when a resource is awaiting the arrival of another before the activity can start.

60:Onsite Denotes that the resource has arrived at the location to do the allocated activity. An activity can only have status onsite as a result of the EA sending that status update.

65:Pending Completion When sent it is an indicator that the activity could soon be completed and should ideally be sent with the latest expected duration of the activity, if this is not present the existing duration will be used. The Schedule Dispatch Service will treat this status differently and activities of this status will not counted towards a resources allowed limit of committed activities.

68:Visit Complete This indicates that a visit to an activity has been completed, but the activity as a whole is not yet complete. This status is intended for use with splittable activities.

70:Completed Denotes that the activity has been finished by a resource. An activity will only become completed if the scheduler receives an activity completed event from the EA. The duration of a completed activity is determined by the difference between the OnSite and Completed status change times. If no On Site is sent, the activity will be treated as having zero duration.

80:Incomplete Special status to indicate the activity has been carried out but further work may be required and another activity has to be raised.

Attribute NameData TypeDescriptionPKM/O
idIntegerStatus identifier.PKM
descriptionString(100)Status descriptionM
message_text_idIntegerThe message_id for the description to be translated.

Notes: This is not the full PK for the message row. The other parts of the key are derived from the default language setting and application id.
O

Default Entries

Status IdDescription
-1DoNotSchedule
0Unallocated
10Allocated
20Follow On
30Committed
32Sent
35Downloaded
40Accepted
50Travelling
55Waiting at location
60Onsite
65Pending Completion
68Visit Complete
70Complete
80Incomplete

Entity: Suggested_Dispatch (Output)

This provides the suggested activities to be committed. These suggestions are output by the Schedule Dispatch Service and can be identified in the broadcast when attribute Broadcast.allocation_type = 8. The suggestions are based upon the rules defined for the Schedule Dispatch Service. The fixed resource and fixed date/time attributes are also output so that the correct Activity_Status can be input into the system by the EA.

Note

Commit Sort Value. The lowest value committed activity will appear first in the list of activities. If the values were the same, or null for several activities then the date_time_status would be used to determine the order. In the special case where activities are allowed to be scheduled before committed activities (i.e. AllowAllocateBeforeCommitted = true, CommittedActivitiesConstraintsOption = 1), the commit sort value may have a negative or decimal value - negative if 0 has already been used in a previous 'active' suggestion, or decimal if the current suggestion is between two previous 'active' suggestions with consecutive integer commit sort values. This is to ensure that the order of the activities will always be mapped correctly by the commit sort values of the 'active' suggestions.

Note

A dispatch rule parameter has been added 'SendExternalCommitsMode'. This defaults to 'NONE', giving the existing behaviour, but can also take values of 'MANUAL' and 'ALL'. If set to ALL then the Schedule Dispatch Service will write a Suggested_Dispatch row whenever an activity is committed or uncommitted, if the service did not suggest the dispatch in the first place. If set to MANUAL the service will only do this for activities which have been manually committed or uncommitted via the Scheduling Workbench (identified by Activity_Status.source = 1).

The source attribute on the Suggested_Dispatch row will be set to 2 for suggestions made by the Schedule Dispatch Service itself, and will use the value given on the Activity_Status row for external commits (so this will be 1 for Scheduling Workbench manual commits).

Attribute NameData TypeDescriptionPKM/O
activity_idString(32)Identifies activity.PKM
status_idIntegerThe status to set the activity to either 0 or 30.PKM
visit_idIntegerThe id of the visit the suggestion is for.PKM(1)
date_time_statusDate TimeThe date and time the status should be set at.M
fixed_resourceBooleanIs the resource to be fixed to the activity.M(false)
plan_idInt64Id for the plan.

Foreign Key: Plan
M
commit_sort_valueDoubleDetermines committed status order of activities.

Notes: The lowest value committed activity would appear first.
O
date_time_earliestDate TimeThe suggested date_time_earliest to use when committing the activity.O
date_time_fixedDate TimeThe date and time the activity is fixed.O
expected_end_datetimeDate TimeThe time the visit to the activity is currently expected to end.O
expected_start_datetimeDate TimeThe time the visit to the activity is currently expected to start.O
resource_idString(32)Identifies the resource the activity should be committed to.O
sourceIntegerIdentifies the source of the suggestion.

Notes: All generated suggestions will have source value 2. If the Schedule Dispatch Service is set up to suggest manual and other commits this will equal the value on the commit Activity_Status.
O

Entity: Suggested_Split_Res_Order (Output)

Like Plan_Split_Resource_Order table, this table provides a suggested preferential ordering of resources to be used for allocating this activity when choosing which resource to split to. These recommendations are generated by the Schedule Dispatch Service.

Note

See Plan_Split_Resource_Order and Split_Resource_Order for more details.

Attribute NameData TypeDescriptionPKM/O
activity_idString(32)Specifies the id of the activity this relates to.PKM
sequenceIntegerDefines the position in the sequence.PKM
plan_idInt64The plan this is included in.M
resource_idString(32)Specifies the id of the resource this relates to.M
is_fixedBooleanWhether this resource in this position in the sequence is fixed.O

Entity: System_Counter (System)

For internal use only.

Entity: Target (Input)

Targets define business goals that are used internally by the What-If Scenario Explorer (WISE). An example would be "ensure that the SLA Hit Rate for Plumbing activities is greater than 95%". The actual level of the Target is set using Target Levels; whilst the applicability of the Target is determined by any Target Focus rows which are linked to the Target.

Attribute NameData TypeDescriptionPKM/O
idString(32)Specifies the unique identifier for this Target.PKM
statistic_type_idIntegerDefines the statistic type of this Target. Statistic Types are defined in the System database.M
descriptionString(2000)Provides an optional description of this Target.O

Example

<Target>
    <id>ab9597c257514173889bbe456750bd9c</id>
    <description>Contract renewal SLA target</description>
    <statistic_type_id>32</statistic_type_id>
</Target>

Entity: Target_Focus (Input)

A Target Focus defines a filter which constrains the applicability of the Target.

Attribute NameData TypeDescriptionPKM/O
idString(32)Specifies the unique identifier for this Target FocusPKM
object_nameString(32)Defines a table column to which the filter applies. For Activity_Type or Resource_Type, this must be "id"; for Activity it may be "customer" or "service_level".M
table_nameString(40)Defines a data table to which the filter applies. This must be "Activity", "Activity_Type" or "Resource_Type".M
target_idString(32)Specifies the identifier of the Target to which this Target Focus applies.

Foreign Key: Target
M
object_valueString(100)Specifies the filter value to apply.O
sequenceIntegerSpecifies the order of this Target Focus within the group.O
target_focus_group_idString(32)Specifies the identifier of the Target Focus Group to which this Target Focus belongs.

Foreign Key: Target_Focus_Group
O

Example

<Target_Focus>
    <id>f6db37fd05c84dfa9c8077017d9dc102</id>
    <target_id>ab9597c257514173889bbe456750bd9c</target_id>
    <table_name>Activity</table_name>
    <object_name>customer</object_name>
    <object_value>Acme Ltd</object_value>
</Target_Focus>

Entity: Target_Focus_Group (Input)

A Target Focus Group organizes multiple Target Focuses into logical groups with AND/OR operators to define complex applicability rules for a Target. Groups can be nested hierarchically through the parent relationship, allowing for sophisticated multi-level filtering logic where each group determines whether all its members (AND) or any member (OR) must be satisfied.

Attribute NameData TypeDescriptionPKM/O
idString(32)Specifies the unique identifier for this Target Focus GroupPKM
all_requiredBooleanIndicates whether all Target Focuses of the group must be met (AND operator) or any (OR operator).M
sequenceIntegerSpecifies the order of this Target Focus Group within its parent.M
target_idString(32)Specifies the identifier of the Target to which this Target Focus applies.

Foreign Key: Target
M
target_focus_group_id_parentString(32)Define the parent Target Focus Group to which this group belongs.

Foreign Key: Target_Focus_Group
O

Example

<Target_Focus_Group>
  <id>a1b2c3d4e5f64a5b8c9d0e1f2a3b4c5d</id>
  <target_id>f1e2d3c4b5a649789c8d7e6f5a4b3c2d</target_id>
  <all_required>true</all_required>
</Target_Focus_Group>
<Target_Focus_Group>
  <id>b2c3d4e5f6a74b5c9d0e1f2a3b4c5d6e</id>
  <target_id>f1e2d3c4b5a649789c8d7e6f5a4b3c2d</target_id>
  <target_focus_group_id_parent>a1b2c3d4e5f64a5b8c9d0e1f2a3b4c5d</target_focus_group_id_parent>
  <all_required>false</all_required>
</Target_Focus_Group>
<Target_Focus_Group>
  <id>c3d4e5f6a7b84c5d0e1f2a3b4c5d6e7f</id>
  <target_id>f1e2d3c4b5a649789c8d7e6f5a4b3c2d</target_id>
  <target_focus_group_id_parent>a1b2c3d4e5f64a5b8c9d0e1f2a3b4c5d</target_focus_group_id_parent>
  <all_required>true</all_required>
</Target_Focus_Group>

Entity: Target_Level (Input)

Targets define business goals that are used internally by the What-If Scenario Explorer (WISE). A Target Level defines a range of values which are to be considered as an error or warning state.

Note

The statistic type in the Target defines whether a high value is good or bad. This information must be used when interpreting these levels. For instance, total distance travelled is good when lower; whereas SLA hit rate is good when it is higher.

Attribute NameData TypeDescriptionPKM/O
idString(32)Specifies the unique identifier for this Target LevelPKM
alert_level_idString(32)Defines whether this Target Level is the threshold for an error or warning. Permitted values are: "ERROR", "WARNING" or "OK".M
benefitDoubleSpecifies the benefit of increasing this statistic value by one. Note that statistics which are better when smaller, such as total travel distance, should have a negative value. It is advisable to have a larger value for error ranges than for warning ranges, so as to prioritise the avoidance of errors over the avoidance of warnings. By choosing different benefits for different targets, some targets can be made more important than others.M
benefit_typeString(32)This must always be "ADD": which means total target benefits are added together.M
target_idString(32)Specifies the identifier of the Target to which this Target Level belongs.

Foreign Key: Target
M
range_endDoubleDefines the end of this range of valuesO
range_startDoubleDefines the start of this range of valuesO

Example

<Target_Level>
    <id>a5d36ff5b93d48099f5a505d529016c0</id>
    <target_id>ab9597c257514173889bbe456750bd9c</target_id>
    <alert_level_id>ERROR</alert_level_id>
    <range_start>0</range_start>
    <range_end>80</range_end>
    <benefit>10</benefit>
    <benefit_type>ADD</benefit_type>
</Target_Level>

Entity: Team_Resource (Input)

Team resource defines the memberships of resources in a team.

Attribute NameData TypeDescriptionPKM/O
resource_idString(32)Specifies the resource belonging to the team.

Foreign Key: Resources
PKM
start_datetimeDate TimeSpecifies the start of the resources membership in a team.PKM
team_idString(32)Specifies the team to which the Team Resource belongs.

Foreign Key: Resources
PKM
end_datetimeDate TimeSpecifies the end of the resources membership in a team.M
position_idString(32)Specifies the position of the resource in a team.

Foreign Key: Position
O

Entity: Transfer_Rule (Input)

Transfer rules are used to define the rules for transferring one or more parts from a parent depot to a child depot, providing the cost of transfer and time when the part can be made available. This means a part could be transferred more quickly but at a higher cost.

Attribute NameData TypeDescriptionPKM/O
sequenceIntegerA uniquifier to allow multiple source datas of the same type to be specified.PKM(1)
transfer_rule_set_idString(32)Specifies a unique identifier for the rule set this rule belongs to.

Foreign Key: Transfer_Rule_Set
PKM
unit_costDoubleDefines the cost of transferring one part to the child depot.M(0)
earliest_available_timeDate TimeDefines the earliest time the part could be made available at the child depot.O

Entity: Transfer_Rule_Set (Input)

Defines a set of transfer rules, which are used when transferring parts from one depot to another.

Attribute NameData TypeDescriptionPKM/O
idString(32)Specifies a unique identifier for the transfer rule set.PKM
descriptionString(2000)Describes the transfer rule set.O

Entity: Travel_Cost_Model (Input)

Travel cost models allow for a more detailed definition of how costs should be applied to each journey made by a resource. This allows the DSE to intelligently select when it is appropriate for a resource to carry out a longer journey, or to travel a significant distance from their base location.

The Travel Cost Model can apply penalties based on travel time or distance, this is done by adding a Travel Penalty or Distance Penalty to the Travel Cost Model.

A Travel Penalty has three different types of restriction that can be applied:

  • Journey time - penalties and/or limitations on the expected length of each journey.
  • Travel home time - penalties and/or limitations based on the time it would take to travel home from each scheduled location. For each shift the home location is considered to be the shift's start location.
  • Shift travel time - penalties and/or limitations on the total expected travel time in a shift.

A Distance Penalty has two different types of restriction that can be applied:

  • Journey distance - penalties and/or limitations on the expected distance of each journey.
  • Shift travel distance - penalties and/or limitations on the total expected travel distance in a shift.

For each restriction type, it is possible to specify a maximum limit, and also to specify penalties for exceeding a given threshold. Penalties can either be one-off penalties when the threshold value is passed, or incremental penalties, where an additional cost per km is incurred beyond the threshold value.

For example, suppose a travel cost model has a default cost per km of 1, with a journey time travel penalty for journeys of over 1 hour. The penalty includes a one-off penalty of 100, and an additional cost per km of 1. Now suppose the DSE has planned a journey of 60km lasting 80 minutes. Since the journey is longer than the one hour threshold time, the one-off penalty is applied. In fact the last 25% of the journey is beyond the threshold, so this will be charged at 2 per km due to the additional cost. This makes the total cost for the journey 100 + (45 x 1) + (15 x 2) = 175.

By setting appropriate penalties, the DSE will be selective in scheduling resources to carry out longer journeys, perhaps only when there is urgent work that would otherwise be delayed. Of course the DSE will always try to limit travel time anyway, so penalties should only be used where there is a genuine business requirement.

For each penalty whether distance or travel (excluding travel home time) an additional journey time can be set. This will be applied to a travel time if the penalty threshold has been exceeded. The additional time is not considered when calculating subsequent penalties, meaning the travel cost model only applies to original travel time/distance (the additional time cannot cause the travel time to exceed the threshold for another travel time penalty). For shift based penalties the additional journey time will be applied to the travel where the threshold was reached. For example a distance penalty is configured to apply an additional journey time of 15 minutes after 100km of travel was reached in a shift. Two activities are scheduled where the first takes 75km to travel to and the second takes 50km to travel to. During the travel to the second activity the distance penalty threshold was reached, so the additional time of 15 minutes is applied to that travel.

Note

For the travel home time penalty type, any one off penalty is only incurred when visiting an activity outside the threshold value, and where the previous activity was inside the threshold value.

Finally the model also allows a lower cost to be applied during the travel to and from home periods. For example, if a shift has a travel_to period of 1 hour, then the first travel in the route will be charged at the lower rate, up to the 1 hour limit. If the first travel is longer than 1 hour then the remainder will be charged at the normal rate.

Note

If travel_to_charge_proportion and/or travel_from_charge_proportion is not specified then the default value is taken from the database parameter 'TravelToAndFromHomeChargeable'.

Attribute NameData TypeDescriptionPKM/O
idString(32)Specifies the unique identifier for this Travel Cost Model.PKM
cost_kmDoubleDefines the default cost to apply for each kilometre travelled.M(0.25)
descriptionString(2000)Provides a description for this travel cost model.O
max_journey_distance_kmDoubleSpecifies the maximum distance of any single journey.O
max_shift_travel_distance_kmDoubleSpecifies the maximum total distance travelled allowed in a shift.O
maximum_journey_timeTime SpanSpecifies the maximum allowed length of any single journey.O
maximum_shift_travel_timeTime SpanSpecifies the maximum total travel allowed in a shift.O
maximum_travel_home_timeTime SpanSpecifies the maximum distance from home that a resource is allowed to travel to.O
travel_from_charge_proportionDoubleSpecifies the proportion of the usual travel cost that should be applied during the 'travel from' period.O
travel_to_charge_proportionDoubleSpecifies the proportion of the usual travel cost that should be applied during the 'travel to' period.O

Entity: Travel_Detail (Output)

Returned by the Travel Analysis service in response to a travel detail request.

Attribute NameData TypeDescriptionPKM/O
travel_detail_request_idString(32)The id of the travel detail request.PKM
distanceDoubleThe travel distance of the requested travel.M
timeTime SpanThe travel time of the requested travel.M
plan_idInt64The id of the plan this relates to.

Foreign Key: Plan
O

Entity: Travel_Detail_Request (Input)

A request for the travel time and distance between two locations. The locations can either be specified by latitude and longitude, or they may be existing locations within the input data.

Attribute NameData TypeDescriptionPKM/O
idString(32)Specifies the unique identifier for this Travel Detail Request.PKM
latitude_fromDoubleDefines the latitude of the start location for the travel.

Notes: Range from -90 to +90
O
latitude_toDoubleDefines the latitude of the end location for the travel.

Notes: Range from -90 to +90
O
location_id_fromString(32)Defines the start location for the travel.

Foreign Key: Location
O
location_id_toString(32)Defines the end location for the travel.

Foreign Key: Location
O
longitude_fromDoubleDefines the longitude of the start location for the travel.

Notes: Range from -180 to +180
O
longitude_toDoubleDefines the longitude of the start location for the travel.

Notes: Range from -180 to +180
O
profile_id_travelString(32)Defines the id of the Profile to use when calculating the travel. The corresponding Travel_Time_Profile to be used is then defined by setting the parameter TravelTimeProfileId on the specified Profile.O
speed_factorDoubleSpecifies an additional speed factor to apply when calculating the travel.

Notes: A speed factor of 2 will mean journeys take twice as long.
O
start_datetimeDate TimeDefines the travel start time to use when calculating the travel.O

Entity: Travel_Penalty (Input)

This details the penalties that are linked to a given travel cost model. See 'Travel Cost Model' for details.

Attribute NameData TypeDescriptionPKM/O
threshold_valueTime SpanSpecifies the threshold time from which the penalty is applied.PKM
travel_cost_model_idString(32)Defines the id of the travel cost model this penalty relates to.

Foreign Key: Travel_Cost_Model
PKM
travel_penalty_type_idString(32)Specifies the type of the travel penalty

Foreign Key: Travel_Penalty_Type

Allowed Values: JOURNEY_TIME, SHIFT_TRAVEL_TIME, TRAVEL_HOME_TIME
PKM
additional_cost_kmDoubleSpecifies the additional cost per km to apply once the threshold value is exceeded.O
additional_journey_timeTime SpanSpecifies the additional journey time to apply once the threshold value is exceeded.O
penaltyDoubleDefines a one off penalty to apply for exceeding the threshold value.O

Entity: Travel_Penalty_Type (Lookup)

Lists the different types of travel penalty that can be applied.

Attribute NameData TypeDescriptionPKM/O
idString(32)A unique id.PKM
message_idIntegerThe id of the message describing this penalty type.O

Entity: URL_Parameter (Input)

This specifies a parameter to be associated with a custom URL.

The value of the parameter can be sourced from a particular table (e.g. Activity or Resource).

A custom parameter can also be specified and linked to an activity, activity type, resource or resource type via the entity 'linking' tables, e.g. Activity_Custom_URL.

See examples in the 'Custom_URL' section.

Attribute NameData TypeDescriptionPKM/O
custom_url_idString(32)Specifies the owning URL

Foreign Key: Custom_URL
PKM
sequenceIntegerDefines the sequence in the URL.PKM
custom_parameterIntegerDefines the custom url parameter to be sourced from one of the entity custom url 'linking' tables.

Allowed Values: 1-4

Mapping: Activity_Custom_URL.custom_parameter_value1, Activity_Custom_URL.custom_parameter_value2, Activity_Custom_URL.custom_parameter_value3 or Activity_Custom_URL.custom_parameter_value4

Mapping: Resource_Custom_URL.custom_parameter_value1, Resource_Custom_URL.custom_parameter_value2, Resource_Custom_URL.custom_parameter_value3 or Resource_Custom_URL.custom_parameter_value4

Mapping: Activity_Type_Custom_URL.custom_parameter_value1, Activity_Type_Custom_URL.custom_parameter_value2, Activity_Type_Custom_URL.custom_parameter_value3 or Activity_Type_Custom_URL.custom_parameter_value4

Mapping: Resource_Type_Custom_URL.custom_parameter_value1, Resource_Type_Custom_URL.custom_parameter_value2, Resource_Type_Custom_URL.custom_parameter_value3 or Resource_Type_Custom_URL.custom_parameter_value4
O
parameter_valueString(2000)Provides the parameter value.O
parameter_value_tableString(32)Gives the name of the table from which the parameter is to be retrieved.

Notes: For Additional_Attribute, URL parameter value is matched to an AA.label, and the AA.label_value is used to populate the URL. For other tables in parameter_value_table, e.g. Activity, the URL parameter value must be the name of a column in the Activity table.

Allowed Values: Additional_Attribute, Activity, Activity_Type, Location, Resources, Resource_Type
O

Entity: URL_String (Input)

This specifies a string associated with a custom URL.

Attribute NameData TypeDescriptionPKM/O
custom_url_idString(32)Specifies the owning URL.

Foreign Key: Custom_URL
PKM
sequenceIntegerDefines the sequence in the URL.PKM
string_valueString(2000)Provides the string value.M

Entity: Usage_Class (Input)

Defines a class of usage, along with a default usage rate for this class of usage.

Note

This is only intended for use with repeatable activities and cyclic scheduling.

Attribute NameData TypeDescriptionPKM/O
idString(32)An identifier for this class of usage.PKM
default_usage_per_dayDoubleThe default usage rate per day.M
usage_applies_during_visitsBooleanSpecifies whether usage is accrued while a visit to the activity is in progress.M(true)
usage_applies_outside_visitsBooleanSpecifies whether usage is accrued while no visits to the activity are in progress.M(true)
descriptionString(2000)A description for this usage class.O

Entity: Usage_Model (Input)

This is used to define expected rates of usage for different types of usage that might apply to an operation.

Each type of usage will have a maximum usage, and also usage rates associated to it which can vary over time.

The usage model also has an SLA model associated to it which determines the proportion of the operation base value that will be achieved in a given visit, depending on the visit times.

The usage calculation method determines how the overall usage is calculated when the model contains multiple types of usage. There are currently two supported options - MAXIMUM (take the maximum usage value) or MINIMUM (take the minimum).

Note

This is only intended for use with repeatable activities and cyclic scheduling.

Attribute NameData TypeDescriptionPKM/O
idString(32)An identifier for the model.PKM
usage_calculation_methodString(32)The calculation method to use when determining usage across different types.

Allowed Values: MINIMUM, MAXIMUM
M(MAXIMUM)
descriptionString(500)A description for the model.O

Entity: Usage_Model_Item (Input)

Sets usage limits for the specified class of usage within a usage model.

Note

This is only intended for use with repeatable activities and cyclic scheduling.

Attribute NameData TypeDescriptionPKM/O
usage_class_idString(32)The identifier for the class of usage.

Foreign Key: Usage_Class
PKM
usage_model_idString(32)The identifier for the usage model this relates to.

Foreign Key: Usage_Model
PKM
leeway_always_appliesBooleanDetermines whether the leeway still applies if the operation is carried out before the leeway window.M(true)
leeway_usageDoubleDefines a 'fixed interval' window during which the operation can be performed and the next required time will not be brought forward.M(0)
maximum_usageDoubleThe maximum usage allowed for this class of usage.M

Entity: Usage_Model_SLA (Input)

Together these form a usage SLA model which is used to determine the proportion of the operation base value that will be achieved in a given visit, based on the visit times.

Each individual row specifies an SLA Type to use to calculate the base value proportion if the SLA is between the start and end usage proportions. For example, suppose the start usage proportion is 0.8, the end usage proportion is 0.9, and the SLA type is linear and has start proportion 0.5 and end proportion 1, and suppose this is applied to an operation with value 1000. Then when the calculated usage proportion is at 0.8, the visit operation value will be 1000 * 0.5 = 500. When the calculated usage proportion is 0.85, the visit operation value will be 750 and when the calculated usage proportion is 0.9 the visit operation value will be 1000.

Note

This is only intended for use with repeatable activities and cyclic scheduling.

Attribute NameData TypeDescriptionPKM/O
start_usage_proportionDoubleThe usage proportion from which this SLA type applies.PKM
usage_model_idString(32)The identifier of the usage model this relates to.

Foreign Key: Usage_Model
PKM
end_usage_proportionDoubleThe usage proportion until which this SLA type applies.M
sla_type_idString(32)The identifier of the SLA Type to use.

Foreign Key: SLA_Type
M

Entity: Vehicle (Input)

Defines a vehicle which may be used by a resource during a shift.

Attribute NameData TypeDescriptionPKM/O
idString(32)A unique id for the vehicle.PKM
co2_emission_rateDoubleCarbon dioxide emission rate of the vehicle per kmO
descriptionString(2000)Provides description of the vehicleO
efficiency_rateDoubleEfficiency rate of the vehicleO
manufacture_dateDate TimeManufacture date of the vehicleO
maximum_range_kmDoubleDistance in km a vehicle can travel on a full tank or on a single chargeO
n2o_emission_rateDoubleNitrous Oxide emission rate of the vehicle per kmO
registration_codeString(64)Code where vehicle was registeredO
vehicle_model_idString(32)Model id of the vehicle

Foreign Key: Vehicle_Model
O

Entity: Vehicle_Capacity (Input)

This links a capacity to a vehicle. It is possible for a vehicle to have more than one capacity, representing for example different compartments within a van.

Attribute NameData TypeDescriptionPKM/O
capacity_idString(32)Defines the id of the capacity linked to this vehicle.

Foreign Key: Capacity
PKM
vehicle_idString(32)Defines the id of the vehicle to which this capacity belongs.

Foreign Key: Vehicle
PKM

Entity: Vehicle_Class (Input)

Defines a class assigned to each vehicle.

Attribute NameData TypeDescriptionPKM/O
idString(32)A unique id for the vehicle classPKM
descriptionString(2000)Description of the class assigned to each vehicleO

Entity: Vehicle_Model (Input)

Defines a details of a vehicle model.

Attribute NameData TypeDescriptionPKM/O
idString(32)A unique id for the vehicle modelPKM
axel_countIntegerCount of axels in the vehicleO
co2_emission_rateDoubleCarbon dioxide emission rate of the vehicle per kmO
descriptionString(2000)Provides description of the vehicle modelO
efficiency_rateDoubleEfficiency rate of the vehicleO
fuel_type_idString(32)Type of fuel used by the vehicle

Foreign Key: Fuel_Type
O
height_metresDoubleHeight of the vehicle in metersO
length_metresDoubleLength of the vehicle in metersO
makeString(100)Defines the brand of the vehicleO
maximum_range_kmDoubleDistance in Km a vehicle can travel on a full tank or on a single chargeO
modelString(100)Defines the model of the vehicleO
n2o_emission_rateDoubleNitrous Oxide emission rate of the vehicle per kmO
vehicle_class_idString(32)Defines category of the vehicle

Foreign Key: Vehicle_Class
O
vehicle_ownership_type_idString(32)Type of vehicle ownership

Foreign Key: Vehicle_Ownership_Type
O
weight_kgDoubleWeight of the vehicle in kgsO
wheel_countIntegerCount of wheels in the vehicleO
width_metresDoubleWidth of the vehicle in metersO

Entity: Vehicle_Model_Capacity (Input)

This links a capacity to a vehicle model, which will be used by default for all vehicles of this model. It is possible for a vehicle model to have more than one capacity, representing for example different compartments within a van.

Note

If a vehicle has capacity defined directly against the vehicle, then any vehicle model capacity will be ignored.

Attribute NameData TypeDescriptionPKM/O
capacity_idString(32)Defines the id of the capacity linked to this vehicle model.

Foreign Key: Capacity
PKM
vehicle_model_idString(32)Defines the id of the vehicle model to which this capacity is associated.

Foreign Key: Vehicle_Model
PKM

Entity: Vehicle_Model_Part_Usage (Input)

This specifies a part that will be used by a vehicle of this model while travelling. For example, this may represent battery usage in an electric vehicle. It is possible for a vehicle to use multiple parts.

Note

All parts should be vehicle parts, signified by the is_vehicle_part attribute on the Part row.

Note

A vehicle will use any parts specified against either the vehicle model or directly against the vehicle. Where the same part is specified for both, the usage_per_km will be taken from the Vehicle_Part_Usage.

Attribute NameData TypeDescriptionPKM/O
part_idString(32)The id of the part used by the vehicle.

Foreign Key: Part
PKM
vehicle_model_idString(32)The id of the vehicle using the part.

Foreign Key: Vehicle_Model
PKM
usage_per_kmDoubleSets the usage per kilometre of this part by this vehicle when travelling.M

Entity: Vehicle_Ownership_Type (Input)

Defines ownership type of the vehicle.

Attribute NameData TypeDescriptionPKM/O
idString(32)A unique id for the vehicle ownership typePKM
descriptionString(2000)Description of ownership type of the vehicleO

Entity: Vehicle_Part_Usage (Input)

This specifies a part that will be used by a vehicle while travelling. For example, this may represent battery usage in an electric vehicle. It is possible for a vehicle to use multiple parts.

Note

All parts should be vehicle parts, signified by the is_vehicle_part attribute on the Part row.

Note

When calculating the part usage for a journey, the system will multiply the distance in km by the usage_per_km, and then round this up to the nearest whole number.

Attribute NameData TypeDescriptionPKM/O
part_idString(32)The id of the part used by the vehicle.

Foreign Key: Part
PKM
vehicle_idString(32)The id of the vehicle using the part.

Foreign Key: Vehicle
PKM
usage_per_kmDoubleSets the usage per kilometre of this part by this vehicle when travelling.M

Entity: Version_History (System)

Records the changes made to the database through running create and update scripts.

Attribute NameData TypeDescriptionPKM/O
version_idString(32)The version id of the updatePKM
version_stampDate TimeThe time of the update.PKM
version_typeString(32)The type of update (e.g. create, data update)PKM
version_userString(128)The id of the user applying the update.M

Entity: Visit_Operation (Input)

Specifies that an operation is carried out during a particular visit. The visit should be a fixed resource and time visit (specified via an activity status row).

Note

This is only intended for use with repeatable activities and cyclic scheduling.

Attribute NameData TypeDescriptionPKM/O
activity_idString(32)The identifier for the activity this relates to.

Foreign Key: Activity
PKM
operation_idString(32)The identifier for the operation that is being carried out.

Foreign Key: Operation
PKM
visit_idIntegerThe visit identifier.PKM

Entity: Visit_Part (Input)

This specifies which parts have been used on particular visits. It should only be used for visits with status id committed or greater (≥30). Where the resource has gained parts, the quantity shown should be negative. If a Visit_Part is not specified, the DSE will assume that the visit will use (or has used) the exact number of parts that were required. If no Visit_Part is specified for a depot activity, the DSE will assume that it can choose which parts are required for statuses less than completed. For completed visits to a depot it will assume that no parts were gained unless a Visit_Part is specified.

Attribute NameData TypeDescriptionPKM/O
activity_idString(32)Specifies the unique id of the activity.

Foreign Key: Activity
PKM
part_idString(32)Specifies the unique id of the resource.PKM
visit_idIntegerSpecifies the unique id of the visit.

Notes: When an activity duration spans several shifts then each visit is identified by incrementing the visit id. Value of -1 when not allocated.
PKM
part_usageIntegerSpecifies the number of parts consumed.M
vehicle_idString(32)If populated, this will be the id of the vehicle that the part is taken from or added to.

Foreign Key: Vehicle
O