education-cloud-domain-configure
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseConfiguring Education Cloud Domains
配置Education Cloud域名
Guide users through conversational setup of Education Cloud domains. Enable Person Accounts prerequisite, activate target domain via Setup, and configure domain-specific sub-features with user confirmation at each step.
引导用户通过对话式设置配置Education Cloud域名。启用Person Accounts前置条件,通过Setup激活目标域名,并在每一步获得用户确认后配置域名专属子功能。
Scope
适用范围
- In scope: Education Cloud domain configuration (Student Success, Recruitment & Admissions, Academic Operations, Alumni Relations, Student Management, Mentoring), Person Accounts enablement, sub-feature configuration, API-first with UI fallback
- Out of scope: Generating custom metadata or objects (delegate to ), deploying managed packages, data migration, EDA (Education Data Architecture) configuration — native Education Cloud only
platform-custom-object-generate
- 适用:Education Cloud域名配置(学生成功、招生与录取、学术运营、校友关系、学生管理、指导)、Person Accounts启用、子功能配置、优先使用API,UI作为备选
- 不适用:生成自定义元数据或对象(委托给)、部署托管包、数据迁移、EDA(Education Data Architecture)配置——仅支持原生Education Cloud
platform-custom-object-generate
Required Inputs
必要输入
Gather before starting:
- Target domain: Which Education Cloud domain to configure (Student Success, Recruitment & Admissions, Academic Operations, Alumni Relations, Student Management, or Mentoring)
- Target org: Active Salesforce org with admin access
- Sub-features (optional): Specific sub-features the user wants enabled within the domain
Defaults:
- Confirmation style: Ask before each step
- Error handling: Explain errors, suggest fixes, wait for user decision
开始前需收集:
- 目标域名:要配置的Education Cloud域名(学生成功、招生与录取、学术运营、校友关系、学生管理或指导)
- 目标组织:具有管理员权限的活跃Salesforce组织
- 子功能(可选):用户希望在域名内启用的特定子功能
默认设置:
- 确认方式:每一步操作前询问用户
- 错误处理:解释错误、建议修复方案、等待用户决策
Domain & Feature Toggle Write Path (authoritative)
域名与功能切换写入流程(权威指南)
Every domain/sub-feature toggle lives on the settings file (NOT Core's allowlist) and is IRREVERSIBLE ( only — warn before flipping, never promise a revert). Write sequence is always READ (tooling GET by DurableId) → WRITE ( via the write-enabled tool) → cold-VERIFY (repeat the GET — alone is not proof). Read before any toggle write for the full endpoint table, exact shape, the constant, and the confirmed failure classes (silent no-op, cold-verify 500s, license-gating).
IndustriesSettingsORG_PREFERENCESfalse → truePUT /services/data/v68.0/headless/metadatadispatchsuccess:truereferences/toggle-write-path.mdxmlRepDurableId每个域名/子功能切换都存储在设置文件中(而非Core的白名单),且不可撤销(仅支持切换——操作前警告用户,绝不承诺可恢复)。写入顺序始终为读取(通过DurableId调用tooling GET)→ 写入(通过支持写入的工具调用)→ 冷验证(重复GET请求——仅不能作为成功证明)。在执行任何切换写入前,请阅读,获取完整的端点表、精确的格式、常量以及已确认的失败类型(静默无操作、冷验证500错误、许可证限制)。
IndustriesSettingsORG_PREFERENCESfalse → truedispatchPUT /services/data/v68.0/headless/metadatasuccess:truereferences/toggle-write-path.mdxmlRepDurableIdAuthoring conventions
编写规范
- Feature-first framing. Lead with the FEATURE NAME and a plain-language description of what it does for the customer (e.g. "Enforce Time Conflicts — prevents learners registering for course offerings with conflicting schedules") — not the toggle's API element name (). Keep the element name only in the technical/API-call subsection.
enableCosConflicts - Describe before toggling. For every feature and sub-feature, include a one-line "What it does" so the customer understands what's being enabled before confirming.
- List sub-features + confirm. When a domain has sub-features, enumerate all of them and ask the customer to confirm or exclude before proceeding.
- Announce every C/U/D. Before any create/update/delete, state the operation and offer approve / reject / modify.
- Flag manual steps. If a step can't be done via API, note it as manual and surface it at the end of the domain's configuration.
- Always cold-verify. on a write is not proof. Re-read state (GET on the record or settings object) and confirm the intended field/element value.
success:true
- 以功能为核心:先列出功能名称,并用通俗易懂的语言描述其为客户带来的价值(例如:“Enforce Time Conflicts — 防止学习者注册时间冲突的课程”)——而非切换项的API元素名称()。仅在技术/API调用小节中保留元素名称。
enableCosConflicts - 先描述再切换:对于每个功能和子功能,先添加一行“功能说明”,让客户在确认前了解即将启用的内容。
- 列出子功能并确认:当域名包含子功能时,枚举所有子功能,询问用户确认或排除后再继续。
- 提前告知所有增删改操作:在执行任何创建/更新/删除操作前,说明操作内容,并提供批准/拒绝/修改选项。
- 标记手动步骤:如果某一步无法通过API完成,标记为手动步骤,并在域名配置结束时突出显示。
- 始终进行冷验证:写入请求返回不能作为成功证明。重新读取状态(对记录或设置对象调用GET),确认目标字段/元素的值符合预期。
success:true
Execution Transport
执行传输
Before first call, probe transport health: via headless-360 dispatch. 2xx → route all calls through it. On absent/4xx/5xx → probe other available transports (other Salesforce MCP, authenticated CLI, custom MCP) with the same read, use first healthy, announce it. None healthy → stop, ask user to connect one; never fabricate.
GET /services/data/vXX.X/limitssfSOQL routes via headless-360 — pass the query through, NOT inlinequeryParamsin?q=.url(orGET /services/data/vXX.0/query) with/tooling/queryreturns records normally; puttingqueryParams: {"q": "SELECT ..."}directly in the?q=...string 404s (url) — a call-shape mistake, not a platform limitation.ROUTE_NOT_FOUNDon a plain sObject GET is still not supported (router treats it as an external-id path segment) — use?fields=for field lists instead. Prefer a direct SOQL existence/Id lookup over asking the user to supply a record Id; where no REST route exists at all (license/permission provisioning UI-only), ask the user or confirm in Setup UI./describe
首次调用前,检查传输健康状态:通过headless-360 dispatch调用。返回2xx状态码→所有调用均通过此路由。若返回不存在/4xx/5xx→使用相同的读取请求探测其他可用传输方式(其他Salesforce MCP、已认证的 CLI、自定义MCP),使用第一个可用的传输方式并告知用户。若没有可用的传输方式→停止操作,请求用户连接一个;绝不伪造传输方式。
GET /services/data/vXX.X/limitssfSOQL路由通过headless-360——将查询参数传入,而非直接嵌入queryParams的url中。 调用?q=(或GET /services/data/vXX.0/query)并传入/tooling/query可正常返回记录;若直接在queryParams: {"q": "SELECT ..."}字符串中添加url会返回404错误(?q=...)——这是调用格式错误,而非平台限制。普通sObject GET请求不支持ROUTE_NOT_FOUND参数(路由器会将其视为外部ID路径段)——请使用?fields=获取字段列表。优先通过SOQL直接查询存在性/Id,而非要求用户提供记录Id;若完全没有REST路由(仅UI可用的许可证/权限配置),请询问用户或在Setup UI中确认。/describe
Workflow
工作流程
Phase 0 — Foundation Prerequisites (Org-Level)
阶段0 —— 基础前置条件(组织级别)
All Education Cloud domains require these foundation settings. Verify before proceeding to domain configuration.
-
Check org edition — querywith
GET /services/data/v68.0/query(singleton, no Id needed), then pipe the record intoqueryParams: {"q": "SELECT OrganizationType FROM Organization"}(stdin:scripts/check_org_edition.py --allowed "Enterprise Edition,Performance Edition,Unlimited Edition,Developer Edition").{"records": [...]}→ warn user Education Cloud requires Enterprise+ edition.eligible: false -
Check Lightning Experience — verify Lightning Experience is enabled. If not enabled, instruct user to navigate to Setup → User Interface → Enable Lightning Experience.
-
Check Education Cloud license — permission set names vary by org/release (neither of two confirmed orgs shipped; look for
EducationCloudUsermatches instead). Query%EducationCloud%withGET /services/data/v68.0/queryandqueryParams: {"q": "SELECT Id, Name FROM PermissionSet WHERE Name LIKE '%EducationCloud%'"}(captureGET /services/data/v68.0/sobjects/BusinessProfile/describe, orcreateableif it 404'd), then pipe both intonull(stdin:scripts/check_license_provisioned.py).{"permissionSets": [...], "businessProfileDescribe": {...}}→ not provisioned, tell the user and stop.provisioned: falsewith emptyprovisioned: true→ treat as provisioned but note the mismatch.matchingPermissionSets -
Assign Education Cloud Full Access — resolve the running user's Id (ask for their username if unknown), querywith
GET /services/data/v68.0/query, and pipe the result intoqueryParams: {"q": "SELECT Id, PermissionSet.Name FROM PermissionSetAssignment WHERE AssigneeId='<running user Id>' AND PermissionSet.Name LIKE '%EducationCloud%'"}(stdin:scripts/check_permission_assigned.py).{"records": [...]}→ instruct user to assign the org's actual permission set (from step 3'sassigned: false) via Setup → Permission Sets → Manage Assignments.matchingPermissionSetsNo Bash tool available on this surface? These scripts are local data transforms only — no org call, no credentials. Perform the equivalent comparison inline instead of skipping the check. -
Enable Education Cloud Foundation — IRREVERSIBLE — warn the user before flipping; do NOT promise a revert. This does NOT go through the metadata PUT path (confirmed silent no-op on) — it needs the dedicated invoke endpoint. Read
enableEducationCloud("Enabling the foundation") for the READ → WRITE → cold-VERIFY sequence and the UI fallback. Proceed to step 6 once cold-verify showsreferences/toggle-write-path.md.true
所有Education Cloud域名都需要以下基础设置。在开始域名配置前先验证这些设置。
-
检查组织版本 —— 调用并传入
GET /services/data/v68.0/query(单例,无需Id),然后将记录传入queryParams: {"q": "SELECT OrganizationType FROM Organization"}(标准输入:scripts/check_org_edition.py --allowed "Enterprise Edition,Performance Edition,Unlimited Edition,Developer Edition")。若{"records": [...]}→警告用户Education Cloud需要Enterprise及以上版本。eligible: false -
检查Lightning Experience —— 验证Lightning Experience已启用。若未启用,指导用户导航至Setup → User Interface → Enable Lightning Experience。
-
检查Education Cloud许可证 —— 权限集名称因组织/版本而异(已确认的两个组织均未提供;请查找名称包含
EducationCloudUser的权限集)。调用%EducationCloud%并传入GET /services/data/v68.0/query,以及queryParams: {"q": "SELECT Id, Name FROM PermissionSet WHERE Name LIKE '%EducationCloud%'"}(捕获GET /services/data/v68.0/sobjects/BusinessProfile/describe,若返回404则为createable),然后将两者传入null(标准输入:scripts/check_license_provisioned.py)。若{"permissionSets": [...], "businessProfileDescribe": {...}}→许可证未配置,告知用户并停止操作。若provisioned: false但provisioned: true为空→视为已配置,但记录不匹配情况。matchingPermissionSets -
分配Education Cloud Full Access权限 —— 获取当前运行用户的Id(若未知则询问用户用户名),调用并传入
GET /services/data/v68.0/query,然后将结果传入queryParams: {"q": "SELECT Id, PermissionSet.Name FROM PermissionSetAssignment WHERE AssigneeId='<running user Id>' AND PermissionSet.Name LIKE '%EducationCloud%'"}(标准输入:scripts/check_permission_assigned.py)。若{"records": [...]}→指导用户通过Setup → Permission Sets → Manage Assignments分配组织实际的权限集(来自步骤3的assigned: false)。matchingPermissionSets当前环境没有Bash工具? 这些脚本仅为本地数据转换——无需调用组织或提供凭据。请执行等效的内联比较,而非跳过检查。 -
启用Education Cloud Foundation —— 不可撤销——操作前警告用户;绝不承诺可恢复。此操作不通过元数据PUT路径(已确认对调用静默无操作)——需要使用专用的invoke端点。阅读
enableEducationCloud(“Enabling the foundation”章节)获取读取→写入→冷验证的流程以及UI备选方案。冷验证显示references/toggle-write-path.md后,继续步骤6。true
Phase 1 — Enable Person Accounts
阶段1 —— 启用Person Accounts
-
Confirm domain choice — ask user which domain to configure if not already specified. Present list:
- Student Success
- Recruitment & Admissions
- Academic Operations
- Alumni Relations
- Student Management
- Mentoring
-
Explain Person Accounts — explain: "Person Accounts are required for Education Cloud. They allow individuals (students, applicants, alumni) to be tracked as both Accounts and Contacts in a unified record."WARNING: Person Accounts cannot be disabled once enabled. Confirm user understands this is irreversible before proceeding.
-
Enable Person Accounts (UI) — Person Accounts has no supported org-preferences write API (theendpoint returns 404). Instruct user to navigate to Setup → Quick Find → "Account Settings" → Select Account Settings → Turn on "Enable Person Accounts" → Click Save. Wait for user confirmation toggle is ON and saved, then proceed to Phase 1.5.
setup/org/preferences/{name}To verify:and confirmGET /services/data/v68.0/sobjects/Account/describe/IsPersonAccountfields are present in thePerson*array; if headless routing is unavailable, fall back tofieldsand grep for the same. This describe call is the ONLY valid verification method — do NOT run any SOQL query againstsf sobject describe -s Accountor Person-Account fields (onIsPersonAccount,Account, or any object) to check enablement status; SOQL on an unrecognized field returnsOrganization/"No such column", and that failure does NOT mean Person Accounts is off — it means you used the wrong check.INVALID_FIELD
-
确认域名选择 —— 若用户未指定域名,询问用户要配置的域名。提供列表:
- 学生成功
- 招生与录取
- 学术运营
- 校友关系
- 学生管理
- 指导
-
解释Person Accounts —— 说明:“Person Accounts是Education Cloud的必备项。它允许将个人(学生、申请者、校友)作为统一记录同时跟踪为Account和Contact。”警告:Person Accounts启用后无法禁用。在继续操作前,请确认用户了解此操作不可撤销。
-
启用Person Accounts(UI方式) —— Person Accounts没有支持的组织偏好写入API(端点返回404)。指导用户导航至Setup → Quick Find → "Account Settings" → 选择Account Settings → 开启“Enable Person Accounts” → 点击Save。等待用户确认开关已开启并保存,然后进入阶段1.5。
setup/org/preferences/{name}验证方式:调用,确认GET /services/data/v68.0/sobjects/Account/describe数组中存在fields/IsPersonAccount字段;若headless路由不可用,使用Person*并查找相同字段。此describe调用是唯一有效的验证方法——请勿通过对sf sobject describe -s Account或Person-Account字段(在IsPersonAccount、Account或任何对象上)执行SOQL查询来检查启用状态;对未识别字段执行SOQL会返回Organization/“No such column”错误,但此错误并不意味着Person Accounts未启用——仅说明使用了错误的检查方式。INVALID_FIELD
Phase 1.5 — Setup Basics: Dependent Features & Data Space Mapping
阶段1.5 —— 设置基础:依赖功能与数据空间映射
This mirrors Setup's own "Setup Basics" grouping (Person Accounts, Dependent Features, Data Space Mapping) that sits before the domain sections. Several dependent features are referenced by more than one domain's sub-features, so configuring them here avoids re-discovering them mid-domain.
-
Present Dependent Features — readand present the full list to the user, grouped by category (confirmed API toggle / manual-UI-only / untested), leading with feature name + one-line "what it does", not the API element name. Always present this list and ask which to enable now, even if the user declines all of them — record that decision explicitly and proceed to Phase 2 rather than skipping the step. Anything declined can be revisited later.
references/dependent-features.md -
Configure each selected Dependent Feature —categorizes every feature into one of four shapes; look up the selected feature there for its exact element names, DurableIds, and gotchas:
references/dependent-features.md- Confirmed toggle — IRREVERSIBLE, warn user. Use the Domain & Feature Toggle Write Path: READ → WRITE (
IndustriesSettings) → cold-VERIFY.PUT /services/data/v68.0/headless/metadata - Confirmed toggle via a different mechanism (e.g. Einstein Generative AI master toggle) — a Setup-Connect org preference, not :
IndustriesSettings→GET /services/data/v68.0/setup/org/preferences/<PrefName>same path withPATCH→ cold-VERIFY. Some of these are reversible — check the reference before assuming one-way.{"desiredState": true|false} - Overlaps a domain sub-feature (several toggles are shared with Student Success and/or Mentoring sub-features) — cold-read first; if already from a prior domain's configuration, report as already enabled rather than re-writing.
true - Manual UI only, no API route — instruct user to the Setup path in the reference. Flag where a custom permission set / object permissions are also required, not just a toggle — surface as manual follow-up.
- Confirmed
-
Enable OmniStudio — OmniStudio is included with Education Cloud license. Attempt API call or instruct user to navigate to Setup → OmniStudio Settings → Enable.
-
Enable Business Rules Engine — Business Rules Engine is included with Education Cloud license. Instruct user to navigate to Setup → Business Rules Engine → Enable.
-
Data Space Mapping — via theSetup Operation Recipe (
DataSpaceFeatureMappings). Unlike most toggles in this skill, it's reversible (delete supported). Full pre-flight/READ/WRITE/cold-VERIFY/undo sequence, valid feature values, and status-code handling are in/headless/invoke/platform/data-space-feature-mappings("Data Space Mapping" section). If the pre-flight check fails or any invoke call errors, fall back to manual UI (Setup → "Set Up Education Cloud" → Data Space Mapping).references/dependent-features.md
此阶段对应Setup中的“Setup Basics”分组(Person Accounts、依赖功能、数据空间映射),位于域名配置之前。多个依赖功能被多个域名的子功能引用,因此在此处配置可避免在域名配置过程中重复处理。
-
展示依赖功能 —— 读取,向用户展示完整的依赖功能列表,按类别分组(已确认的API切换、仅手动UI可用、未测试),先列出功能名称+一行“功能说明”,而非API元素名称。始终展示此列表并询问用户现在要启用哪些功能,即使用户拒绝所有功能——也要明确记录此决策,然后进入阶段2,而非跳过此步骤。被拒绝的功能可在后续重新配置。
references/dependent-features.md -
配置每个选中的依赖功能 ——将每个功能分为四种类型;查找选中功能的详细信息,获取其精确的元素名称、DurableId和注意事项:
references/dependent-features.md- 已确认的切换 —— 不可撤销,警告用户。遵循域名与功能切换写入流程:读取→写入(
IndustriesSettings)→冷验证。PUT /services/data/v68.0/headless/metadata - 通过其他机制确认的切换(例如Einstein Generative AI主开关)——属于Setup-Connect的组织偏好,而非:调用
IndustriesSettings→ 调用PATCH请求并传入GET /services/data/v68.0/setup/org/preferences/<PrefName>→冷验证。部分此类切换可撤销——操作前请查阅参考文档。{"desiredState": true|false} - 与域名子功能重叠(部分切换与学生成功和/或指导子功能共享)——先执行冷读取;若已在之前的域名配置中设置为,则报告为已启用,无需重新写入。
true - 仅手动UI可用,无API路由——指导用户按照参考文档中的Setup路径操作。标记需要自定义权限集/对象权限的步骤,而非仅切换——作为手动后续步骤突出显示。
- 已确认的
-
启用OmniStudio —— OmniStudio包含在Education Cloud许可证中。尝试API调用,或指导用户导航至Setup → OmniStudio Settings → Enable。
-
启用Business Rules Engine —— Business Rules Engine包含在Education Cloud许可证中。指导用户导航至Setup → Business Rules Engine → Enable。
-
数据空间映射 —— 通过Setup操作配方(
DataSpaceFeatureMappings)完成。与本Skill中的大多数切换不同,此操作可撤销(支持删除)。完整的预检查/读取/写入/冷验证/撤销流程、有效功能值以及状态码处理请查阅/headless/invoke/platform/data-space-feature-mappings(“Data Space Mapping”章节)。若预检查失败或任何invoke调用出错,切换为手动UI方式(Setup → "Set Up Education Cloud" → Data Space Mapping)。references/dependent-features.md
Phase 2 — Enable Target Domain
阶段2 —— 启用目标域名
-
Explain domain purpose — look up the selected domain in's index and open the linked per-domain file (e.g.
references/domain-features.md) to explain to user what the domain provides, including prerequisites.references/domain-features/student-success.md -
Check domain-specific prerequisites — beyond OmniStudio/Business Rules Engine (already enabled in Phase 0), most domains need an added license: Experience Cloud (Recruitment & Admissions, Mentoring, and portals generally), Salesforce Scheduler (Student Success, Recruitment & Admissions), Fundraising (Alumni Relations, if using gift management), or a prior domain (Student Management requires Academic Operations already configured). See the selected domain's file underfor the full list. If prerequisites are missing, warn user and ask whether to continue with available features or provision prerequisites first.
references/domain-features/ -
Confirm domain enablement — IRREVERSIBLE — one-way by design (only). Warn the user explicitly and do NOT promise a revert/rollback. Ask: "Ready to enable [Domain Name]? This activates domain-specific objects, fields, and setup features and CANNOT be turned off afterward."
false → true -
Enable the domain toggle — each domain is anfield on
enableXXX. Follow the Domain & Feature Toggle Write Path: READ (tooling GET via DurableId) → WRITE (IndustriesSettingswith the singlePUT /services/data/v68.0/headless/metadataelement in<enableXXX>true</enableXXX>, via thexmlRepwrite tool) → VERIFY (tooling GET showsdispatch).trueToggle field per domain:Domain fieldIndustriesSettingsStudent Success enableStudentSuccessAcademic Operations enableAcademicOperationsMentoring enableMentoringAlumni Relations enableAlumniRelationsRecruitment & Admissions No master toggle — configured via 2 independent sub-feature settings ( ,enableApplnDecStdSharing); skip this step, go toenableAppMaterialsProtection"Enablement & Toggles"references/domain-features/recruitment-admissions.mdStudent Management enableStudentManagementOn success (, synchronous, no polling), proceed to step 18. On failure, instruct user to navigate to Setup → "Set Up Education Cloud" → the domain section (e.g., "Set Up the Student Success App") → turn on the domain toggle → Save, and wait for confirmation.200 { success: true } -
Verify domain active — the step-17 cold-verify (=
Is<Domain>Enabled) already confirms the toggle. To confirm object provisioning,true: 200 means the object exists (domain active); 404/NOT_FOUND → wait 1-2 minutes for async provisioning and retry. A SOQLGET /services/data/v68.0/sobjects/CaseTeamTemplate/describeviaSELECT count() FROM <Object>also works.queryParams
-
解释域名用途 —— 在的索引中查找选中的域名,打开对应的域名参考文件(例如
references/domain-features.md),向用户解释该域名提供的功能,包括前置条件。references/domain-features/student-success.md -
检查域名专属前置条件 —— 除了阶段0中已启用的OmniStudio/Business Rules Engine,大多数域名需要额外的许可证:Experience Cloud(招生与录取、指导及门户通用)、Salesforce Scheduler(学生成功、招生与录取)、Fundraising(校友关系,若使用礼品管理),或已配置的其他域名(学生管理需要先配置学术运营)。请查阅下的对应域名文件获取完整列表。若缺少前置条件,警告用户并询问是继续使用可用功能还是先配置前置条件。
references/domain-features/ -
确认域名启用 —— 不可撤销——设计为单向操作(仅支持)。明确警告用户,绝不承诺可恢复/回滚。询问:“是否准备启用[域名名称]?此操作将激活域名专属的对象、字段和设置功能,且无法关闭。”
false → true -
启用域名切换 —— 每个域名对应中的一个
IndustriesSettings字段。遵循域名与功能切换写入流程:读取(通过DurableId调用tooling GET)→ 写入(通过enableXXX写入工具调用dispatch,在PUT /services/data/v68.0/headless/metadata中添加单个xmlRep元素)→ 验证(tooling GET显示<enableXXX>true</enableXXX>)。true各域名对应的切换字段:域名 字段IndustriesSettings学生成功 enableStudentSuccess学术运营 enableAcademicOperations指导 enableMentoring校友关系 enableAlumniRelations招生与录取 无主开关——通过2个独立的子功能设置配置( ,enableApplnDecStdSharing);跳过此步骤,查阅enableAppMaterialsProtection中的“Enablement & Toggles”章节references/domain-features/recruitment-admissions.md学生管理 enableStudentManagement成功后(返回,同步操作,无需轮询),继续步骤18。若失败,指导用户导航至Setup → "Set Up Education Cloud" → 对应域名章节(例如“Set Up the Student Success App”)→ 开启域名开关 → Save,并等待用户确认。200 { success: true } -
验证域名已激活 —— 步骤17的冷验证(=
Is<Domain>Enabled)已确认开关状态。要验证对象是否已配置,调用true:返回200表示对象存在(域名已激活);返回404/NOT_FOUND→等待1-2分钟异步配置完成后重试。通过GET /services/data/v68.0/sobjects/CaseTeamTemplate/describe执行SOQLqueryParams也可验证。SELECT count() FROM <Object>
Phase 3 — Configure Sub-Features
阶段3 —— 配置子功能
-
Read sub-feature reference — load the selected domain's file underto identify available sub-features and their detailed setup steps.
references/domain-features/ -
Present sub-feature options — list the sub-features available for the domain (per the domain'sfile) and ask user which to configure. Student Success has a required execution order (Support Process → Case Record Types → Success Teams → Care Plans → Support Programs → Salesforce Scheduler → consoles/portal); the other domains' sub-features are independent of each other.
references/domain-features/ -
Configure each selected sub-feature — explain what it does, warn if irreversible, confirm with user, then follow the exact setup path in the domain'sfile (covers all five shapes: record creation via Data/Tooling API,
references/domain-features/toggles via the Toggle Write Path, app/console setup, Experience Cloud portal setup, OmniStudio activation — with endpoints, body shapes, gotchas, and verification per sub-feature). Toggles follow the same IRREVERSIBLE + READ→WRITE→cold-VERIFY rule as domain toggles; cold-read first if already set from Phase 1.5. On API failure, fall back to the Setup UI path in the reference.IndustriesSettings -
Summary — after all sub-features configured, list what was enabled via which method (API, UI, OmniStudio). Report any failures or manual steps required. If suggesting next steps, limit them to genuine blockers/dependencies actually surfaced during this session (e.g. a prerequisite that's still off, a sub-feature the user asked about but deferred) — not a generic list of every related feature or domain regardless of relevance.
-
读取子功能参考文档 —— 加载下的对应域名文件,确定可用的子功能及其详细设置步骤。
references/domain-features/ -
展示子功能选项 —— 列出域名可用的子功能(根据域名的文件),询问用户要配置哪些。学生成功域名有固定的执行顺序(支持流程→案例记录类型→成功团队→关怀计划→支持项目→Salesforce Scheduler→控制台/门户);其他域名的子功能相互独立。
references/domain-features/ -
配置每个选中的子功能 —— 解释功能用途,若不可撤销则警告用户,获得用户确认后,按照域名文件中的精确设置步骤操作(涵盖五种类型:通过Data/Tooling API创建记录、通过切换写入流程操作
references/domain-features/切换、应用/控制台设置、Experience Cloud门户设置、OmniStudio激活——包含每个子功能的端点、请求体格式、注意事项和验证方式)。切换操作遵循与域名切换相同的不可撤销+读取→写入→冷验证规则;若阶段1.5中已设置,先执行冷读取。若API调用失败,切换为参考文档中的Setup UI方式。IndustriesSettings -
总结 —— 所有子功能配置完成后,列出已启用的功能及其启用方式(API、UI、OmniStudio)。报告任何失败或需要手动完成的步骤。若建议后续步骤,仅列出本次会话中实际出现的阻碍/依赖项(例如仍未启用的前置条件、用户询问但推迟配置的子功能)——而非不相关的所有相关功能或域名的通用列表。
Rules / Constraints
规则/约束
| Constraint | Rationale |
|---|---|
| Foundation, Person Accounts, OmniStudio, and Business Rules Engine must be enabled before any domain | Domains depend on these foundation objects/settings, and on OmniStudio/BRE for portal components and policy rules |
| Always confirm with user before each step and explain what a feature does first | Conversational workflow pattern — no commands without explicit user approval or understanding |
| Wait for user confirmation after UI fallback steps, and cold-verify after every enablement | Never assume success — re-read state (tooling GET, describe, record GET, or |
| Check domain-specific prerequisites before domain enablement | Some domains need added licenses or a prior domain already configured |
Use the | Deterministic, fast, no org call/credentials — run the equivalent comparison inline only if no Bash tool is available |
| 约束 | 理由 |
|---|---|
| 基础设置、Person Accounts、OmniStudio和Business Rules Engine必须在任何域名配置前启用 | 域名依赖这些基础对象/设置,且OmniStudio/BRE用于门户组件和策略规则 |
| 每一步操作前必须获得用户确认,并先解释功能用途 | 对话式工作流模式——无明确用户批准或理解的情况下不得执行命令 |
| UI备选步骤后等待用户确认,每次启用后进行冷验证 | 绝不假设操作成功——重新读取状态(tooling GET、describe、记录GET或通过 |
| 域名启用前检查域名专属前置条件 | 部分域名需要额外许可证或已配置的其他域名 |
阶段0检查使用 | 确定性强、速度快,无需调用组织/提供凭据——仅当无Bash工具时才执行等效的内联比较 |
Gotchas
常见问题
| Issue | Resolution |
|---|---|
| Education Cloud license not provisioned | Contact Salesforce account team to provision the license before proceeding |
| Person Accounts, Education Cloud Foundation, and domain toggles cannot be disabled once ON | Warn user before attempting enablement — this is a one-way operation |
| Not in the ORG_PREFERENCES allowlist — write via |
Tooling sObject | complexvalue fields reject PATCH — use the headless metadata PUT path; tooling GET is for read/verify only |
Tooling GET needs the real | Query |
| Domain/sub-feature enablement may take 1-2 minutes to propagate | If verification returns nothing right after the API call, wait 2-3 minutes and retry |
See for the AURA-IS-CANONICAL silent no-op, cold-verify 500, and license-gating failure classes, and for lower-frequency gotchas.
references/toggle-write-path.mdreferences/gotchas-extended.md| 问题 | 解决方案 |
|---|---|
| Education Cloud许可证未配置 | 联系Salesforce客户团队配置许可证后再继续 |
| Person Accounts、Education Cloud Foundation和域名开关启用后无法关闭 | 操作前警告用户——此为单向操作 |
EDU切换调用 | 不在ORG_PREFERENCES白名单中——改用 |
对 | 复杂值字段拒绝PATCH请求——使用headless元数据PUT路径;Tooling GET仅用于读取/验证 |
Tooling GET需要真实的 | 先执行 |
| 域名/子功能启用可能需要1-2分钟才能生效 | 若API调用后验证无结果,等待2-3分钟后重试 |
请查阅获取AURA-IS-CANONICAL静默无操作、冷验证500错误和许可证限制失败类型的详细信息,以及获取低频率出现的问题。
references/toggle-write-path.mdreferences/gotchas-extended.mdFinal Verification Checklist (Irreversible Writes)
最终验证清单(不可撤销写入)
Before reporting any of the following as complete, confirm both boxes for that write:
- Education Cloud Foundation — user was warned it cannot be turned off, and cold-verify (on a fresh read) passed after enabling.
educationCloudEnabled: true - Person Accounts — user was warned it cannot be disabled once enabled, and describe confirms
Account/IsPersonAccountfields are present.Person* - Each domain toggle enabled this session — user confirmed "cannot be turned off afterward" before the write, and the tooling GET cold-verify shows . (Object-describe in step 18 confirms object provisioning only — not a substitute for this cold-verify.)
Is<Domain>Enabled: true - Each irreversible sub-feature/dependent-feature toggle enabled this session — user confirmed before the write, and cold-verify shows the field is .
true
Do not include a feature in the final summary as "enabled" unless both its approval and cold-verify boxes are checked.
在报告以下任何操作完成前,需确认对应写入的两个条件均满足:
- Education Cloud Foundation —— 已警告用户无法关闭,且启用后冷验证(重新读取显示)通过。
educationCloudEnabled: true - Person Accounts —— 已警告用户启用后无法禁用,且describe确认存在
Account/IsPersonAccount字段。Person* - 本次会话启用的每个域名开关 —— 用户在写入前确认“无法关闭”,且tooling GET冷验证显示。(步骤18中的对象describe仅确认对象配置——不能替代此冷验证。)
Is<Domain>Enabled: true - 本次会话启用的每个不可撤销子功能/依赖功能开关 —— 用户在写入前确认,且冷验证显示字段为。
true
仅当批准和冷验证两个条件均满足时,才可在最终总结中将功能标记为“已启用”。
Output Expectations
输出预期
This skill produces no files — configuration happens via Setup navigation, CLI commands, or API calls. Expected outputs: conversational confirmation after each step, verification results showing configuration is active, error messages with suggested fixes on failure, and a final summary listing all configured features.
此Skill不生成文件——配置通过Setup导航、CLI命令或API调用完成。预期输出:每一步操作后的对话式确认、显示配置已激活的验证结果、失败时的错误信息及修复建议,以及列出所有已配置功能的最终总结。
Cross-Skill Integration
跨Skill集成
| Need | Delegate to |
|---|---|
| Create custom objects for Education Cloud | |
| Create custom fields on Education Cloud objects | |
| Generate validation rules | |
| Configure permission sets | |
| Deploy metadata packages | |
| 需求 | 委托给 |
|---|---|
| 为Education Cloud创建自定义对象 | |
| 在Education Cloud对象上创建自定义字段 | |
| 生成验证规则 | |
| 配置权限集 | |
| 部署元数据包 | |
Reference File Index
参考文件索引
| File | When to read |
|---|---|
| Index of per-domain reference files — start here to find the right file for the selected domain |
| Phase 2 step 14 (explain domain purpose), Phase 3 step 19 (identify sub-features), Phase 3 step 21 (sub-feature configuration setup paths and API preference names) |
| Phase 1.5 steps 11-12 (Setup Basics — present and configure Dependent Features before any domain), and whenever the user asks about a cross-product feature not owned by one domain — surface as "Set Up Dependent Features" and note domain overlap where relevant |
| When an error doesn't match one of the 10 entries in the Gotchas table above |
| Phase 0 step 1 (org edition check) |
| Phase 0 step 3 (Education Cloud license check) |
| Phase 0 step 4 (Education Cloud Full Access assignment check) |
| 文件 | 读取时机 |
|---|---|
| 域名参考文件索引——从此处开始查找对应域名的参考文件 |
| 阶段2步骤14(解释域名用途)、阶段3步骤19(确定子功能)、阶段3步骤21(子功能配置路径和API偏好名称) |
| 阶段1.5步骤11-12(设置基础——域名配置前展示并配置依赖功能),以及用户询问不属于任何域名的跨产品功能时——标记为“Set Up Dependent Features”并记录域名重叠情况 |
| 当错误与常见问题表中的10项不匹配时 |
| 阶段0步骤1(组织版本检查) |
| 阶段0步骤3(Education Cloud许可证检查) |
| 阶段0步骤4(Education Cloud Full Access权限分配检查) |