
service-itsm-teams-itdesk-configure
Configure the "Set Up Salesforce IT Desk" checklist for Microsoft Teams Employee Service (ITSM) — the fulfiller/agent side, covering app enablement, marketplace install guidance, user access assignment, and Swarming collaboration-tool setup. Use this for: 'turn on Salesforce IT Desk', 'set up IT Desk on Teams', 'assign Teams for IT Desk permission set', 'set Teams as collaboration tool for swarming', 'install Salesforce IT Desk app on Teams', or any request to complete the IT Desk half of the Teams ITSM Go page checklist. DO NOT TRIGGER for the base Teams Salesforce Go page toggle or Azure/Entra app setup (service-itsm-teams-configure) or for the IT Service/employee half of the checklist (service-itsm-teams-itservice-configure).
- Installs
- 1.2K
- Last 24h
- —
- Trending rank
- —
- Security
- Not audited
Install
Works with every agent the skills CLI supports.
npx skills add https://github.com/forcedotcom/sf-skills --skill service-itsm-teams-itdesk-configure- 01
Install
Run the command in your project. The CLI asks which agents to install for.
- 02
Describe the task
Ask your agent for something this skill covers. It loads service-itsm-teams-itdesk-configure automatically when relevant.
- 03
Review the result
The agent follows the SKILL.md steps, scripts and references bundled with the skill.
SKILL.md
The instructions your agent reads when the skill is triggered.
Set Up Salesforce IT Desk (Microsoft Teams)
Complete the "Set Up Salesforce IT Desk" checklist group on the Teams ITSM Go page
(service-cloud-itsm-teams-integration's feature page) — the fulfiller/agent side of Teams
ITSM integration, for IT agents to swarm on and resolve tickets from Teams. Every operation
dispatches through headless-360.
Scope
- In scope: Turning on the
OrgHasITSMFulfillerTeamspreference; giving the user the exact Teams marketplace link + help doc for the IT Desk app install; assigningTeamsForITSrvcsUser/MicrosoftGraphAccesspermission sets to confirmed users plus provisioning the org-wide API-Enabled login permission set (created once, required to sign in); delegating "Set Teams as Collaboration Tool for Swarming" toservice-itsm-swarming-configure. - Out of scope: The base Teams Salesforce Go page toggle (
ITSMTeamsEnabled), Azure/Entra app registration, Named Credential population, and Teams extension/preferred-site registration — useservice-itsm-teams-configure(a prerequisite for this skill). The IT Service/employee half of the checklist — useservice-itsm-teams-itservice-configure. Enabling theservice-cloud-swarmingGo feature itself — delegate toservice-itsm-swarming-configure.
Prerequisite: run service-itsm-teams-configure first (or alongside) — this skill assumes
the service-cloud-itsm-teams-integration Go feature is already enabled.
Execute one step at a time. These steps make real, state-changing API calls. Run a single operation, show its result, confirm it succeeded, then proceed — do not batch multiple setup calls into one parallel block.
Workflow
Step 1 — Turn on Salesforce IT Desk
This is a straight org-preference toggle (unlike ITSMTeamsEnabled, this one supports direct
PATCH) — enable it yourself via API, do not ask the user to click the Setup toggle:
mcp__headless-360__dispatch(
method: "PATCH",
url: "/services/data/v67.0/setup/org/preferences/OrgHasITSMFulfillerTeams",
body: { "desiredState": true }
)
Expect 200 {"isPreferenceEnabled": true}. Tell the user it's enabled — do not ask them to flip
the toggle themselves.
Step 2 — Install Salesforce IT Desk App on Teams (user's responsibility)
There is no Salesforce or Microsoft API this skill can call to install a Teams app into a tenant's app catalog — this always requires a human clicking "Add" in the Microsoft Teams admin center / AppSource, signed in with sufficient tenant permissions. Give the user the exact marketplace link and help doc; do not attempt to automate this step.
- Marketplace (verified live from the Go page's "Go to Microsoft Marketplace" button):
https://marketplace.microsoft.com/en-us/product/teams-app/WA200009869?tab=Overview - Help doc:
https://help.salesforce.com/s/articleView?id=service.it_srvce_msteams_cnfig_fulfilerhub_app.htm&type=5
Print both together so the user has a self-service reference alongside the install link. Also tell
the user that the Azure/Microsoft account email the fulfiller signs into Teams with must match
that Salesforce user's email / Username — SSO resolves the Microsoft UPN to the Salesforce
Username, so a mismatch causes a silent login failure.
Then HALT and wait for the user to confirm the app is installed (they reply "installed"). This is a human-only action; do not proceed to Step 3's user-access assignment as if it were done, and do not fabricate the confirmation — wait for the real reply.
Step 3 — Manage User Access
"Manage User Access" ("Manage" button on the Go page) assigns two permission sets — verified live from the "Manage Microsoft Teams for Employee Service User Access" dialog:
TeamsForITSrvcsUser(label "Microsoft Teams for IT Services", backed by PSLTeamsForITSrvcsPsl)MicrosoftGraphAccess(label "MicrosoftGraphAccess") — assigned alongside it in the same dialog.
A third, "login" permission set is also required — one you provision once per org. The two
dialog permsets provision the IT Desk surface but do not let the fulfiller sign in: both read
PermissionsApiEnabled = false, so the embedded app's Connect calls 403 and login fails with
"server not reachable." The fulfiller needs a permission set carrying the API Enabled system
permission. Some orgs already have one named Teams_Employee_ApiAccess (a custom permset — do
not assume a fresh customer org has it); otherwise create it. It is a shared, org-wide
artifact — the same permset also covers IT Service login, so create it only once and just
assign it wherever needed. The resolve-or-create-then-assign recipe is in
Login prerequisite below. Do
this as part of this step; don't wait for login to break.
Do not just assign every active user. Ask the user which specific user(s) should get access. If they want to see the list of users first (rather than naming them), page it — show at most 10 users per page, then ask "want to see more?" before showing the next page, since orgs can have hundreds or thousands of users:
mcp__headless-360__dispatch_readonly(
method: "GET",
url: "/services/data/v67.0/query",
queryParams: { "q": "SELECT Id, Name, Username, Email FROM User WHERE IsActive = true ORDER BY Name LIMIT 10 OFFSET <page * 10>" }
)
Verified gotcha: in scratch/test orgs (and possibly some real orgs), the first page(s) of
this query are often dominated by non-employee system/integration accounts — e.g. Automated Process, Bot User, Insights Integration, *.ext integration users, ESW_* / *Site Guest User guest users, and DigitalAgent.* agent users. When presenting a page to the user, flag
these as likely-not-employee accounts (don't silently filter them out of the list — the user may
still want one assigned — but call out which rows look like system accounts so the user doesn't
have to guess). If the user says a listed batch is "not employee users, skip," move on to the
next page rather than assigning any of them.
Once the user confirms specific user(s), look up the two dialog permission sets' Ids (they are
stable per org but don't hardcode them — query fresh; the third "login" permset is resolved in the
Login prerequisite below):
mcp__headless-360__dispatch_readonly(
method: "GET",
url: "/services/data/v67.0/query",
queryParams: { "q": "SELECT Id, Name FROM PermissionSet WHERE Name IN ('TeamsForITSrvcsUser','MicrosoftGraphAccess')" }
)
Then assign both permission sets to each confirmed user via PermissionSetAssignment (one record
per user/permset pair — batch with as many calls as needed, there is no bulk-assign endpoint
exposed here):
mcp__headless-360__dispatch(
method: "POST",
url: "/services/data/v67.0/sobjects/PermissionSetAssignment",
body: { "AssigneeId": "<user id>", "PermissionSetId": "<permission set id>" }
)
Verify by re-querying PermissionSetAssignment for that AssigneeId, or simply trust the 201
from the assignment call plus a SELECT ... FROM PermissionSetAssignment WHERE AssigneeId = '<user id>' AND PermissionSetId = '<permset id>' readback.
Login prerequisite — provision the login permission set (verified)
With only TeamsForITSrvcsUser + MicrosoftGraphAccess the IT Desk surface is provisioned, but a
fulfiller who opens the IT Desk app in Teams hits "server not reachable" on the login page. The
verified blocker is API Enabled: both dialog permsets read PermissionsApiEnabled = false
(verified live), so the embedded app's Connect calls 403. Assigning the fulfiller a permission set
with PermissionsApiEnabled = true resolves the login. That permset is org-wide, created once
and shared with IT Service — resolve-or-create, then assign:
- Reuse if it already exists (an API-Enabled permset — commonly
Teams_Employee_ApiAccess):SELECT Id, Name, PermissionsApiEnabled FROM PermissionSet WHERE Name = 'Teams_Employee_ApiAccess'. If found withPermissionsApiEnabled = true, take itsIdand skip to step 3. - Otherwise create it once (
PermissionsApiEnabledis createable — verified):Capture the returnedmcp__headless-360__dispatch( method: "POST", url: "/services/data/v67.0/sobjects/PermissionSet", body: { "Name": "Teams_Employee_ApiAccess", "Label": "Teams Employee API Access", "PermissionsApiEnabled": true } )Id. Because it's shared org-wide, don't recreate it if a later run (or the IT Service skill) already made it — step 1's query is the guard. - Assign it to each confirmed fulfiller, alongside the two dialog permsets:
mcp__headless-360__dispatch( method: "POST", url: "/services/data/v67.0/sobjects/PermissionSetAssignment", body: { "AssigneeId": "<user id>", "PermissionSetId": "<login permset Id>" } )
After assigning, have the user fully close and reopen the Teams app (the OAuth authorize is
cached client-side). Also confirm CORS Allowed Origins contains both https://teams.cloud.microsoft
and https://cdn.scs.static.lightning.force.com (SELECT UrlPattern FROM CorsWhitelistEntry).
The ServiceCloudMSTeamsEca External Client App that backs Teams login is auto-installed by the
Go-page toggle and needs no configuration — Teams_Employee_ApiAccess grants API Enabled and is
unrelated to the ECA. Do not add SetupEntityAccess rows or change the ECA's OAuth policy.
If login still fails in a fresh session after the API-Enabled permset is assigned, the remaining
suspect is the "Allow OAuth for employees" profile checkbox (Setup-UI-only — no API write path).
See service-itsm-teams-itservice-configure's Login prerequisites for the full pass/fail
diagnostic chain.
Step 4 — Set Teams as Collaboration Tool for Swarming (delegate)
This 4th checklist item requires the service-cloud-swarming Go feature to be enabled first.
Do not enable that feature inline here — invoke the dedicated
service-itsm-swarming-configure skill instead of duplicating feature-enablement logic:
Invoke the service-itsm-swarming-configure skill.
That skill enables service-cloud-swarming and writes SWARM_COLLABORATION_TOOL to "Teams"
via PATCH /services/data/v67.0/setup/org/values/SWARM_COLLABORATION_TOOL — this checklist item
is now fully automated end-to-end, no manual "Go to Feature Page" click required.
Gotchas
| Issue | Detail |
|---|---|
| Requires the Teams Salesforce Go page feature first | OrgHasITSMFulfillerTeams does not gate or depend on ITSMTeamsEnabled directly, but the Go page checklist only appears once service-cloud-itsm-teams-integration is enabled — run service-itsm-teams-configure first. |
OrgHasITSMFulfillerTeams does not unblock ITSMTeamsEnabled | These are separate bits — enabling this preference does not itself unblock the Teams Salesforce Go page toggle preference, and vice versa. |
"Set Teams as Collaboration Tool for Swarming" needs service-cloud-swarming enabled first | Delegate to service-itsm-swarming-configure rather than enabling that feature inline. That skill both enables the feature and writes SWARM_COLLABORATION_TOOL to "Teams" — the whole checklist item is API-reachable, not just the base feature enable. |
| Permission sets / PSLs | TeamsForITSrvcsUser, MicrosoftGraphAccess (permission sets) and PSL TeamsForITSrvcsPsl auto-provisioned and were confirmed Active (10 licenses) immediately after the feature-enable in this session — no manual PSL/permset creation needed once TeamsITSrvcsAddOn+IncidentManagementAddOn are licensed. |
| Manage-User-Access permsets don't cover login — assign an API-Enabled permset | Verified: after assigning TeamsForITSrvcsUser + MicrosoftGraphAccess, the IT Desk agent still failed Teams login with "server not reachable" — both dialog permsets have PermissionsApiEnabled = false, so the embedded app's Connect calls 403. The fix is an API-Enabled permission set (PermissionsApiEnabled = true), commonly Teams_Employee_ApiAccess — a custom, org-wide permset shared with IT Service, so create it once then assign. A test org may already have it; a fresh customer org won't, so resolve-or-create. (The ServiceCloudMSTeamsEca ECA is auto-installed by the Go-page toggle and needs no configuration — it does not gate login and Teams_Employee_ApiAccess is unrelated to it.) See Step 3 → Login prerequisite. |
| Version prefix required | headless-360 dispatch/dispatch_readonly do not resolve API versions — always pass the full /services/data/vXX.0/... prefix. |
Related Skills
| Skill | When to use instead / alongside |
|---|---|
service-itsm-teams-configure | Enabling the base Teams Salesforce Go page toggle, Azure/Entra app registration, Named Credential population, and Teams extension registration — a prerequisite for this skill |
service-itsm-teams-itservice-configure | The IT Service/employee half of the checklist (Turn on IT Service, Install IT Service app, Manage User Access, Select a Digital Experience Site) |
service-itsm-swarming-configure | Enabling the service-cloud-swarming Go feature for "Set Teams as Collaboration Tool for Swarming" — this skill delegates to it rather than duplicating that logic |
service-itsm-channels-coordinate | Top-level menu across Teams, Slack, Swarming, Notifications, Portal |
FAQ
What does the service-itsm-teams-itdesk-configure skill do?
Configure the "Set Up Salesforce IT Desk" checklist for Microsoft Teams Employee Service (ITSM) — the fulfiller/agent side, covering app enablement, marketplace install guidance, user access assignment, and Swarming collaboration-tool setup. Use this for: 'turn on Salesforce IT Desk', 'set up IT Desk on Teams', 'assign Teams for IT Desk permission set', 'set Teams as collaboration tool for swarming', 'install Salesforce IT Desk app on Teams', or any request to complete the IT Desk half of the Teams ITSM Go page checklist. DO NOT TRIGGER for the base Teams Salesforce Go page toggle or Azure/Entra app setup (service-itsm-teams-configure) or for the IT Service/employee half of the checklist (service-itsm-teams-itservice-configure).
How do I install service-itsm-teams-itdesk-configure?
Run npx skills add https://github.com/forcedotcom/sf-skills --skill service-itsm-teams-itdesk-configure in your project. The skills CLI detects the agents you use and copies the skill into the right folder. For Claude Code you can also place the skill folder at ~/.claude/skills/service-itsm-teams-itdesk-configure/ (personal) or .claude/skills/service-itsm-teams-itdesk-configure/ (project).
Which AI agents can use service-itsm-teams-itdesk-configure?
Any agent that supports the open Agent Skills format (a folder with a SKILL.md file), including Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, Windsurf, Cline, OpenCode and more.
Is service-itsm-teams-itdesk-configure safe to install?
No partner security audit is available yet. Skills can run commands and scripts, so read the SKILL.md and any bundled files before installing.
Who maintains service-itsm-teams-itdesk-configure?
It is published by forcedotcom in forcedotcom/sf-skills. It has 1,171 recorded installs.
More from forcedotcom/sf-skills
platform-apex-generate
forcedotcom/sf-skills
Primary Apex authoring skill for class generation, refactoring, and review. ALWAYS ACTIVATE when the user mentions Apex, .cls, triggers, or asks to create/refactor a class (service, selector, domain, batch, queueable, schedulable, invocable, DTO, utility, interface, abstract, exception, REST resource). Use this skill for requests involving SObject CRUD, mapping collections, fetching related records, scheduled jobs, batch jobs, trigger design, @AuraEnabled controllers, @RestResource endpoints, custom REST APIs, or code review of existing Apex.
platform-apex-test-generate
forcedotcom/sf-skills
Use to generate and validate Apex test classes with TestDataFactory patterns, bulk testing (251+ records), mocking, assertions, and disciplined test-fix loops. Use when creating Apex test classes (for triggers, services, controllers, batch jobs, queueables, and callouts), improving coverage, debugging or fixing failing Apex tests, or running test/coverage analysis. Triggers on Test.cls files, sf apex run test, coverage reports. Do NOT trigger for production Apex (use platform-apex-generate) or Jest/LWC tests.
platform-apex-test-run
forcedotcom/sf-skills
Apex test execution, coverage analysis, and test-fix loops with 120-point scoring. Use when the user runs Apex tests, checks code coverage, fixes failing tests, or touches Test.cls / Test.cls files. DO NOT TRIGGER when writing Apex production code (use platform-apex-generate), Agentforce agent testing (use agentforce-test), or Jest/LWC tests (use experience-lwc-generate).
platform-apex-logs-debug
forcedotcom/sf-skills
Salesforce debug log analysis and troubleshooting with 100-point scoring. TRIGGER when: user analyzes debug logs, hits governor limits, reads stack traces, or touches .log files from Salesforce orgs. DO NOT TRIGGER when: running Apex tests (use platform-apex-test-run), generating or fixing Apex code (use platform-apex-generate), or Agentforce session tracing (use agentforce-observe).
platform-soql-query
forcedotcom/sf-skills
Use when the user needs SOQL/SOSL authoring or optimization: natural-language-to-query generation, relationship queries, aggregates, query-plan/selectivity analysis, and performance or safety improvements. TRIGGER when the user writes, optimizes, or debugs SOQL/SOSL, touches .soql files, or asks about relationship queries, aggregates, or query performance. DO NOT TRIGGER for bulk data operations (use platform-data-manage), Apex DML logic (use platform-apex-generate), or report/dashboard queries.
platform-metadata-deploy
forcedotcom/sf-skills
Salesforce DevOps automation using sf CLI v2. TRIGGER when: user deploys metadata, validates a deploy or does a dry-run, deploys to a Production org, quick-deploys a validated job ID, ships/promotes to prod, creates/manages scratch orgs or sandboxes, sets up CI/CD pipelines, or troubleshoots deployment errors with sf project deploy. DO NOT TRIGGER when: writing Apex code, building LWC components (use experience-lwc-generate), creating metadata definitions (use platform-custom-object-generate), deleting metadata from an org (use platform-destructive-deploy), or querying org data (use platform-data-manage).
Popular devops & cloud skills
microsoft-foundry
microsoft/azure-skills
Build, deploy, evaluate, optimize, fine-tune, and manage Microsoft Foundry agents, models, and resources end to end. USE FOR: foundry, azd ai agent, azd provision/deploy, hosted agent scaffold/develop/run/deploy/troubleshoot, prompt agent create, managed harness agent create, GitHub Copilot harness agent, create agent, update agent, add tool to agent, invoke agent, agent insights, evaluate agent, batch eval, continuous eval, continuous monitoring, agent CI/CD, optimize prompt, improve prompt, optimize agent instructions, Agent Optimizer scaffold, dataset curation from traces, deploy model, model fine-tuning (SFT/DPO/RFT), Foundry project, RBAC, role assignment, permissions, quota, capacity, region, deployment failure, AI Services, create Foundry resource, knowledge index, customize deployment, onboard, availability, training-data, grader, distillation, large file upload. DO NOT USE FOR: Azure Functions, App Service, general Azure deploy (use azure-deploy), general Azure prep (use azure
azure-diagnostics
microsoft/azure-skills
Debug Azure production issues on Azure using AppLens, Azure Monitor, resource health, and safe triage. WHEN: debug production issues, troubleshoot app service, app service high CPU, app service deployment failure, troubleshoot container apps, container app 503 or target port mismatch, troubleshoot functions, function telemetry missing or stopped after a config/connection-string change, troubleshoot AKS, VM RDP, Linux SSH, VM black screen, can't connect to VM, reset VM password, NSG or firewall blocking, kubectl cannot connect, kube-system/CoreDNS failures, pod pending, crashloop, node not ready, upgrade failures, analyze logs, KQL, insights, image pull failures, cold start issues, health probe failures, resource health, root cause of errors, troubleshoot event hubs, troubleshoot service bus, messaging SDK error, AMQP connection failure, message lock lost, lock renewal during long-running processing, service bus dead letter.
azure-prepare
microsoft/azure-skills
Prepare azd-based Azure projects for deployment: generates azure.yaml, infrastructure (Bicep/Terraform), and Dockerfiles for the Azure Developer CLI (azd) workflow. USE ONLY when the user explicitly wants to use azd as the deployment tool, or the project already has an azure.yaml file. DO NOT USE FOR: non-azd deployments, Python App Service code-only deploys (use python-appservice-deploy), or cross-cloud migration (use azure-cloud-migrate). WHEN: prepare app for azd, create azure.yaml, set up azd infrastructure, modernize app for Azure with azd, deploy with azd, function app, timer trigger, service bus trigger, event-driven function, managed identity, generate Bicep, generate Terraform, create and deploy to Azure.
azure-ai
microsoft/azure-skills
Use for Azure AI: Search, Speech, OpenAI, Document Intelligence. Helps with search, vector/hybrid search, speech-to-text, text-to-speech, transcription, OCR. WHEN: AI Search, query search, vector search, hybrid search, semantic search, speech-to-text, text-to-speech, transcribe, OCR, convert text to speech.
azure-deploy
microsoft/azure-skills
Execute Azure deployments for ALREADY-PREPARED applications that have existing .azure/deployment-plan.md and infrastructure files. DO NOT use this skill when the user asks to CREATE a new application — use azure-prepare instead. This skill runs azd up, azd deploy, terraform apply, and az deployment commands with built-in error recovery. Requires .azure/deployment-plan.md from azure-prepare and validated status from azure-validate. WHEN: "run azd up", "run azd deploy", "execute deployment", "push to production", "push to cloud", "go live", "ship it", "bicep deploy", "terraform apply", "publish to Azure", "launch on Azure". DO NOT USE WHEN: "create and deploy", "build and deploy", "create a new app", "set up infrastructure", "create and deploy to Azure using Terraform" — use azure-prepare for these.
azure-validate
microsoft/azure-skills
Pre-deployment validation for Azure readiness. Run deep checks on configuration, infrastructure (Bicep or Terraform), RBAC role assignments, managed identity permissions, and prerequisites before deploying. WHEN: validate my app, check deployment readiness, run preflight checks, verify configuration, check if ready to deploy, validate azure.yaml, validate Bicep, test before deploying, troubleshoot deployment errors, validate Azure Functions, validate function app, validate serverless deployment, verify RBAC roles, check role assignments, review managed identity permissions, what-if analysis, validate Container Apps deployment.