mcpField
S
service-itsm-agentic-setup-uel-user-create

service-itsm-agentic-setup-uel-user-create

github.com/forcedotcom云与 DevOps1.1k1.2k 次安装1 天前更新
代码仓库

关于 service-itsm-agentic-setup-uel-user-create

面向 Salesforce 管理员的技能,用于配置 Unified Employee License 用户。它通过 headless-360 创建并验证 User、Person Account、Employee2 记录及必需的 Employee Hub 权限集。

主要功能

  1. 01检查 UEL 与 HR 前置条件
  2. 02创建关联的用户、账户和员工记录
  3. 03分配必需的 Employee Hub 权限集
  4. 04验证完整记录关联链

适用场景

  1. 01配置新的 UEL 员工
  2. 02核实关联的 Salesforce 与 HR 记录

MCP 相关

通过 Salesforce 托管的 headless-360 MCP 服务进行发现、架构检查、只读查询和记录创建。

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/forcedotcom/sf-skills --skill service-itsm-agentic-setup-uel-user-create

安装后在 Claude Code 中输入/service-itsm-agentic-setup-uel-user-create确认已加载。

附带文件references/mcp-invocation.md

详细介绍

创建并启用 Unified Employee(UEL)用户

通过在 Unified Employee 许可证/配置文件上创建并关联一个 User、一个 Person Account(自动生成 Contact)和一条 Employee2 记录,并分配所需的权限集,为 Unified Employee License(UEL)配置员工。所有操作都通过 Salesforce 托管的 headless-360 MCP 服务(服务键 headless-360)及其四个元工具(discover、describe、dispatch_readonly、dispatch)执行。组织由绑定到当前 MCP 会话的 OAuth JWT 确定——此技能不会处理组织 ID、别名或凭据——因此该流程在生产环境和沙盒中的行为完全一致,且无需为每位用户单独安装 MCP。

范围

  • 范围内:创建新的 UEL 用户、Person Account、Employee2 记录;分配权限集;验证完整关联链。
  • 范围外:创建标准用户(非 UEL);克隆现有用户;仅管理现有用户权限;停用用户;更改许可证分配。

路由一览

读取操作通过 mcp__headless-360__dispatch_readonly 分发;写入操作通过 mcp__headless-360__dispatch 分发。两者都接受原始 HTTP: {"url": "<path>", "method": "GET|POST", "body"?: {...}, "queryParams"?: {...}}。每行对应的完整 URL 路径和请求/响应正文见 references/mcp-invocation.md;此表仅列出操作和 HTTP 方法。

关注项方法 + 操作说明
Unified Employee 许可证GET /query(UserLicense)无记录 → 停止
Unified Employee 配置文件GET /query(Profile)无记录 → 停止
Person Account 记录类型GET /query(RecordType、IsPersonType)无记录 → 停止
Employee Hub 权限集GET /query(PermissionSet)必需;无记录 → 停止
Employee2 可访问性GET /sobjects/Employee2/describe200 = HR 模块已启用
解析经理GET /query(按 Username/Name 查询 User)仅限活跃用户
创建用户POST /sobjects/UserProfile = Unified Employee
分配 Employee Hub 权限集POST /sobjects/PermissionSetAssignment必需
创建 Person AccountPOST /sobjects/Account必须提供 PersonEmail
读取 PersonContactGET /query(Account)获取 PersonContactId
创建 Employee2POST /sobjects/Employee2使用 UserId/ContactId 字段名
验证关联链GET /queryUser + Account + Employee2 + 权限集

响应封装:describe、/query 和 /sobjects/… 均使用标准 REST 格式——dispatch* 工具会返回 HTTP 状态码和已解析的正文:{ "status_code": 200, "body": <REST response> }。读取 body。创建操作返回 body.id 且 body.success == true;查询操作返回 body.records[]。状态码:200/201 表示成功;400 表示正文有误(通过 describe 重新检查架构);401/认证错误表示 MCP 会话需要重新认证;404 表示此组织中不存在该端点/实现;500 表示下游依赖项出现问题。


必填输入

从用户处收集以下信息(仅询问对话上下文中尚未提供的信息):

身份信息(必填)
字段说明
FirstName员工名
LastName员工姓氏
Email员工电子邮件地址
凭据与区域设置(必填)
字段说明示例
Username采用电子邮件格式,且全局唯一[email protected]
Alias最多 8 个字符jdoe
TimeZoneSidKey时区America/Los_Angeles
LocaleSidKey区域设置en_US
LanguageLocaleKey语言en_US
EmailEncodingKey电子邮件编码UTF-8
经理(可选)
字段说明
ManagerName 或 ManagerUsername通过 SOQL 解析为 ManagerId
Employee2 的 HR 属性(必填)
字段描述
Department员工部门
Location员工所在地
EmployeeNumberHR 员工编号
Title职位名称
HireDate日期格式:YYYY-MM-DD
权限集

