zia-onboard-location
End-to-end onboarding of a new ZIA location with its traffic forwarding dependencies. Walks through the full dependency chain: (1) Create a static IP for the site's egress point, (2) Create VPN credentials (UFQDN or IP-based) for the IPSec tunnel, (3) Create the location referencing the static IP and VPN credentials, (4) Optionally create a sub-location. Covers both UFQDN-based (simple) and IP-based (requires static IP first) VPN credential flows. Use when an administrator asks: 'Add a new office location', 'Onboard a branch office', or 'Set up traffic forwarding for a new site.'
What this skill does
# ZIA: Onboard Location
## Keywords
onboard location, new location, add location, branch office, zia location, traffic forwarding, vpn credentials, static ip, ipsec tunnel, site onboarding, sub-location, office setup
## Overview
Onboard a new location in Zscaler Internet Access by walking through the full traffic forwarding dependency chain. Locations require either static IPs or VPN credentials (or both) before they can be created. This skill covers both UFQDN-based and IP-based VPN credential flows, sub-location creation, and location configuration options.
**Use this skill when:** An administrator wants to add a new office, branch, or datacenter location to ZIA, configure traffic forwarding for a new site, or set up IPSec VPN tunnels for location-based security.
---
## Dependency Chain
```text
Static IP (optional, required for IP-based VPN)
│
▼
VPN Credentials (UFQDN or IP type)
│
▼
Location (references VPN credentials and/or static IPs)
│
▼
Sub-Location (optional, references parent location)
```text
**Two flows:**
- **UFQDN flow** (simpler): Create VPN credential (UFQDN) -> Create location with VPN credential
- **IP flow** (full chain): Create static IP -> Create VPN credential (IP) referencing static IP -> Create location with both static IP and VPN credential
---
## Workflow
### Step 1: Gather Site Information
Ask the administrator:
**Required:**
- Location name (e.g., "USA_SJC_37", "London_Office_01")
- Country (e.g., "UNITED_STATES", "CANADA", "UNITED_KINGDOM")
- Timezone (e.g., "UNITED_STATES_AMERICA_LOS_ANGELES", "CANADA_AMERICA_VANCOUVER")
- Traffic forwarding method: UFQDN-based VPN or IP-based VPN
**For UFQDN-based VPN:**
- FQDN identifier (e.g., "<[email protected]>")
- Pre-shared key for the IPSec tunnel
**For IP-based VPN:**
- Public IP address of the site's egress point
- Pre-shared key for the IPSec tunnel
**Optional:**
- Description
- State (e.g., "California")
- Profile: `CORPORATE`, `SERVER`, `GUESTWIFI`, `IOT`, `WORKLOAD`, or `NONE`
- Authentication settings (auth_required, idle_time_in_minutes)
- Firewall/IPS settings (ofw_enabled, ips_control)
- Bandwidth limits (up_bandwidth, dn_bandwidth)
- Surrogate IP settings
- XFF forwarding
---
### Step 2: Check for Existing Resources
Before creating anything, list existing resources to avoid duplicates.
**Check existing locations:**
```text
zia_list_locations()
```text
**Check existing static IPs:**
```text
zia_list_static_ips()
```text
**Check existing VPN credentials:**
```text
zia_list_vpn_credentials()
```text
---
### Step 3: Create Static IP (IP-based VPN only)
If using IP-based VPN credentials, the static IP must be created first.
```text
zia_create_static_ip(
ip_address="203.0.113.10",
routable_ip=True,
comment="SJC-37 Office Egress IP",
geo_override=False
)
```text
Save the returned `ip_address` and `id` for the next steps.
**Verify:**
```text
zia_get_static_ip(static_ip_id="<returned_id>")
```text
**Note:** Geolocation is automatically determined from the IP address. Set `geo_override=True` with explicit `latitude`/`longitude` only if you need custom coordinates.
---
### Step 4: Create VPN Credentials
#### Option A: UFQDN-Based VPN (simpler, no static IP needed)
```text
zia_create_vpn_credential(
credential_type="UFQDN",
fqdn="[email protected]",
pre_shared_key="<pre_shared_key>",
comments="USA - San Jose IPSec Tunnel"
)
```text
Save the returned `id` and `type` for the location creation.
#### Option B: IP-Based VPN (requires static IP from Step 3)
```text
zia_create_vpn_credential(
credential_type="IP",
ip_address="203.0.113.10",
pre_shared_key="<pre_shared_key>",
comments="USA - San Jose IPSec Tunnel"
)
```text
Save the returned `id` and `type`.
**Verify:**
```text
zia_get_vpn_credential(credential_id="<returned_id>")
```text
---
### Step 5: Create the Location
#### With UFQDN VPN Credentials
```text
zia_create_location(
location={
"name": "USA_SJC_37",
"description": "San Jose Office - Branch 37",
"country": "UNITED_STATES",
"tz": "UNITED_STATES_AMERICA_LOS_ANGELES",
"state": "California",
"profile": "CORPORATE",
"authRequired": True,
"idleTimeInMinutes": 720,
"displayTimeUnit": "HOUR",
"surrogateIP": True,
"xffForwardEnabled": True,
"ofwEnabled": True,
"ipsControl": True,
"vpnCredentials": [
{
"id": <vpn_credential_id>,
"type": "UFQDN"
}
]
}
)
```text
#### With IP VPN Credentials and Static IP
```text
zia_create_location(
location={
"name": "USA_SJC_37",
"description": "San Jose Office - Branch 37",
"country": "UNITED_STATES",
"tz": "UNITED_STATES_AMERICA_LOS_ANGELES",
"state": "California",
"profile": "CORPORATE",
"authRequired": True,
"idleTimeInMinutes": 720,
"displayTimeUnit": "HOUR",
"surrogateIP": True,
"xffForwardEnabled": True,
"ofwEnabled": True,
"ipsControl": True,
"ipAddresses": ["203.0.113.10"],
"vpnCredentials": [
{
"id": <vpn_credential_id>,
"type": "IP",
"ipAddress": "203.0.113.10"
}
]
}
)
```text
Save the returned location `id` for sub-location creation if needed.
**Verify:**
```text
zia_get_location(location_id="<returned_id>")
```text
---
### Step 6: Create Sub-Location (Optional)
Sub-locations segment traffic within a parent location (e.g., by subnet or VLAN).
```text
zia_create_location(
location={
"name": "USA_SJC37_Office-Branch01",
"description": "SJC37 Office Branch 01 - Engineering VLAN",
"country": "UNITED_STATES",
"tz": "UNITED_STATES_AMERICA_LOS_ANGELES",
"profile": "CORPORATE",
"parentId": <parent_location_id>,
"authRequired": True,
"idleTimeInMinutes": 720,
"displayTimeUnit": "HOUR",
"surrogateIP": True,
"ofwEnabled": True,
"ipAddresses": ["10.5.0.0-10.5.255.255"],
"upBandwidth": 10000,
"dnBandwidth": 10000
}
)
```text
**Sub-location notes:**
- Must reference `parentId` of an existing location
- Uses internal IP ranges (e.g., `10.5.0.0-10.5.255.255`) not public IPs
- Can have different bandwidth limits and policy settings than the parent
- Inherits VPN credentials from the parent location
---
### Step 7: Activate Configuration
After creating locations, activate the configuration to push changes to the Zscaler cloud:
```text
zia_activate_configuration()
```text
---
### Step 8: Verify and Summarize
```text
Location onboarding complete.
**Location:** USA_SJC_37
- Country: United States
- Timezone: US/Pacific
- Profile: CORPORATE
- Firewall: Enabled
- IPS: Enabled
- XFF Forwarding: Enabled
**Traffic Forwarding:**
- Static IP: 203.0.113.10 (ID: <id>)
- VPN Credential: IP-based (ID: <id>)
- IPSec Tunnel: Configured
**Sub-Location:**
- Name: USA_SJC37_Office-Branch01
- IP Range: 10.5.0.0 - 10.5.255.255
- Bandwidth: 10Mbps up / 10Mbps down
**Configuration:** Activated
**Next Steps:**
1. Configure IPSec tunnel on the branch router pointing to Zscaler
2. Verify traffic is flowing through the ZIA service
3. Assign the location to URL filtering, firewall, or DLP rules if needed
```text
---
## Location Configuration Options
### Profile Types
| Profile | Use Case |
|---|---|
| `CORPORATE` | Standard corporate office |
| `SERVER` | Data center or server farm |
| `GUESTWIFI` | Guest wireless network |
| `IOT` | IoT device network |
| `WORKLOAD` | Cloud workload (AWS, Azure) |
| `NONE` | Unassigned (default) |
### Security Settings
| Setting | Description | Recommended |
|---|---|---|
| `authRequired` | Enforce user authentication | `True` for CORPORATE |
| `ofwEnabled` | Enable cloud firewall | `True` |
| `ipsControl` | Enable IPS (requires firewall) | `True` |
| `surrogateIP` | Map users to device IPs | `True` for auth |
| `xffForwardEnabled` | Forward X-Forwarded-For header | `True` |
| `cautionEnabled` | Show caution notifications | Per policy |
### Authentication SettingRelated in General
modeling-omnistudio-epc-catalog
IncludedSalesforce Industries CME EPC product-modeling skill for Product2-based catalog creation. Use when creating EPC products, configuring product attributes, building offer bundles with Product Child Items, or reviewing EPC DataPack JSON metadata for product catalog changes. TRIGGER when: user creates or updates Product2 EPC records, AttributeAssignment payloads, AttributeMetadata/AttributeDefaultValues, Offer bundles, or ProductChildItem relationships. DO NOT TRIGGER when: designing OmniScripts/FlexCards/Integration Procedures (use building-omnistudio-omniscript, building-omnistudio-flexcard, or building-omnistudio-integration-procedure), implementing Apex business logic (use generating-apex), or troubleshooting deployment pipelines (use deploying-metadata).
relationship-science-coach
IncludedUse this skill for direct, practical adult relationship coaching: couples conflict, repair, trust, marriage, dating, flirting, attachment patterns, emotional connection, sex, desire differences, eroticism, kink negotiation, affection, love languages, breakups, and long-term passion. Draw on Gottman, EFT and Hold Me Tight, attachment science, modern sex research, Perel, Nagoski, Kerner, Schnarch, Love and Stosny, and flexible love-language tools. Be concrete and low-hedge. Redirect only for imminent danger, abuse, coercive control, minors, non-consent, self-harm, stalking, or medical/legal/psychiatric decisions.
building-sf-integrations
IncludedSalesforce integration architecture and runtime plumbing with 120-point scoring. Use this skill to set up Named Credentials, External Credentials, External Services, REST/SOAP callout patterns, Platform Events, and Change Data Capture. TRIGGER when: user sets up Named Credentials, External Services, REST/SOAP callouts, Platform Events, CDC, or touches .namedCredential-meta.xml files. DO NOT TRIGGER when: Connected App/OAuth config (use configuring-connected-apps), Apex-only logic (use generating-apex), or data import/export (use handling-sf-data).
venue-templates
IncludedAccess comprehensive LaTeX templates, formatting requirements, and submission guidelines for major scientific publication venues (Nature, Science, PLOS, IEEE, ACM), academic conferences (NeurIPS, ICML, CVPR, CHI), research posters, and grant proposals (NSF, NIH, DOE, DARPA). This skill should be used when preparing manuscripts for journal submission, conference papers, research posters, or grant proposals and need venue-specific formatting requirements and templates.
let-fate-decide
IncludedDraws the 12 Houses of the Zodiac Tarot spread to inject entropy into planning when prompts are vague, ambiguous, or casually delegated. Interprets the spread to guide next steps. Use when the user says 'let fate decide', 'YOLO', 'whatever', 'idk', or other nonchalant phrases, makes Yu-Gi-Oh references, or when you are about to arbitrarily pick between multiple reasonable approaches. Prefer over ask-questions-if-underspecified when the user's tone is casual or playful rather than precision-seeking.
net-ops
IncludedCross-platform network troubleshooting (Windows, macOS, Linux) via local or remote shell. Use for: DNS broken, can't resolve hostnames, nslookup/dig works but apps fail, NRPT, WFP, scutil, /etc/resolver, systemd-resolved, /etc/resolv.conf, NetworkManager, VPN DNS leak residue (ProtonVPN/Mullvad/WireGuard/AnyConnect), AV/firewall blocking DNS or DoH, Tailscale DNS interaction, intermittent connectivity, remote diagnostics over SSH.