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. 01UEL と HR の前提条件を確認
  2. 02ユーザー、アカウント、従業員レコードを作成
  3. 03必須の Employee Hub 権限セットを割り当て
  4. 04レコード間の関連を検証

活用シーン

  1. 01新しい UEL 従業員の登録
  2. 02Salesforce と 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

詳細

統合従業員(UEL)ユーザーの作成と有効化

Unified Employee License(UEL)で従業員をプロビジョニングします。Unified Employee ライセンス/プロファイルに User を作成してリンクし、Person Account(自動生成される Contact を含む)と Employee2 レコードを作成した後、必要な権限セットを割り当てます。すべての操作は、4 つのメタツール(discover、describe、dispatch_readonly、dispatch)を介して、Salesforce がホストする headless-360 MCP サーバー(サーバーキー headless-360)で実行されます。組織は現在の MCP セッションにバインドされた OAuth JWT から特定されます。このスキルが組織 ID、エイリアス、認証情報を扱うことはありません。そのため、ユーザーごとの MCP インストールなしで、本番環境とサンドボックスのどちらでも同じように動作します。

対象範囲

  • 対象:新しい UEL User、Person Account、Employee2 レコードの作成、権限セットの割り当て、関連レコード一式の検証。
  • 対象外:標準ユーザー(非 UEL)の作成、既存ユーザーの複製、既存ユーザーの権限のみの管理、ユーザーの無効化、ライセンス割り当ての変更。

ルートの概要

読み取りは mcp__headless-360__dispatch_readonly、書き込みは mcp__headless-360__dispatch を介して実行します。どちらも raw HTTP を受け取ります。 {"url": "<path>", "method": "GET|POST", "body"?: {...}, "queryParams"?: {...}}。各行の完全な URL パスとリクエスト/レスポンスボディは references/mcp-invocation.md に記載されています。この表には操作と HTTP メソッドのみを示します。

対象メソッド + 操作備考
Unified Employee ライセンスGET /query (UserLicense)0 件の場合は停止
Unified Employee プロファイルGET /query (Profile)0 件の場合は停止
Person Account レコードタイプGET /query (RecordType, IsPersonType)0 件の場合は停止
Employee Hub 権限セットGET /query (PermissionSet)必須。0 件の場合は停止
Employee2 のアクセス可否GET /sobjects/Employee2/describe200 = HR モジュールが有効
マネージャーの解決GET /query (Username/Name で User を検索)有効なユーザーのみ
ユーザーの作成POST /sobjects/UserProfile = Unified Employee
Employee Hub セットの割り当てPOST /sobjects/PermissionSetAssignment必須
Person Account の作成POST /sobjects/AccountPersonEmail が必須
PersonContact の取得GET /query (Account)PersonContactId を取得
Employee2 の作成POST /sobjects/Employee2UserId/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 は依存先の問題です。


必須入力

ユーザーから情報を収集します(会話のコンテキストですでに得られている情報は尋ねないでください)。

ID 情報(必須)
フィールド説明
FirstName従業員の名
LastName従業員の姓
Email従業員のメールアドレス
認証情報とロケール(必須)
フィールド説明例
Usernameメールアドレス形式で、グローバルに一意[email protected]
Alias最大 8 文字jdoe
TimeZoneSidKeyタイムゾーンAmerica/Los_Angeles
LocaleSidKeyロケールen_US
LanguageLocaleKey言語en_US
EmailEncodingKeyメールエンコーディングUTF-8
マネージャー(任意)
フィールド説明
ManagerName または ManagerUsernameSOQL を使って ManagerId に解決
Employee2 の HR 属性(必須)
FieldDescription
Department従業員の部署
Location従業員の勤務地
EmployeeNumberHR 従業員番号
Title役職
HireDate日付形式:YYYY-MM-DD
権限セット

Employee Hub Unified Employee User(EmployeeHubEmployeeUser)は常に割り当てられます。UEL ユーザーに割り当てる権限セットはこれ以外にありません。呼び出し元が追加の権限セット(Incident Fulfiller、Case Agent、またはその他のフルフィラー/エージェント役割の権限セット)を求めた場合は、断ってください。これらは 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 ライセンスがありません。404 → 対象の sObject/ルートが利用できません(HR モジュール/UEL がプロビジョニングされていません。手順 2 の 5 つの前提条件チェックで個別に確認します)。

  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 のパスであり、正確な URL を指定して dispatch_readonly/dispatch から直接呼び出せます(references/mcp-invocation.md を参照)。ドキュメントに記載されたパスへの直接の dispatch_readonly プローブも失敗した場合(404)は、ユーザーに Setup UI を案内してください。

  2. UEL の 5 つの前提条件をすべて確認する(読み取り専用の /query または describe)。いずれかが失敗した場合は、停止し、不足している前提条件を正確に報告してください:

    • Unified Employee ライセンスが存在する → そうでない場合は "Unified Employee license not found in this org."
    • Unified Employee プロファイルが存在する → そうでない場合は "Unified Employee profile not found. Ensure UEL license is provisioned."
    • 有効な Person Account レコードタイプが存在する → そうでない場合は "No active Person Account record type found. Enable Person Accounts in Setup."
    • Employee Hub 権限セットが存在する → そうでない場合は "Employee Hub Unified Employee User permission set not found. This is required for UEL provisioning."
    • Employee2 の describe が 200 を返す → そうでない場合は "Employee2 sObject not accessible. Ensure the HR module is enabled."

    以下を取得します:UnifiedEmployeeProfileId、PersonAccountRecordTypeId、EmployeeHubPermSetId。

