Service Itsm Agentic Setup Agentforce Studio Configure
Enable the Agentforce for IT Service Salesforce Go feature toggles (Agentforce Studio, Einstein Generative AI, the parent umbrella, and the Fulfiller/Employee agent templates) using the Salesforce CLI (sf). Turns ON org prefs via the Setup Discovery feature/{apiName}/enable Connect API route. Write-capable, idempotent, dependency-ordered, confirm-to-write required. Use when asked to enable Agentforce Studio, turn on Agentforce for IT Service, enable Einstein generative AI, or configure the org-level Agentforce for IT Service prerequisites. Triggers: enable agentforce studio, turn on agentforce for it service, enable einstein generative ai, configure agentforce org prefs. DO NOT TRIGGER: read-only prerequisite check (service-itsm-agentic-setup-agentforce-studio-validate), create/activate an agent (service-itsm-agentic-setup-fulfiller-agent-configure), or assigning permission sets.
- Skill ID
- forcedotcom/sf-skills/service-itsm-agentic-setup-agentforce-studio-configure
- Publisher
- forcedotcom
- Repository
- sf-skills
- Installs
- 0
- Files
- 5
- Synced
- Sep 23, 2026
Open any RiverX project, open the Skills panel in the chat, and search for this identifier. The files are fetched from the source repository at install time.
forcedotcom/sf-skills/service-itsm-agentic-setup-agentforce-studio-configureInstalls these files- SKILL.md
- references/cli-invocation.md
- scripts/classify-enable-plan.mjs
- scripts/classify-final-report.mjs
- scripts/record-enable-result.mjs
What this skill tells the agent
Enable Agentforce for IT Service Prerequisites
Enable the Agentforce for IT Service Salesforce Go feature toggles — Einstein Generative AI, Agentforce Studio, the parent umbrella, and the path-specific agent template (Fulfiller or Employee) — entirely through the Salesforce CLI (`sf`). These toggles are the prerequisites for creating the Fulfiller/Employee agent; this write-capable step turns them on via the Setup Discovery POST /connect/setup/discovery/feature/{apiName}/enable Connect API route. Each toggle is enabled idempotently (skipped if already ENABLED), dependencies are enabled first, and explicit confirmation is required before any write.
| Step | Skill | What it does |
|---|---|---|
| 1. Validate | service-itsm-agentic-setup-agentforce-studio-validate | Read the toggles → READY / NOT-READY (no writes) |
| 2. Configure (this skill) | service-itsm-agentic-setup-agentforce-studio-configure | Turn the disabled toggles ON |
| 3. Create agent | service-itsm-agentic-setup-fulfiller-agent-configure | Create + activate the Fulfiller agent |
This skill is typically reached via hand-off from the validate skill's NOT-READY report, but can also be run directly.
A helper script — scripts/classify-enable-plan.mjs — reads the batched /features/status response and deterministically computes the dependency-ordered enable plan (before writing) and the final per-feature verdict (after writing). This mirrors the validate skill's classify-readiness.mjs contract (authoring standard A9): the decision logic lives in a script, not in prose.
Scope
- In scope: Enabling Einstein Generative AI (
sales-cloud-einstein-generative-ai), Agentforce Studio (sales-cloud-agent-studio), the parent umbrella (service-cloud-agentforce-for-itsm), and the path-specific template (service-cloud-it-fulfiller-agentfor fulfiller;service-cloud-requestor-agent+service-cloud-it-service-employee-agentfor employee) viaPOST .../feature/{apiName}/enable; reading live per-org state from/features/statusbefore and after each write; enabling dependencies first; confirming enablement stuck via re-query; surfacing an ENABLED / ALREADY-ENABLED / FAILED verdict per feature. Writes are idempotent — skip if alreadyENABLED. - Out of scope: Provisioning Agentforce licenses (Setup > Company Information > Permission Set Licenses); assigning permission sets to users; creating, configuring, or activating an agent (
service-itsm-agentic-setup-fulfiller-agent-configure); read-only prerequisite validation without writes (service-itsm-agentic-setup-agentforce-studio-validate); the org-wide multi-agent orchestration toggle (a Headless360-only pref, not a Connect feature).
Which path?
Determine whether the user is enabling prerequisites for the fulfiller agent or an employee agent. If unclear, ask (AskUserQuestion) — same path selection the validate skill uses:
- fulfiller →
sales-cloud-einstein-generative-ai→sales-cloud-agent-studio→service-cloud-agentforce-for-itsm→service-cloud-it-fulfiller-agent - employee →
sales-cloud-einstein-generative-ai→sales-cloud-agent-studio→service-cloud-agentforce-for-itsm→service-cloud-requestor-agent→service-cloud-it-service-employee-agent
Einstein Generative AI is a dependency of Agentforce Studio and is not one of the toggles the validate skill reports on directly, but it must be enabled first if it is off — the classifier includes it in the enable plan for both paths.
Preconditions
Same as the validate skill (they share the target org and API surface). If unmet, sf surfaces an auth error or a 401/403/404; do not fabricate state — surface the raw error and stop.
- `sf` CLI installed and authenticated to the target org (
sf org display -o <alias>shows Connected). All calls use--target-org <alias>; never extract or pass the access token by hand. - API v67.0+: the
connect/setup/discoveryfeature APIs are available at v67.0. The version is pinned in the URL path; do not hand-edit it below the minimum. - `node` ≥ 18 on PATH (runs the classifier script).
- Agentforce license on the org (
accessCheck) — a missing license surfaces as403or asenableBlockedReasonson the read.
Operations at a glance
| Operation | Command | Returns |
|---|---|---|
| Read feature toggles | sf api request rest ".../connect/setup/discovery/features/status" --method POST --body '{"featureApiNames":[...]}' --target-org <alias> | {items:[{apiName,status,enableBlockedReasons[],dependencyStatuses[]}]} |
| Enable one toggle | sf api request rest ".../connect/setup/discovery/feature/{apiName}/enable" --method POST --body '{}' --target-org <alias> | {success:boolean} — endpoint takes no meaningful body, but --body '{}' must be passed explicitly (see gotchas) |
Both are Connect API routes reachable via sf api request rest — no Headless360 dispatcher required. Full command shapes, the response envelope, and the error taxonomy live in references/cli-invocation.md.
Never extract the access token. Usesf api request restdirectly — it uses the CLI's stored session for the target org. Do not pull theaccessTokenout ofsf org displayand hand-build an HTTP request with it.
CRITICAL: DO NOT use IPCManagement `updateOrgPref` to flip agent prefs. That controller's write allow-list rejects the agent prefNames (Invalid prefName, 500). The Setup DiscoveryPOST /feature/{apiName}/enableendpoint is the only correct write path for these toggles.
Architecture — How enablement works
| Step | What happens | Tool used |
|---|---|---|
| Pick path | Determine fulfiller vs employee (ask if unclear) | AskUserQuestion |
| Read current state | POST the feature-status batch for the path's toggles, capture to a file | Bash (sf api request rest) |
| Plan | Run scripts/classify-enable-plan.mjs <file> <agentType> [exitStatus] → dependency-ordered pending list | Bash (node) |
| Confirm-to-write | Present the exact pending list and require explicit "yes" | AskUserQuestion |
| Enable | Re-read + reclassify before each apiName in order, POST .../feature/{apiName}/enable when unblocked, record the result | Bash (sf api request rest + node scripts/record-enable-result.mjs) |
| Verify | Re-read /features/status, re-run the classifier | Bash (sf + node) |
| Report | Run scripts/classify-final-report.mjs over the before/results/after files → final verdict | Bash (node) |
Workflow
Substitute <alias> with the target org alias. <agentType> is fulfiller or employee.
Phase 1 — Read Current State
- POST the feature-status batch for every toggle the chosen path needs, capturing stdout to a file. Do not add
--json. Write the request body once to a temp file and reuse it verbatim in Phases 1, 4, and 5 via--body "$(cat ...)"— never retype it, substitute a placeholder like[...], or rely on a shell variable, since each Bash invocation may run in a fresh shell where a plain variable would be unset:
cat > /tmp/feature-status-body.json <<'EOF'
{"featureApiNames":["sales-cloud-einstein-generative-ai","sales-cloud-agent-studio","service-cloud-agentforce-for-itsm","service-cloud-it-fulfiller-agent","service-cloud-requestor-agent","service-cloud-it-service-employee-agent"]}
EOF
sf api request rest "/services/data/v67.0/connect/setup/discovery/features/status" \
--method POST \
--body "$(cat /tmp/feature-status-body.json)" \
--target-org <alias> > /tmp/enable-status-before.json 2>/tmp/enable-status-before.err
echo $? > /tmp/enable-status-before.exitCapture the exit status — do not swallow it with || true.
Phase 2 — Plan (helper script)
More from forcedotcom
Use this skill in a project
Open any RiverX project, search the Skills panel for forcedotcom/sf-skills/service-itsm-agentic-setup-agentforce-studio-configure, and install it in one click.
