fsl-multi-region-architecture

Use this skill when designing FSL for multiple geographic regions or timezones: territory timezone configuration, cross-territory resource assignment, concurrent optimization serialization, and regional scheduling boundaries. Trigger keywords: multi-region FSL, FSL timezone territories, cross-territory resource scheduling, concurrent optimization territories, international FSL deployment. NOT for multi-org strategy, single-timezone single-region FSL deployments, or Experience Cloud multi-region (covered by architect/multi-org-strategy).

Best use case

fsl-multi-region-architecture is best used when you need a repeatable AI agent workflow instead of a one-off prompt.

Use this skill when designing FSL for multiple geographic regions or timezones: territory timezone configuration, cross-territory resource assignment, concurrent optimization serialization, and regional scheduling boundaries. Trigger keywords: multi-region FSL, FSL timezone territories, cross-territory resource scheduling, concurrent optimization territories, international FSL deployment. NOT for multi-org strategy, single-timezone single-region FSL deployments, or Experience Cloud multi-region (covered by architect/multi-org-strategy).

Teams using fsl-multi-region-architecture should expect a more consistent output, faster repeated execution, less prompt rewriting, better workflow continuity with your supporting tools.

When to use this skill

  • You want a reusable workflow that can be run more than once with consistent structure.
  • You already have the supporting tools or dependencies needed by this skill.

When not to use this skill

  • You only need a quick one-off answer and do not need a reusable workflow.
  • You cannot install or maintain the underlying files, dependencies, or repository context.

Installation

Claude Code / Cursor / Codex

$curl -o ~/.claude/skills/fsl-multi-region-architecture/SKILL.md --create-dirs "https://raw.githubusercontent.com/PranavNagrecha/AwesomeSalesforceSkills/main/skills/architect/fsl-multi-region-architecture/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/fsl-multi-region-architecture/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How fsl-multi-region-architecture Compares

Feature / Agentfsl-multi-region-architectureStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/A

Frequently Asked Questions

What does this skill do?

Use this skill when designing FSL for multiple geographic regions or timezones: territory timezone configuration, cross-territory resource assignment, concurrent optimization serialization, and regional scheduling boundaries. Trigger keywords: multi-region FSL, FSL timezone territories, cross-territory resource scheduling, concurrent optimization territories, international FSL deployment. NOT for multi-org strategy, single-timezone single-region FSL deployments, or Experience Cloud multi-region (covered by architect/multi-org-strategy).

Where can I find the source code?

You can find the source code on GitHub using the link provided at the top of the page.

SKILL.md Source

# FSL Multi-Region Architecture

This skill activates when an architect designs a FSL deployment spanning multiple geographic regions or timezones. Multi-region FSL introduces territory timezone configuration requirements, cross-territory resource assignment patterns, and optimization serialization constraints that single-region deployments don't encounter.

---

## Before Starting

Gather this context before working on anything in this domain:

- Map all geographic regions and their timezones. Identify any service territories that would need to span timezone boundaries — these must be split.
- Determine whether any resources need to serve multiple territories (e.g., specialists who travel across regional boundaries). This requires Secondary ServiceTerritoryMember records.
- Confirm whether optimization jobs for different regions run concurrently. Concurrent optimization jobs over territories that share resources conflict and must be serialized.
- Understand the customer appointment booking experience — specifically, whether customers in border areas between territories need to see slots in their local timezone.

---

## Core Concepts

### Territory Timezone Configuration

Each ServiceTerritory derives its timezone from its associated OperatingHours record. The `Book Appointment` Global Action derives available time slots using the territory's OperatingHours timezone. 

**Critical architectural constraint:** If a territory's polygon boundary crosses a timezone line, the appointment booking UI will show time slots that don't correspond to the customer's local time. A territory polygon in the Eastern US that extends into the Central timezone will show Eastern time slots for customers who expect Central time.

**Design rule:** Service territory polygon boundaries must not cross timezone lines. If coverage spans two timezones, create two separate territories — one per timezone — each with its own OperatingHours record specifying the correct timezone.

### Cross-Territory Resource Assignment

Resources are assigned to territories via ServiceTerritoryMember. For cross-territory resources:

| TerritoryType | Behavior | Use Case |
|---|---|---|
| **Primary** | Home territory. Resource appears first in scheduling for this territory | Standard technician home assignment |
| **Secondary** | Resource can be scheduled in this territory as overflow | Specialist covering multiple regions |
| **Hard Boundary** | Resource is restricted to their primary territory — cannot be scheduled in others | Union rules, certification zone restrictions |
| **Soft Boundary** | Resource can be scheduled in secondary territories | Standard overflow coverage |

Hard Boundaries restrict a resource to their Primary territory. Soft Boundaries allow scheduling across Primary and Secondary territories. The scheduling policy's Travel Radius and boundary settings determine which assignments the engine considers.

**Creating cross-territory assignment:**
1. Create a Primary ServiceTerritoryMember for the resource's home territory
2. Create one or more Secondary ServiceTerritoryMember records for overflow territories
3. Set boundary mode to Soft in the scheduling policy

### Optimization Serialization for Shared Resources

**Critical constraint:** Concurrent Global optimization jobs for territories that share resources via Secondary assignments will conflict. When Territory A's optimization is assigning a shared resource to an appointment while Territory B's optimization is simultaneously trying to reassign the same resource, one job will fail or produce incorrect results.

**Design rule:** Territories that share resources must run Global optimization sequentially, not concurrently. Schedule optimization jobs with time gaps between regions:
- Region A (10pm–11pm)
- Region B (11pm–midnight)
- Region C (midnight–1am)

If optimization windows overlap, use territory groups with serialized execution.

---

## Common Patterns

### Timezone-Split Territory Design

**When to use:** FSL deployment spanning two or more timezones.

**How it works:**
1. Map territory coverage areas to timezone boundaries
2. For any territory that spans a timezone line: split into two territories aligned to each timezone
3. Create separate OperatingHours records per timezone (e.g., "Eastern 8am-5pm" and "Central 8am-5pm")
4. Assign each split territory the correct OperatingHours record
5. Import KML polygons that stay within the timezone boundary for each territory
6. For resources that operate in both split territories: add Secondary ServiceTerritoryMember in the adjacent territory

### Cross-Regional Specialist Pool

**When to use:** A small pool of certified specialists serves all regional territories on demand.

**How it works:**
1. Assign each specialist a Primary territory (typically home region or HQ territory)
2. Add Secondary ServiceTerritoryMember records for all other territories they may serve
3. Set the scheduling policy to Soft Boundaries for these resources
4. When a specialist is dispatched across regions, the optimization engine assigns them based on travel feasibility and skill match
5. The specialist appears in the `Book Appointment` slot list for secondary territories when availability allows

---

## Decision Guidance

| Situation | Recommended Approach | Reason |
|---|---|---|
| Territory spans timezone line | Split into separate territories per timezone | Prevents incorrect slot times for customers |
| Resource serves multiple territories | Secondary ServiceTerritoryMember + Soft Boundary | Enables cross-territory scheduling |
| Resource must stay in home territory | Hard Boundary | Enforces geographic restriction |
| Territories share resources | Serialize optimization jobs per region | Concurrent jobs conflict over shared resources |
| Customer sees wrong time slots at border | Check territory polygon vs. timezone line | Polygon must not cross timezone boundary |
| International deployment | One territory set per country/timezone, separate OperatingHours | Same timezone rule applies internationally |

---

## Recommended Workflow

1. **Map all timezones in the deployment** — Create a territory-to-timezone mapping table. Flag any proposed territory that spans a timezone boundary.
2. **Split timezone-boundary territories** — Redesign any territory that crosses a timezone line into two territories, one per timezone.
3. **Configure OperatingHours per timezone** — Create distinct OperatingHours records for each timezone in the deployment. Name them clearly (e.g., "Standard Hours — US Eastern").
4. **Design cross-territory resource model** — Identify all resources who serve multiple territories. Create Secondary ServiceTerritoryMember records and confirm Soft Boundary policy settings.
5. **Plan optimization serialization** — List all territory pairs that share resources. Design an optimization schedule that runs these territories sequentially, not concurrently.
6. **Validate appointment booking** — Create test ServiceAppointments in territories near timezone boundaries and verify the `Book Appointment` action returns slots in the correct local time.
7. **Document regional deployment map** — Produce a territory-region-timezone map for ongoing operations reference. Include optimization schedule, shared resource list, and boundary rules.

---

## Review Checklist