フェーズ 2 — 参照先の解決
  1. マネージャーを解決する — ユーザーがマネージャーを指定した場合は、Username または Name でクエリします(有効なユーザーのみ)。複数の一致がある場合は、候補を提示してユーザーに選択を求めます。ManagerId を取得します。マネージャーが指定されていない場合は、このステップをスキップします。
  2. ユーザー名の一意性を確認する — Username で User をクエリします。レコードが見つかった場合は停止し、ユーザー名が使用済みであることを伝えます。
フェーズ 3 — 確認してチェーンを作成する
  1. 計画を確認する — HR 属性を含む設定全体を提示し、変更を行う前に明示的な確認を待ちます。
  2. User を作成する — ID 情報、ロケール、ProfileId = UnifiedEmployeeProfileId、および ManagerId(設定しない場合は ManagerId を省略)を指定して POST /sobjects/User を実行します。NewUserId を取得します。
  3. Employee Hub 権限セットを割り当てる(必須) — {AssigneeId: NewUserId, PermissionSetId: EmployeeHubPermSetId} を指定して POST /sobjects/PermissionSetAssignment を実行します。失敗した場合は、停止して正確なエラーを報告します。このセットは存在することが確認されていますが、ライセンスと互換性がない可能性があります。
  4. Person Account を作成する — FirstName、LastName、PersonEmail(必須)、および RecordTypeId = PersonAccountRecordTypeId を指定して POST /sobjects/Account を実行します。NewAccountId を取得します。PersonEmail は必ず設定してください。リンクされた PersonContact に Email または LastName がない場合、Employee2 の検証フックがレコードを拒否します。
  5. PersonContact を検証する — Account の IsPersonAccount と PersonContactId をクエリします。IsPersonAccount = true であることを確認し、PersonContactId を取得します。null の場合は、停止して PersonContact の生成に失敗したことを報告します。
  6. Employee2 レコードを作成する — UserId = NewUserId、ContactId = PersonContactId、および HR 属性を指定して POST /sobjects/Employee2 を実行します。外部キーのフィールド名 UserId/ContactId を使用し、リレーション名の User/Contact は使用しないでください。NewEmployee2Id を取得します。
フェーズ 4 — 検証して結果を提示する
  1. チェーン全体を検証する — Account(IsPersonAccount、PersonContactId)、User(IsActive、ProfileId、ManagerId)、Employee2(UserId、ContactId)をクエリし、Employee Hub 権限セットが(プロファイル以外で)唯一の PermissionSetAssignment であることを確認します。
  2. 以下の出力形式で報告します。

ルール/制約

制約理由
変更を行う前に、5 つの前提条件をすべて検証する組織が UEL 用に設定されていない場合に、不完全な状態になるのを防ぎます
POST の前に必ず describe を実行する各 sObject の正確な入力スキーマが必要です
レコードを作成する前に、計画をユーザーに確認する意図しないレコード作成を防ぎます
Person Account の作成では PersonEmail が必須Employee2 の検証フックは、Email のない PersonContact を拒否します
Employee2 では UserId/ContactId のフィールド名を使用するAPI はリレーション名に単独の ID を指定すると拒否します
割り当てる権限セットは Employee Hub Unified Employee User のみUEL ユーザーは Employee Hub のリクエスターであり、フルフィルメント担当者/エージェントではありません。他の権限セットは互換性がありません
作成リクエストの本文から null/空の外部キーを省略するAPI は明示的に空の ManagerId を指定すると拒否します
失敗時には dispatch* からの正確なエラーを表示する問題の診断に役立ちます
Salesforce のレコード ID をユーザーに絶対に表示しない人が読み取れる名前のみを使用します

必要な権限

実行する管理者ユーザー(CORE_ORG_ALIAS の背後にある ID)には、次の権限が必要です。

権限目的
内部ユーザーの管理User レコードを作成する
プロファイルと権限セットの管理権限セットを割り当てる
アプリケーションのカスタマイズEmployee2 および Person Account レコードを作成する
権限セットの割り当てPermissionSetAssignment レコードを作成する

検証チェックリスト

  • discover + describe(id)(または、discover で見つからない場合は、ドキュメントに記載されている /sobjects/… パスで直接 dispatch_readonly プローブを実行)により、User/Account/Employee2 の作成操作を確認しましたか?
  • UEL の 5 つの前提条件(ライセンス、プロファイル、Person Account RT、Employee Hub セット、Employee2)をすべて満たしましたか?
  • ユーザー名が一意であることを確認し、変更を加える前に計画を確認しましたか?
  • Account.IsPersonAccount = true で、PersonContactId が null ではありませんか?
  • User.IsActive = true が Unified Employee プロファイルに設定されていますか(マネージャーが指定されている場合は、マネージャーについても確認してください)?
  • Employee2 の UserId と ContactId は正しく関連付けられていますか?
  • 割り当てられている権限セットは Employee Hub Unified Employee User のみですか(フルフィラー側の追加権限セットはありませんか)?

出力形式

失敗時は、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__* 呼び出し形式、5 つの前提条件クエリ、完全な作成チェーンのリクエスト本文、レスポンスエンベロープ、検出、および注意点

関連スキル

このスキルは、完全なエンティティチェーンを備えた Unified Employee License (UEL) ユーザーをプロビジョニングします。隣接する次の 2 つのフローは対象外です。標準(UEL ではない)ユーザーの作成と、既存ユーザーの完全なアクセス設定の複製です。これらのリクエストには個別に対応してください。このスキルでは扱いません。

コメント