A named container for a set of beats (Visit Routes), for example one city, territory or distributor area, and the host of territory planning. The Plan Territory run, started from the Plan Territory dialog on the Field Sales Route Optimization page, splits the chosen outlets (individual customer accounts or one customer account group) across the chosen executives or seats and creates one active beat per executive in this group, named '<group name> · <executive name>', with approved stops in road-optimized order and an Optimized route sequence. With Replace ticked, every active beat already in the group is made inactive first. The group's Partner Account, Visit Task Template and Visit Purpose are copied onto each planned beat, and every visit plan generated from a beat carries the beat's group. The run does not set a beat's days or weeks. The group has no menu entry in the seeded apps, and the Plan Territory button on the group's own page sends no executives or outlets, so it always fails; use the Route Optimization page.
Fields
| Field | Label | Type | Required | What it does |
BranchId | Branch | Lookup → Branch | | Branch of the group. Territory planning starts and ends a beat here when neither the seat's location nor the executive's default branch has coordinates; otherwise it falls back to the centre of the outlets. Not copied onto beats. |
CreatedById | Created By | Lookup → UserAccount | Yes | |
CreatedDateTime | Created Date | DateAndTime | Yes | |
Id | Id | Guid | Yes | |
ModifiedById | Modified By | Lookup → UserAccount | Yes | |
Name | Name | Text | | Name of the group. Required by the planning dialog when it creates a new group, used as the first part of every beat name territory planning creates, and shown as the beat label in Visit Route Regularization. |
OwnerId | Owner | Lookup → UserAccount | Yes | |
PartnerAccountId | Partner Account | Lookup → Account | | Distributor or company the group serves, copied onto every beat territory planning creates. The planning dialog does not use it to select outlets. |
RecordTypeId | Record Type | Guid, hidden | | |
ResourceId | Resource | Lookup → Resource | | Informational only. Territory planning, beats and visit plans never read it; each beat's executive comes from the planning run or the beat itself. |
UIProps | UI Props | Text | | |
UpdatedDateTime | Modified Date | DateAndTime | Yes | |
VisitPurpose | Visit Purpose | PickList | | Reason for the visits, copied onto every beat territory planning creates. Offers Ready Stock Sales and Van Sales, which a beat's own Visit Purpose list does not. Values: Order Delivery, Product Demo, Order Capture, Ready Stock Sales, Van Sales. |
VisitRouteCode | Visit Route Code | Text | | Short code of the group. Shown in the Visit Route Regularization beat picker only when the group has no Name; nothing else reads it. |
VisitTaskTemplateId | Visit Task Template | Lookup → VisitTaskTemplate | | Task template copied onto every beat territory planning creates, so their visits take their task cards from it. It does not change the time allowed per stop; that comes from past visit durations or the default service time setting. |
Actions
| Action | Label | Type | What it does |
BulkDelete | Delete | Delete | Delete the selected records. |
Clone | Clone | ServerAction (Clone) | Create a copy of this record |
Delete | Delete | Delete | Delete |
DeleteInList | Delete | Delete | Delete in a list page |
Edit | Edit | Edit | Edit |
EditInLine | Edit | Edit | Edit in page. |
EditInList | Edit | EditInline | Edit In List Header |
New | New | New | New |
PlanTerritory | Plan Territory | ServerAction (PlanTerritory, async) | Multi-executive territory planning (vehicle-routing solve): splits a set of accounts across the given executives or seats and sequences each route over real road travel times, persisting one VisitRoute per executive under this group (stops in solver order) plus a RouteSequence audit run each. Args: executiveResourceIds[] or positionIds[] (positions win and stamp seat ownership), accountIds[] or accountGroupId or partnerAccountId, travelMode, maxStopsPerRoute, replaceExisting (default true). Requires the road-matrix provider; marked async it runs on the background worker at any size, while a synchronous invocation is capped to a small account count so the chunked matrix fits the request budget. The result reports per-route load, dropped and un-geocoded accounts, and deactivated prior routes. |