- [ ] No territory polygon crosses a timezone line
- [ ] Each territory has an OperatingHours record with the correct timezone
- [ ] Cross-territory resources have both Primary and Secondary ServiceTerritoryMember records
- [ ] Scheduling policy boundary mode set correctly (Soft or Hard)
- [ ] Optimization jobs for territories sharing resources are serialized
- [ ] Appointment booking tested near timezone boundaries with correct local time validation
- [ ] Multi-region deployment map documented

---

## Salesforce-Specific Gotchas

Non-obvious platform behaviors that cause real production problems:

1. **Territory polygons crossing timezone boundaries produce incorrect appointment slot times** — There is no error. The Book Appointment action silently returns slots in the wrong timezone for customers at the boundary. The only remedy is redesigning the territory.
2. **Concurrent optimization for territories sharing resources causes conflicts** — Two optimization jobs running simultaneously for territories with shared Secondary-type resources will interfere with each other's assignments. Always serialize optimization by time-gapping regional jobs.
3. **Hard Boundary restricts the resource to their primary territory regardless of secondary assignments** — A resource with Secondary assignments in other territories but Hard Boundary set in the scheduling policy will never be scheduled outside their primary territory. Verify boundary mode matches the intent.
4. **Book Appointment derives slot timezone from territory OperatingHours — not customer address** — If OperatingHours timezone is wrong (e.g., Pacific hours applied to an Eastern territory), all slot times will be offset by 3 hours with no UI indication to the booking agent.

---

## Output Artifacts

| Artifact | Description |
|---|---|
| Territory-timezone mapping table | List of all territories with their timezone, OperatingHours record, and any timezone-split decisions |
| Optimization serialization schedule | Timed optimization job schedule showing regional sequencing to avoid shared-resource conflicts |
| Cross-territory resource matrix | Resources with multiple territory assignments, boundary type, and scheduling policy settings |

---

## Related Skills

- architect/fsl-optimization-architecture — Optimization mode selection and territory sizing that affects multi-region design
- data/fsl-territory-data-setup — Territory data loading including OperatingHours and ServiceTerritoryMember

Related Skills

omnistudio-multi-language

8
from PranavNagrecha/AwesomeSalesforceSkills

Localize OmniScripts, FlexCards, and DataRaptors using Label-based translation, multi-language JSON, and locale-aware number/date formatting. NOT for Salesforce Translation Workbench alone.

experience-cloud-multi-idp-sso

8
from PranavNagrecha/AwesomeSalesforceSkills

Use this skill when configuring multiple identity providers (OIDC and/or SAML) on a single Experience Cloud site or across tenant-specific portals in the same org — covering auth provider registration, Start SSO URL routing, Federation ID mapping, RegistrationHandler implementation, and simultaneous SP+IdP topology. Trigger keywords: multiple identity providers Experience Cloud, multi-tenant SSO community portal, vendor and citizen portal same site, OIDC SAML both on login page, tenant-specific login routing community. NOT for internal Salesforce employee SSO configuration. NOT for single auth provider setups — see experience-cloud-authentication for basic SSO.

multi-package-development

8
from PranavNagrecha/AwesomeSalesforceSkills

Designing, orchestrating, and maintaining multi-package architectures in Salesforce DX: dependency DAG design, layered package decomposition, install ordering, cross-package API contracts, mono-repo vs. multi-repo layout, and CI/CD pipeline sequencing for projects with two or more unlocked or managed packages. NOT for single-package creation or versioning (see unlocked-package-development), 2GP managed-package ISV workflows (see second-generation-managed-packages), or change-set deployments.

salesforce-files-architecture

8
from PranavNagrecha/AwesomeSalesforceSkills

Working with Salesforce Files at the data layer — `ContentVersion` (the binary content + version metadata), `ContentDocument` (the parent / shareable handle), `ContentDocumentLink` (the sharing / parent-record join), the 2 GB single-file size limit and the 10 MB feed-attached limit, the deprecated `Attachment` object, the `Document` object (Classic-only), and Files Connect for external file sources. Covers SOQL patterns to enumerate files attached to a record, Apex insert / link patterns, sharing implications of `ShareType` and `Visibility`, and the migration path from the legacy Attachment object. NOT for LWC file upload UI components (see lwc/lwc-file-upload-patterns), NOT for static-resource bundling (see lwc/static-resources).

nonprofit-data-architecture

8
from PranavNagrecha/AwesomeSalesforceSkills

Use this skill when designing or querying the NPSP data model — constituent 360, household accounts, giving history rollups, and program participation. Trigger keywords: NPSP data model, household account, constituent record, giving rollups, CRLP, program engagement, ServiceDelivery, npo02__ fields. NOT for standard data model design, Nonprofit Cloud (NPC) data model, FSC household groups, or platform data modeling outside the NPSP context.

