zpa-create-server-group
Create a ZPA server group with all required dependencies. Server groups require app connector groups to exist first. This skill walks through the dependency chain: (1) Check for existing app connector groups, (2) Create an app connector group if none exist, (3) Create the server group referencing the connector group IDs, (4) Verify the server group was created correctly. Use when an administrator needs to set up a new server group for application access.
What this skill does
# ZPA: Create Server Group
## Keywords
create server group, new server group, zpa server group, add server group, connector group dependency, server group setup, zpa infrastructure
## Overview
Create a ZPA server group by first ensuring its required dependency -- an app connector group -- exists. Server groups are fundamental building blocks in ZPA that define which application connectors serve traffic for specific applications.
**Use this skill when:** An administrator asks to create a new server group, set up ZPA infrastructure, or needs help understanding server group dependencies.
---
## Workflow
Follow this 5-step process to create a server group with its dependencies.
### Step 1: Gather Requirements
Ask the administrator for the following information:
**Required:**
- Server group name
- Whether to use an existing app connector group or create a new one
**Optional:**
- Server group description
- Whether IP anchoring is needed (`ip_anchored`)
- Whether dynamic discovery should be enabled (`dynamic_discovery`)
- Specific application server IDs to associate (`server_ids`)
- Microtenant ID (for multi-tenant environments)
---
### Step 1.5: Pick the Server Group Pattern (baseline alignment)
Reference: ZPA Baseline Recommendations v1.0 §Server Group Definition. Pick one of the five patterns before you choose `app_connector_group_ids`:
| Pattern | When to use | AC group binding |
|---|---|---|
| **Dedicated per location** (default for most apps) | Apps hosted in one DC / cloud region | The single location AC group only |
| **Secure enclave** | Sensitive / regulated apps (Finance, HR, Legal, PCI) | The **isolated** enclave AC group only — never co-mingle with general traffic |
| **Global** | Apps reachable from anywhere (AD DCs, NTP, internally LB'd web) | **All** location AC groups |
| **SIPA** | Third-party apps that require fixed source IP | Dedicated SIPA AC group(s) only — separate from general traffic so heavy general load can't degrade SIPA performance |
| **Regional** | Single-DC app that needs cross-DC failover | Multiple AC groups in a region (e.g. "US-East" SG bound to all US-East AC groups) |
| **Discovery** | Wildcard segment for unknown apps (`*.corp.example.com`) | All communal AC groups, plus `dynamic_discovery=True` |
Once you've picked the pattern, the AC group selection in Step 2 / 3 is determined.
#### Dynamic Discovery — when to disable it
The baseline doc recommends `dynamic_discovery=True` for almost all server groups. **Disable it only when:**
- Strict per-server segmentation is required (specific server IDs must be served by specific connectors).
- You need destination NAT for overlapping networks across multi-DC / multi-cloud or partner environments served by ZPA Extranet.
**Important — dynamic discovery ≠ application health checks.** Dynamic discovery only learns server reachability from connector lookups. Application health (TCP probes, HTTP checks, port polling) is configured separately on the **application segment** via the `health_reporting` field. See the `application_segment-onboard` skill for `health_reporting` defaults.
---
### Step 2: Check for Existing App Connector Groups
Before creating anything, list existing app connector groups to avoid duplicates.
```text
zpa_list_app_connector_groups()
```text
**Evaluate results:**
- If a suitable connector group already exists, note its `id` for use in Step 4
- If no connector groups exist or none are suitable, proceed to Step 3
- Present the list to the administrator and ask which to use (or confirm creating a new one)
#### Example Response
```text
I found the following existing app connector groups:
1. **US-East Connectors** (ID: 72058304567890)
- Location: New York, US
- Enabled: Yes
- Connectors: 3
2. **EU-West Connectors** (ID: 72058304567891)
- Location: Dublin, IE
- Enabled: Yes
- Connectors: 2
Would you like to use one of these, or should I create a new app connector group?
```text
---
### Step 3: Create App Connector Group (if needed)
If a new app connector group is required:
```text
zpa_create_app_connector_group(
name="<connector_group_name>",
description="<description>",
enabled=True,
latitude="<latitude>",
longitude="<longitude>",
location="<location_name>",
city_country="<city>, <country>",
country_code="<ISO_country_code>"
)
```text
**Important notes:**
- `country_code` accepts full names (e.g., "United States") or ISO codes ("US")
- `latitude` and `longitude` help with geo-proximity routing
- Save the returned `id` -- it is required in the next step
#### Confirm creation
```text
zpa_get_app_connector_group(group_id="<returned_id>")
```text
---
### Step 4: Create the Server Group
With the app connector group ID(s) in hand, create the server group:
```text
zpa_create_server_group(
name="<server_group_name>",
app_connector_group_ids=["<connector_group_id>"],
description="<description>",
enabled=True,
ip_anchored=False,
dynamic_discovery=True
)
```text
**Parameter guidance:**
- `app_connector_group_ids` (required): List of one or more app connector group IDs from Step 2 or Step 3
- `dynamic_discovery`: Set to `True` when application servers are discovered automatically; `False` when specifying servers manually via `server_ids`
- `ip_anchored`: Set to `True` only when source IP anchoring is required (advanced use case)
---
### Step 5: Verify and Summarize
Confirm the server group was created successfully:
```text
zpa_get_server_group(group_id="<returned_server_group_id>")
```text
#### Present Summary
```text
Server group created successfully.
**Server Group:**
- Name: <name>
- ID: <id>
- Enabled: Yes
- Dynamic Discovery: Yes/No
- IP Anchored: Yes/No
**Associated App Connector Group(s):**
- <connector_group_name> (ID: <connector_group_id>)
**Next Steps:**
- You can now reference this server group (ID: <id>) when creating
application segments using `zpa_create_application_segment`
- To create a complete application, see the "application_segment-onboard" skill
```text
---
## Dependency Chain Reference
```text
App Connector Group (no dependencies)
│
▼
Server Group (requires app_connector_group_ids)
│
▼
Application Segment (requires segment_group_id, optionally server_group_ids)
│
▼
Access Policy Rule (references application segments, groups, users)
```text
---
## Edge Cases
### Multiple Connector Groups
A server group can reference multiple app connector groups for redundancy:
```text
zpa_create_server_group(
name="Multi-Region Servers",
app_connector_group_ids=["<us_east_id>", "<eu_west_id>"],
dynamic_discovery=True
)
```text
### Microtenant Scoping
In multi-tenant environments, pass `microtenant_id` to both the connector group and server group:
```text
zpa_create_app_connector_group(
name="Tenant-A Connectors",
microtenant_id="<tenant_id>",
...
)
zpa_create_server_group(
name="Tenant-A Servers",
app_connector_group_ids=["<id>"],
microtenant_id="<tenant_id>"
)
```text
### Static Server Assignment
When dynamic discovery is disabled, associate specific application servers:
```text
zpa_list_application_servers()
zpa_create_server_group(
name="Static Servers",
app_connector_group_ids=["<connector_group_id>"],
server_ids=["<server_id_1>", "<server_id_2>"],
dynamic_discovery=False
)
```text
---
## Quick Reference
**Dependency:** App Connector Group must exist before creating a Server Group.
**Tools used:**
- `zpa_list_app_connector_groups()` -- find existing connector groups
- `zpa_create_app_connector_group(name, ...)` -- create if needed
- `zpa_get_app_connector_group(group_id)` -- verify connector group
- `zpa_create_server_group(name, app_connector_group_ids, ...)` -- create server group
- `zpa_get_server_group(group_id)` -- verify server group
**Remember:**
- Always check for existing resources before creating new ones
- The `app_connector_group_ids` parameter on sRelated 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.