The beat master: a named, reusable journey whose outlets are child VisitRouteStop rows and whose recurrence drives visit-plan generation (weekday flags plus weekNumbers, or a cron expression that overrides them). Owned either by a person (resourceId) or, in position-based assignment, by a seat (positionId) - in the latter case resourceId is a system-maintained cache of the seat's current holder. Carries defaults that flow to plans and their visits (visitPurpose, visitTaskTemplateId, partnerAccountId, accountGroupId, itemGroupId) and holds the stored orderings of its stops as child RouteSequence runs. Grouped under a VisitRouteGroup for territory planning.
Fields
| Field | Label | Type | Required | What it does |
AccountGroupId | Account Group | Lookup → AccountGroup | | |
CoverageMidpointDistance | Coverage Midpoint Distance (KM) | Number | | |
CoverageMidpointLocation | Coverage Midpoint Location | GeoLocation | | |
CreatedById | Created By | Lookup → UserAccount | Yes | |
CreatedDateTime | Created Date | DateAndTime | Yes | |
DayNumbers | Day Numbers | Text | | CSV of ISO weekday numbers (1=Monday..7=Sunday) kept two-way in sync with the seven boolean day flags by the handler: editing the CSV rewrites the flags and vice versa. Together with weekNumbers it drives when plans are generated for the route, unless scheduleCron overrides. |
EffectiveFrom | Effective From | DateAndTime | | |
EffectiveTo | Effective To | DateAndTime | | |
FridayAvailable | Friday Available | Boolean | | |
Id | Id | Guid | Yes | |
IsActive | Active | Boolean | | |
ItemGroupId | Item Group | Lookup → ItemGroup | | |
ModifiedById | Modified By | Lookup → UserAccount | Yes | |
MondayAvailable | Monday Available | Boolean | | |
Name | Name | Text | | |
OwnerId | Owner | Lookup → UserAccount | Yes | |
PartnerAccountGroupId | Partner Account Group | Lookup → AccountGroup | | |
PartnerAccountId | Partner Account | Lookup → Account | | |
PositionId | Position | Lookup → Position | | The seat that owns this route. When set, Resource is kept in sync with the seat's current holder automatically. |
RecordTypeId | Record Type | Guid, hidden | | |
Remarks | Remarks | Text | | |
ResourceId | Resource | Lookup → Resource | | The route's owning salesperson. On seat-owned routes (positionId set) this is a derived cache of the seat's current holder and is restamped automatically on handovers - do not treat a manual edit as durable there. |
RouteName | Route Name | LongMultiLineText | | |
RoutingPriority | Routing Priority | PickList | | Values: Shortest Distance, Shortest Time. |
SaturdayAvailable | Saturday Available | Boolean | | |
StartTime | Start Time | TimeOnly | | |
SundayAvailable | Sunday Available | Boolean | | |
ThursdayAvailable | Thursday Available | Boolean | | |
TuesdayAvailable | Tuesday Available | Boolean | | |
UIProps | UI Props | Text | | |
UpdatedDateTime | Modified Date | DateAndTime | Yes | |
VisitPurpose | Visit Purpose | PickList | | Values: Service Touch, Order Capture, Order Delivery, Field Service, Product Demo, Courtesy Visit, Payment Collection. |
VisitRouteGroupId | Visit Route Group | Lookup → VisitRouteGroup | | |
VisitTaskTemplateId | Visit Task Template | Lookup → VisitTaskTemplate | | Default execution playbook for the route: copied onto plans created from the route and from there onto generated visits (a stop-level template overrides it per stop). |
WednesdayAvailable | Wednesday Available | Boolean | | |
WeekNumbers | Week Numbers | Text | | Restricts plan generation to specific weeks of the month alongside the weekday flags; ignored when scheduleCron is set. |
Actions
| Action | Label | Type | What it does |
AssignPositionsFromOwners | Assign Positions from Owners | ServerAction (AssignPositionsFromOwners) | Converts person-owned routes to seat ownership: finds each route executive's Position (their open Executive Position mapping), creating the Position and mapping when none exists, then stamps the route. Idempotent - routes already on a position are skipped |
BulkDelete | Delete | Delete | Delete |
Clone | Clone | ServerAction (Clone) | Create a copy of this record |
Delete | Delete | Delete | Delete |
DeleteInList | Delete | Delete | Delete |
Edit | Edit | Edit | Edit |
EditInLine | Edit | EditInline | Edit |
EditInList | Edit | EditInline | Edit In List Header |
EditPopup | Edit | Edit | Edit |
New | New | New | New |
OptimizeRouteSequence | Optimize Route Sequence | ServerAction (OptimizeRouteSequence) | Paid road-network optimization of the route's APPROVED stops via the configured routing provider, appended as the new current Optimized RouteSequence - unlike the nearest-neighbour runs its distance and duration are real driving totals. The planner picks the new order up on the next plan creation; already-generated plans are untouched. Geo-less stops trail in authored order. Fails validation (without spending a provider request) when the provider is unconfigured or the route has no approved, geocoded stops. |
RecomputeRouteSequences | Recompute Sequences | ServerAction (RecomputeRouteSequences) | Refreshes the route's stored orderings in the RouteSequence source of record: one route-generic Optimized run (free nearest-neighbour over the approved stops' coordinates) plus MostlyFollowed runs computed from actual visit history - route-generic and one per salesperson with started-visit history. Each new run becomes current within its family; superseded runs keep their rows as history. Costs no external provider request. |
Validations
| Validation | Applies to | Error message | Notes |
| Effective From Field Validation | EffectiveFrom, Error, inactive | Effective From date cannot be in the past. | Effective From date cannot be in the past. |
Lookup filters
| Filter | Lookup field | Notes |
| Partner Account | PartnerAccountId | |
| ActiveResource | ResourceId | |