multi-currency-and-advanced-currency-management

8
from PranavNagrecha/AwesomeSalesforceSkills

Use when designing or reviewing Salesforce multi-currency behavior, especially irreversible activation, `CurrencyIsoCode`, `convertCurrency()`, dated exchange rates, and Advanced Currency Management tradeoffs. Triggers: 'multi currency', 'advanced currency management', 'CurrencyIsoCode', 'dated exchange rate', 'convertCurrency'. NOT for ordinary numeric field calculations with no currency conversion or reporting concern.

wealth-management-architecture

8
from PranavNagrecha/AwesomeSalesforceSkills

Use this skill when designing or reviewing a Salesforce Financial Services Cloud (FSC) wealth management platform — covering advisor workspace configuration, client portal setup, portfolio data integration, Compliant Data Sharing, and FSC feature enablement decisions. NOT for investment product advice, financial planning calculations, or FSC Health Cloud configurations.

subscription-management-architecture

8
from PranavNagrecha/AwesomeSalesforceSkills

Use when designing or evaluating Salesforce CPQ subscription lifecycle architecture: amendment flow, renewal automation, co-termination design, or billing integration at the contract level. Trigger keywords: amendment architecture, renewal automation, co-termination design, subscription ledger, large-scale amendment, billing schedule, swap pattern, SBQQ__Subscription__c. NOT for billing setup, standard Salesforce contracts without CPQ, or Revenue Cloud advanced order management.

service-cloud-architecture

8
from PranavNagrecha/AwesomeSalesforceSkills

Use when designing a Service Cloud solution end-to-end: channel strategy (phone, email, chat, messaging, social), routing model (queue-based vs skills-based Omni-Channel), knowledge strategy, entitlement and SLA enforcement, Einstein Bot / Agentforce deflection, and integration points. Triggers: service cloud architecture, case routing design, omni-channel strategy, contact center design, channel strategy, knowledge deflection, service console architecture. NOT for individual feature configuration (use admin/case-management), NOT for Einstein Bot conversation design (use agentforce/einstein-bot-architecture), NOT for telephony CTI implementation details.

security-architecture-review

8
from PranavNagrecha/AwesomeSalesforceSkills

Use when conducting a dedicated security architecture review of a Salesforce org — assessing sharing model completeness, FLS/CRUD enforcement, Apex security patterns, exposed API surface, Connected App policies, and Shield readiness. Produces a structured findings report with severity ratings (Critical/High/Medium/Low) and a 20+ point review checklist. Triggers: security architecture review, org security posture, sharing model audit, FLS coverage review, Connected App security, Shield assessment, org security health deep-dive, HIPAA or PCI security controls Salesforce. NOT for implementing security fixes (use security/* skills). NOT for the Salesforce Security Health Check UI (use security-health-check skill). NOT for a full WAF review across all pillars (use well-architected-review).

salesforce-shield-architecture

8
from PranavNagrecha/AwesomeSalesforceSkills

Salesforce Shield as an architectural choice — Platform Encryption + Event Monitoring + Field Audit Trail as three SEPARATELY-LICENSED components, none of which ship in any standard edition. Covers BYOK vs Cache-Only Key Service (CCKM) tradeoffs, probabilistic vs deterministic encryption schemes, the field-type encryption blocklist (Formula, Roll-Up Summary, indexed External ID), Field Audit Trail's 10-year retention model, and why every Shield design starts with a license confirmation. NOT for individual feature setup steps (see security/platform-encryption, security/event-monitoring, security/field-audit-trail), NOT for compliance certification mapping (HIPAA / FedRAMP / PCI specifics).

sales-cloud-architecture

8
from PranavNagrecha/AwesomeSalesforceSkills

Use when designing or reviewing a Sales Cloud solution architecture covering process automation strategy, integration points, data model decisions, and scalability planning. Triggers: 'design a Sales Cloud architecture for enterprise org', 'Sales Cloud data model and automation strategy', 'how to architect Sales Cloud for high-volume pipeline management'. NOT for individual feature configuration (use admin/opportunity-management or admin/lead-management), NOT for CPQ-specific decisions (use architect/cpq-vs-standard-products-decision), NOT for integration implementation details (use architect/sales-cloud-integration-patterns).