service-itsm-teams-itservice-configure

Configure the "Set Up Salesforce IT Service" checklist for Microsoft Teams Employee Service (ITSM) — the employee side, covering app enablement, marketplace install guidance, user access assignment, and Digital Experience Site selection. Use this for: 'turn on Salesforce IT Service', 'set up IT Serv

By forcedotcom · 1,123 installs

npx skills add forcedotcom/sf-skills --skill service-itsm-teams-itservice-configure

Source repository · Upstream listing

Set Up Salesforce IT Service (Microsoft Teams) Complete the "Set Up Salesforce IT Service" checklist group on the Teams ITSM Go page ( service cloud itsm teams integration 's feature page) — the employee side of Teams ITSM integration, for employees to create and manage their own tickets from Teams. Every operation dispatches through headless 360 . Scope In scope : Turning on the OrgHasEmployeeServiceTeams preference; giving the user the exact Teams marketplace link + help doc for the IT Service app install; assigning the TeamsForEmployeeUser permission set to confirmed users; selecting the Digital Experience Site to link with Teams via the SLACK PREFERRED SITE org value. Out of scope : The base Teams Salesforce Go page toggle ( ITSMTeamsEnabled ), Azure/Entra app registration, Named Credential population, and Teams extension/preferred site registration — use service itsm teams configure (a prerequisite for this skill). The IT Desk/fulfiller half of the checklist — use service itsm teams itdesk 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 Service 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: Expect 200 {"isPreferenceEnabled": true} . Tell the user it's enabled — do not ask them to flip the toggle themselves. Step 2 — Install Salesforce IT Service 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): Help doc: https://help.salesforce.com/s/articleView?id=service.it srvcs msteams config emplye srvcs app.htm&type=5 Print both together. Also tell the user the Microsoft email the employee signs in with must match that Salesforce user's Username (SSO maps MS UPN → Username ; a mismatch fails login silently). Then HALT until the user replies "installed" — a human only action; do not proceed or fabricate the confirmation. Step 3 — Manage User Access "Manage User Access" ("Manage" button on the Go page) assigns the permission set — verified live from the "Manage Microsoft Teams for Employee Service User Access" dialog: TeamsForEmployeeUser (label "Teams for Employee" , backed by PSL TeamsForEmployeePsl ) 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: Who to assign — warn the user up front: the target must be a real employee / UEL user whose email exists on the Azure/Entra side (a Microsoft account in the same tenant). Login is SSO (MS UPN → the Salesforce Username ), so assigning it to a user with no matching Azure account — or a misaligned email/UPN — fails login silently (see the UPN↔ Username note above). State this before assigning; never assign system/integration accounts. Verified gotcha (spotting who NOT to pick): in scratch/test orgs the first page(s) are often dominated by non employee accounts — e.g. Automated Process , Bot User , Insights Integration , .ext integration users, ESW / Site Guest User guests, DigitalAgent. agents — none are employee/UEL users or have an Azure identity. Flag such rows as likely not employee (don't silently filter — call them out); if the user says "not employee users, skip," move to the next page. Once the user confirms specific user(s), look up the permission set's Id (it is stable per org but don't hardcode it — query fresh): Then assign the permission set to each confirmed user via PermissionSetAssignment (one record per user — batch with as many calls as needed, there is no bulk assign endpoint exposed here): 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 prerequisites (required for the user to actually sign in to IT Service in Teams) Assigning the permission set above is necessary but not sufficient — a UEL user who opens the IT Service app in Teams can still hit a silent login failure unless all three of the following are also in place. Verify (and set) these as part of enabling a user: 1. "Allow OAuth for employees" on the employee login profile (e.g. Unified Employee ) — Setup → Profiles → (profile) → Session Settings → check Allow OAuth for employees . Set this in the Setup UI. It is not a Profile SObject field (no OAuth field appears in Profile describe) and it is not the Metadata element Profile.sessionSettings.allowOauthForEmployees — a Profile metadata deploy containing <sessionSettings <allowOauthForEmployees fails validation : Element {…}sessionSettings invalid at this location in type Profile (verified Aug 2026). Nor is it readable/writable via the headless 360 Connect/REST/Tooling dispatch. Use the Setup UI checkbox. Confirmed blocker: with it off, the OAuth handshake for the embedded app fails and login silently does not complete — the community login succeeds (LoginHistory "Employee Login to Community" = Success) but no OauthToken is ever minted for the user, and the Teams app re pops its "Single Sign On / Login with URL" chooser (often with a /…/setup/secur/RemoteAccessAuthorizationPage "Service Not Available" popup). 2. CORS Allowed Origins must include both Teams origins. Check with dispatch readonly GET /services/data/v67.0/query on SELECT Id, UrlPattern FROM CorsWhitelistEntry , and create any that are missing with dispatch POST /services/data/v67.0/sobjects/CorsWhitelistEntry body {"UrlPattern": "<origin "} (this is a data API sobject , not a Tooling type — a Tooling POST /query returns NOT FOUND / INVALID TYPE ): https://teams.cloud.microsoft https://cdn.scs.static.lightning.force.com — the Lightning static resource CDN the embedded IT Service surface loads from. Confirmed blocker: with this origin missing (even when teams.cloud.microsoft is present), the browser blocks the asset/OAuth preflight and login silently fails. After adding it, have the user hard refresh / clear the Teams app cache. 3. "API Enabled" system permission on the user ( PermissionsApiEnabled = true ) via a permission set — not just the base profile — or the embedded app's API calls are rejected and the user can't sign in. Use the same org wide, created once permset IT Desk uses (commonly Teams Employee ApiAccess ): query PermissionSet WHERE Name = 'Teams Employee ApiAccess' , and if absent create it once ( POST /sobjects/PermissionSet {"Name":"Teams Employee ApiAccess","Label":"Teams Employee API Access","PermissionsApiEnabled":true} ); then assign. Don't create a duplicate. See service itsm teams itdesk configure 's Login prerequisite . If a user reports "can't log in to IT Service in Teams" and Steps 1–4 all look done, walk these three prerequisites first — they are the most common silent login blockers. For the full pass/fail diagnostic sequence (including the OAuth token mint check that isolates a portal user OAuth failure), see [Troubleshooting: Teams for Employee Service login & agent]( troubleshooting teams for employee service login agent) below. Step 4 — Select a Digital Experience Site This checklist item ("Digital Experience Site Name" dropdown, currently "None" until set) reads/writes the org value SLACK PREFERRED SITE — the same OrgValueUtil.OrgValues Java enum mechanism as Swarming's SWARM COLLABORATION TOOL — and is not gated by any Teams license or Azure/Entra credential , so it works independently of the rest of the Teams setup. 1. List all Digital Experience sites in the org: If the org has no Digital Experience site yet (empty list), one must be created before this step can be completed — hand off to experience portal create to provision a new site (an employee service / IT support portal fits this use case), then return here with its Id . 2. Present the full list to the user and ask them to pick one. If they don't choose, pick one yourself (the only site if there's exactly one, otherwise a sensible default such as the most recently modified Live site) and explicitly tell the user which one you picked — don't proceed silently. 3. Check the current value first (skip the write if already set to the chosen site's Id): stringValue holds the current selection — the chosen site's Id , or "None" . 4. Write the selection using the site's Id (from step 1's connect/communities response — the Network record Id, not urlPathPrefix ): Verified live: PATCH with a site's Network Id (e.g. 0DBSB000002EYwj4AG ) returned 200 {"stringValue": "<that Id ", ...} , and a follow up GET confirmed the same value persisted. 5. Re run step 3's GET to confirm. Step 5 — Make the embedded Agentforce agent reply in Teams Completing Steps 1–4 provisions the IT Service surface, but it does not make the embedded Agentforce agent actually reply inside the Teams custom client ("Salesforce Employee Assist" / "Ask AI Agent"). That is the final, hardest part of IT Service agent setup and is covered by a dedicated skill: → service itsm teams employee agent configure Invoke it (or hand off to it) after Step 4 when the user wants the in Teams agent to respond. It covers the verified architecture — a Web channel with User Verification ON + a JWKS URL Key Set , the Teams AgentForce deployment, an Omni Flow routing flow to a real, Active agent, and an Agent Access permission set on the portal user — plus the diagnostic for the common "agent joins then leaves" symptom (auth ON but no Key Set, or missing Agent Access). The per user Agent Access assignment there is the natural follow on to the Manage User Access step (Step 3) above. Verified gotcha — UI shows stale "None" after the API write. The Go page's dropdown is a wired LDS cache over this org value; a raw Connect PATCH doesn't invalidate it. The write is real and durable (a follow up GET confirms it) — if the Setup page is open, tell the user to hard refresh the tab to see the new selection. Naming is misleading — this is a shared, cross feature setting, not Teams exclusive. Despite the SLACK prefix (a holdover from this org value's original Slack ITSM use case), it backs the "Select a Digital Experience Site" picker on both the Teams ITSM Go page and the equivalent Slack ITSM Go page — writing it from one surface changes what the other surface shows. If the user has also configured Slack ITSM, flag that setting this will also change Slack's preferred site. Gotchas Issue Detail Requires the Teams Salesforce Go page feature first OrgHasEmployeeServiceTeams does not gate or depend on ITSMTeamsEnabled directly, but the Go page checklist only appears once service cloud itsm teams in