Employee Hub Unified Employee User(EmployeeHubEmployeeUser)始终分配——UEL 用户不得分配其他权限集。如果调用者要求额外权限集(Incident Fulfiller、Case Agent 或任何其他 fulfiller/agent-role 权限集),请拒绝:这些权限集适用于 Service Cloud 端的服务处理人员,而非登录 Employee Hub 的请求者。请引导调用者使用相应的服务处理人员用户创建流程,而不是扩展此流程。


工作流

所有步骤均按顺序执行。始终先读后写。 每次调用都必须通过 mcp__headless-360__* 工具进行。如果任何步骤失败,请停止并报告。

阶段 1 — 预检与发现

如果以下 discover / describe / dispatch / dispatch_readonly 调用返回任何 401 / 403 / 404,请停止并显示原始错误——组织或客户端配置不正确。401 → headless-360 MCP 客户端未通过身份验证,无法连接到 CORE_ORG_ALIAS(会话已过期)。403 → 执行用户缺少所需权限之一(ManageUsers、ManageProfilesPermissionsets、CustomizeApplication、AssignPermissionSets),或组织缺少 Unified Employee License。404 → 目标 sObject / 路由不可用(未配置 HR 模块 / UEL——此情况会在步骤 2 的五项前置条件检查中单独体现)。

  1. 发现操作 — mcp__headless-360__discover(query="create User Account Employee2 sObject") 并对 POST /sobjects/User、POST /sobjects/Account 和 POST /sobjects/Employee2 操作调用 mcp__headless-360__describe(id=<operation_id>),以确认这些操作已编入索引并获取输入架构。discover 未找到结果并不意味着路由不存在——/sobjects/… REST 端点是核心 Data API 路径,可以使用 dispatch_readonly / dispatch 对确切 URL 直接调用(参见 references/mcp-invocation.md)。如果在文档所述路径上直接进行 dispatch_readonly 探测也失败(404),请引导用户使用 Setup UI。

  2. 验证全部五项 UEL 前置条件(均为只读 /query 或 describe)。如果任一项失败,请停止并准确报告缺少的前置条件:

    • 存在 Unified Employee 许可证 → 否则显示“此组织中未找到 Unified Employee 许可证。”
    • 存在 Unified Employee 配置文件 → 否则显示“未找到 Unified Employee 配置文件。请确保已配置 UEL 许可证。”
    • 存在活动的 Person Account 记录类型 → 否则显示“未找到活动的 Person Account 记录类型。请在 Setup 中启用 Person Accounts。”
    • 存在 Employee Hub 权限集 → 否则显示“未找到 Employee Hub Unified Employee User 权限集。UEL 配置必须使用此权限集。”
    • Employee2 describe 返回 200 → 否则显示“无法访问 Employee2 sObject。请确保已启用 HR 模块。”

    记录:UnifiedEmployeeProfileId、PersonAccountRecordTypeId、EmployeeHubPermSetId。

阶段 2 — 解析引用
  1. 解析经理 — 如果用户提供了经理,请按 Username 或 Name 查询(仅限活动用户)。如果匹配到多个结果,请列出选项并请用户明确选择。记录 ManagerId。如果未提供经理,则跳过此步骤。
  2. 检查用户名唯一性 — 按 Username 查询 User;如果存在任何记录,则停止,用户名已被占用。
阶段 3 — 确认并创建关联链
  1. 确认计划 — 展示完整配置(包括 HR 属性),并在进行任何更改前等待明确确认。
  2. 创建 User — 使用 POST /sobjects/User,填写身份信息、区域设置、ProfileId = UnifiedEmployeeProfileId 和 ManagerId(没有经理时省略 ManagerId)。记录 NewUserId。
  3. 分配 Employee Hub 权限集(必需) — 使用 POST /sobjects/PermissionSetAssignment 并填写 {AssigneeId: NewUserId, PermissionSetId: EmployeeHubPermSetId}。如果失败,停止并 报告确切错误 — 该权限集已存在(已验证),但可能与许可证不兼容。
  4. 创建 Person Account — 使用 POST /sobjects/Account,填写 FirstName、LastName、 PersonEmail(必需)和 RecordTypeId = PersonAccountRecordTypeId。记录 NewAccountId。必须设置 PersonEmail:如果关联的 PersonContact 缺少 Email 或 LastName,Employee2 验证钩子会拒绝该记录。
  5. 验证 PersonContact — 查询 Account 的 IsPersonAccount 和 PersonContactId。 确认 IsPersonAccount = true 并记录 PersonContactId。如果值为 null,停止并 报告生成 PersonContact 失败。
  6. 创建 Employee2 记录 — 使用 POST /sobjects/Employee2,填写 UserId = NewUserId、ContactId = PersonContactId 和 HR 属性。使用外键字段名称 UserId/ContactId(而不是关系名称 User/Contact)。记录 NewEmployee2Id。
阶段 4 — 验证并展示
  1. 验证完整关联链 — 查询 Account(IsPersonAccount、PersonContactId)、User (IsActive、ProfileId、ManagerId)和 Employee2(UserId、ContactId),并确认 Employee Hub 权限集是唯一的 PermissionSetAssignment(不包括配置文件)。
  2. 使用下方的输出格式进行报告。

规则 / 限制

限制原因
在进行任何更改前验证全部五项前置条件防止组织未配置 UEL 时出现部分状态
执行 POST 前务必先 describe需要获取每个 sObject 的准确输入架构
创建记录前先与用户确认计划防止意外创建记录
创建 Person Account 时必须填写 PersonEmail如果 PersonContact 没有 Email,Employee2 验证钩子会拒绝该记录
在 Employee2 上使用 UserId/ContactId 字段名称API 会拒绝关系名称下的裸 ID
Employee Hub Unified Employee User 是唯一分配的权限集UEL 用户是 Employee Hub 请求者,而非履行者/Agent — 其他权限集均不兼容
从创建请求正文中省略空值/空的外键API 会拒绝显式为空的 ManagerId
失败时显示 dispatch* 返回的确切错误有助于诊断问题
切勿向用户显示 Salesforce 记录 ID仅使用易读名称

所需权限

执行操作的管理员用户(即 CORE_ORG_ALIAS 背后的身份)必须具备:

权限用途
Manage Internal Users创建 User 记录
Manage Profiles and Permission Sets分配权限集
Customize Application创建 Employee2 和 Person Account 记录
Assign Permission Sets创建 PermissionSetAssignment 记录

验证清单

  • discover + describe(id)(或者,如果 discover 未找到,则在文档所述的 /sobjects/… 路径上直接执行 dispatch_readonly 探测)是否确认了 User / Account / Employee2 的创建操作?
  • UEL 的五项前置条件(许可证、配置文件、Person Account RT、Employee Hub 集合、Employee2)是否全部通过?
  • 是否确认用户名唯一,并在执行任何变更前确认了计划?
  • Account.IsPersonAccount = true 且 PersonContactId 非空吗?
  • User.IsActive = true 是否适用于 Unified Employee 配置文件(以及提供的经理)?
  • Employee2 是否正确关联了 UserId 和 ContactId?
  • 是否只分配了 Employee Hub Unified Employee User 权限集(没有额外的 fulfiller 侧权限)?

输出格式

失败时,原样显示 dispatch* 返回的错误。

成功时:

UEL User Provisioning Complete (via service-itsm-agentic-setup-uel-user-create)

User:
  Name:     <FirstName> <LastName>
  Username: <Username>
  Email:    <Email>
  Profile:  Unified Employee
  Manager:  <ManagerName> (or "not set")
  Status:   Active

Person Account:
  Account Name: <FirstName> <LastName>
  Person Contact: linked

Employee Record:
  Department:    <Department>
  Title:         <Title>
  Location:      <Location>
  Employee No:   <EmployeeNumber>
  Hire Date:     <HireDate>

Permission Set Assigned:
  - Employee Hub Unified Employee User

Chain: User > Person Account > PersonContact > Employee2 > Employee Hub permset

面向用户的输出中不得包含记录 ID — 仅使用易读的名称。


参考文件索引

文件何时阅读
references/mcp-invocation.md每个阶段 — 精确的 mcp__headless-360__* 调用格式、五项前置条件查询、完整链路的创建请求体、响应封装、发现操作和注意事项

相关技能

此技能使用完整实体链配置 Unified Employee License (UEL) 用户。两个相邻流程不在本技能范围内:创建标准(非 UEL)用户,以及克隆现有用户的完整访问配置。请分别处理这些请求 — 本技能不涵盖它们。

评论

支持 Markdown