@salesforce/afv-skills 1.47.0 → 1.49.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/skills/education-cloud-domain-configure/SKILL.md +234 -0
- package/skills/education-cloud-domain-configure/references/dependent-features.md +198 -0
- package/skills/education-cloud-domain-configure/references/domain-features/academic-operations.md +386 -0
- package/skills/education-cloud-domain-configure/references/domain-features/alumni-relations.md +155 -0
- package/skills/education-cloud-domain-configure/references/domain-features/cross-domain-dependencies.md +18 -0
- package/skills/education-cloud-domain-configure/references/domain-features/industriessettings-toggle-reference.md +43 -0
- package/skills/education-cloud-domain-configure/references/domain-features/mentoring.md +198 -0
- package/skills/education-cloud-domain-configure/references/domain-features/recruitment-admissions.md +315 -0
- package/skills/education-cloud-domain-configure/references/domain-features/student-management.md +155 -0
- package/skills/education-cloud-domain-configure/references/domain-features/student-success.md +249 -0
- package/skills/education-cloud-domain-configure/references/domain-features.md +27 -0
- package/skills/education-cloud-domain-configure/references/gotchas-extended.md +23 -0
- package/skills/education-cloud-domain-configure/references/toggle-write-path.md +67 -0
- package/skills/education-cloud-domain-configure/scripts/check_license_provisioned.py +62 -0
- package/skills/education-cloud-domain-configure/scripts/check_org_edition.py +44 -0
- package/skills/education-cloud-domain-configure/scripts/check_permission_assigned.py +39 -0
- package/skills/education-cloud-multi-campus-configure/SKILL.md +2 -0
- package/skills/education-cloud-multi-campus-configure/references/foundation_prerequisites.md +4 -3
- package/skills/service-agentforce-channel-configure/SKILL.md +33 -28
- package/skills/service-agentforce-human-escalation-configure/SKILL.md +205 -0
- package/skills/service-agentforce-human-escalation-configure/assets/escalation-thresholds.instructions.md +37 -0
- package/skills/service-agentforce-human-escalation-configure/assets/force-app/main/default/flows/Human_Escalation_Outbound_Flow.flow-meta.xml +173 -0
- package/skills/service-agentforce-human-escalation-configure/assets/package.xml +8 -0
- package/skills/service-agentforce-human-escalation-configure/assets/sfdx-project.json +5 -0
- package/skills/service-agentforce-human-escalation-configure/references/classifier-contracts.md +103 -0
- package/skills/service-agentforce-human-escalation-configure/references/escalation-mechanism.md +63 -0
- package/skills/service-agentforce-human-escalation-configure/references/failure-policy.md +44 -0
- package/skills/service-agentforce-human-escalation-configure/references/nga-escalation.md +57 -0
- package/skills/service-agentforce-human-escalation-configure/references/runtime-verification.md +72 -0
- package/skills/service-agentforce-human-escalation-configure/scripts/classify-agent-active.mjs +49 -0
- package/skills/service-agentforce-human-escalation-configure/scripts/classify-nga-escalation.mjs +166 -0
- package/skills/service-agentforce-human-escalation-configure/scripts/extract-outbound-route.mjs +67 -0
- package/skills/service-agentforce-human-escalation-configure/scripts/patch-escalation-surfaces.mjs +131 -0
- package/skills/service-agentforce-human-escalation-configure/scripts/tests/__init__.py +0 -0
- package/skills/service-agentforce-human-escalation-configure/scripts/tests/_bootstrap.py +249 -0
- package/skills/service-agentforce-human-escalation-configure/scripts/tests/test_escalation_contracts.py +899 -0
- package/skills/service-agentforce-human-escalation-configure/scripts/verify-and-configure.sh +705 -0
- package/skills/service-agentforce-human-escalation-configure/scripts/verify-escalation-config.mjs +89 -0
- package/skills/service-de-channel-routing-configure/SKILL.md +13 -5
- package/skills/service-de-channel-routing-configure/scripts/tests/test_skill_contract.py +25 -0
- package/skills/service-itsm-agentic-setup-agentforce-coordinate/SKILL.md +23 -10
- package/skills/service-itsm-agentic-setup-agentforce-coordinate/examples/output-templates.md +63 -48
- package/skills/service-itsm-agentic-setup-agentforce-coordinate/scripts/verify-child-verdict.mjs +6 -2
- package/skills/service-omni-agent-users-create/SKILL.md +96 -0
- package/skills/service-omni-agent-users-create/assets/create-users.apex.template +80 -0
- package/skills/service-omni-agent-users-create/references/apex-patterns.md +135 -0
- package/skills/service-omni-agent-users-create/references/apex-template-notes.md +40 -0
- package/skills/service-omni-agent-users-create/scripts/detect-and-create.sh +206 -0
- package/skills/service-omni-agent-users-create/scripts/detect-existing.sh +122 -0
- package/skills/service-omni-agent-users-create/scripts/run-create.sh +298 -0
- package/skills/service-omni-agent-users-create/scripts/tests/test_user_create_security.py +171 -0
- package/skills/service-omni-agent-work-sharing-configure/SKILL.md +78 -0
- package/skills/service-omni-agent-work-sharing-configure/references/api-notes.md +31 -0
- package/skills/service-omni-agent-work-sharing-configure/scripts/configure-and-report.sh +186 -0
- package/skills/service-omni-agent-work-sharing-configure/scripts/tests/_bootstrap.py +120 -0
- package/skills/service-omni-agent-work-sharing-configure/scripts/tests/test_agent_work_sharing_contracts.py +93 -0
- package/skills/service-omni-base-settings-configure/SKILL.md +77 -0
- package/skills/service-omni-base-settings-configure/assets/force-app/main/default/settings/OmniChannel.settings-meta.xml +8 -0
- package/skills/service-omni-base-settings-configure/assets/package.xml +8 -0
- package/skills/service-omni-base-settings-configure/assets/sfdx-project.json +12 -0
- package/skills/service-omni-base-settings-configure/references/api-notes.md +121 -0
- package/skills/service-omni-base-settings-configure/scripts/configure-and-report.sh +164 -0
- package/skills/service-omni-base-settings-configure/scripts/detect-existing.sh +69 -0
- package/skills/service-omni-channel-setup-coordinate/SKILL.md +168 -0
- package/skills/service-omni-channel-setup-coordinate/examples/output-templates.md +161 -0
- package/skills/service-omni-channel-setup-coordinate/references/gap-catalog.md +99 -0
- package/skills/service-omni-channel-setup-coordinate/scripts/integration-driver.sh +1542 -0
- package/skills/service-omni-channel-setup-coordinate/scripts/tests/__init__.py +0 -0
- package/skills/service-omni-channel-setup-coordinate/scripts/tests/_bootstrap.py +223 -0
- package/skills/service-omni-channel-setup-coordinate/scripts/tests/test_omni_contracts.py +804 -0
- package/skills/service-omni-command-center-analyze/SKILL.md +84 -0
- package/skills/service-omni-command-center-analyze/references/api-notes.md +54 -0
- package/skills/service-omni-command-center-analyze/scripts/analyze.sh +198 -0
- package/skills/service-omni-command-center-analyze/scripts/tests/_bootstrap.py +115 -0
- package/skills/service-omni-command-center-analyze/scripts/tests/test_command_center_analyze_contracts.py +165 -0
- package/skills/service-omni-permission-set-assign/SKILL.md +88 -0
- package/skills/service-omni-permission-set-assign/assets/package.xml +8 -0
- package/skills/service-omni-permission-set-assign/references/api-notes.md +143 -0
- package/skills/service-omni-permission-set-assign/scripts/verify-and-assign.sh +397 -0
- package/skills/service-omni-presence-status-deploy/SKILL.md +87 -0
- package/skills/service-omni-presence-status-deploy/assets/package.xml +12 -0
- package/skills/service-omni-presence-status-deploy/references/api-notes.md +115 -0
- package/skills/service-omni-presence-status-deploy/scripts/deploy-and-report.sh +422 -0
- package/skills/service-omni-presence-user-config-deploy/SKILL.md +80 -0
- package/skills/service-omni-presence-user-config-deploy/references/api-notes.md +60 -0
- package/skills/service-omni-presence-user-config-deploy/scripts/deploy-and-report.sh +261 -0
- package/skills/service-omni-presence-user-config-deploy/scripts/tests/_bootstrap.py +106 -0
- package/skills/service-omni-presence-user-config-deploy/scripts/tests/test_presence_user_config_contracts.py +142 -0
- package/skills/service-omni-queue-deploy/SKILL.md +91 -0
- package/skills/service-omni-queue-deploy/references/api-notes.md +140 -0
- package/skills/service-omni-queue-deploy/scripts/verify-and-align.sh +470 -0
- package/skills/service-omni-queue-members-assign/SKILL.md +93 -0
- package/skills/service-omni-queue-members-assign/references/api-notes.md +144 -0
- package/skills/service-omni-queue-members-assign/scripts/tests/_bootstrap.py +67 -0
- package/skills/service-omni-queue-members-assign/scripts/tests/test_queue_members_contracts.py +73 -0
- package/skills/service-omni-queue-members-assign/scripts/verify-and-bind.sh +362 -0
- package/skills/service-omni-queue-routing-config-deploy/SKILL.md +101 -0
- package/skills/service-omni-queue-routing-config-deploy/references/api-notes.md +127 -0
- package/skills/service-omni-queue-routing-config-deploy/scripts/tests/_bootstrap.py +90 -0
- package/skills/service-omni-queue-routing-config-deploy/scripts/tests/test_queue_routing_config_contracts.py +70 -0
- package/skills/service-omni-queue-routing-config-deploy/scripts/upsert-and-report.sh +538 -0
- package/skills/service-omni-routing-flow-deploy/SKILL.md +111 -0
- package/skills/service-omni-routing-flow-deploy/assets/force-app/main/default/flows/Omni_Route_Case_Trigger.SkillsBased.flow-meta.xml +94 -0
- package/skills/service-omni-routing-flow-deploy/assets/force-app/main/default/flows/Omni_Route_Case_Trigger.flow-meta.xml +88 -0
- package/skills/service-omni-routing-flow-deploy/assets/force-app/main/default/flows/Omni_Route_Cases.flow-meta.xml +144 -0
- package/skills/service-omni-routing-flow-deploy/assets/force-app/main/default/flows/Omni_Route_VoiceCall_Trigger.SkillsBased.flow-meta.xml +94 -0
- package/skills/service-omni-routing-flow-deploy/assets/force-app/main/default/flows/Omni_Route_VoiceCall_Trigger.flow-meta.xml +88 -0
- package/skills/service-omni-routing-flow-deploy/assets/force-app/main/default/flows/Omni_Route_VoiceCalls.flow-meta.xml +144 -0
- package/skills/service-omni-routing-flow-deploy/assets/package.xml +11 -0
- package/skills/service-omni-routing-flow-deploy/assets/sfdx-project.json +11 -0
- package/skills/service-omni-routing-flow-deploy/references/api-notes.md +265 -0
- package/skills/service-omni-routing-flow-deploy/scripts/deploy-and-report.sh +684 -0
- package/skills/service-omni-service-channel-configure/SKILL.md +83 -0
- package/skills/service-omni-service-channel-configure/assets/force-app/main/default/serviceChannels/Cases.serviceChannel-meta.xml +9 -0
- package/skills/service-omni-service-channel-configure/assets/force-app/main/default/serviceChannels/Incidents.serviceChannel-meta.xml +9 -0
- package/skills/service-omni-service-channel-configure/assets/force-app/main/default/serviceChannels/MessagingSessions.serviceChannel-meta.xml +9 -0
- package/skills/service-omni-service-channel-configure/assets/force-app/main/default/serviceChannels/VoiceCalls.serviceChannel-meta.xml +9 -0
- package/skills/service-omni-service-channel-configure/assets/package.xml +11 -0
- package/skills/service-omni-service-channel-configure/assets/sfdx-project.json +12 -0
- package/skills/service-omni-service-channel-configure/references/api-notes.md +84 -0
- package/skills/service-omni-service-channel-configure/scripts/deploy-and-report.sh +383 -0
- package/skills/service-omni-sidebar-configure/SKILL.md +77 -0
- package/skills/service-omni-sidebar-configure/references/api-notes.md +51 -0
- package/skills/service-omni-sidebar-configure/scripts/enable-and-report.sh +315 -0
- package/skills/service-omni-sidebar-configure/scripts/tests/_bootstrap.py +142 -0
- package/skills/service-omni-sidebar-configure/scripts/tests/test_sidebar_contracts.py +139 -0
- package/skills/service-omni-skills-based-routing-configure/SKILL.md +81 -0
- package/skills/service-omni-skills-based-routing-configure/references/api-notes.md +50 -0
- package/skills/service-omni-skills-based-routing-configure/scripts/configure-and-report.sh +270 -0
- package/skills/service-omni-skills-based-routing-configure/scripts/tests/_bootstrap.py +120 -0
- package/skills/service-omni-skills-based-routing-configure/scripts/tests/test_sbr_contracts.py +129 -0
- package/skills/service-omni-supervisor-config-deploy/SKILL.md +97 -0
- package/skills/service-omni-supervisor-config-deploy/assets/force-app/main/default/omniSupervisorConfigs/Omni_Supervisor.omniSupervisorConfig-meta.xml +9 -0
- package/skills/service-omni-supervisor-config-deploy/assets/package.xml +8 -0
- package/skills/service-omni-supervisor-config-deploy/assets/sfdx-project.json +12 -0
- package/skills/service-omni-supervisor-config-deploy/references/api-notes.md +205 -0
- package/skills/service-omni-supervisor-config-deploy/scripts/deploy-and-report.sh +586 -0
- package/skills/service-omni-supervisor-config-deploy/scripts/tests/_bootstrap.py +153 -0
- package/skills/service-omni-supervisor-config-deploy/scripts/tests/test_supervisor_config_contracts.py +116 -0
- package/skills/service-omni-supervisor-permset-assign/SKILL.md +88 -0
- package/skills/service-omni-supervisor-permset-assign/references/api-notes.md +48 -0
- package/skills/service-omni-supervisor-permset-assign/scripts/verify-and-assign.sh +316 -0
- package/skills/service-omni-supervisor-surface-deploy/SKILL.md +85 -0
- package/skills/service-omni-supervisor-surface-deploy/references/api-notes.md +47 -0
- package/skills/service-omni-supervisor-surface-deploy/scripts/deploy-and-report.sh +216 -0
- package/skills/service-omni-supervisor-surface-deploy/scripts/tests/_bootstrap.py +95 -0
- package/skills/service-omni-supervisor-surface-deploy/scripts/tests/test_supervisor_surface_contracts.py +154 -0
- package/skills/service-omni-supervisor-users-create/SKILL.md +92 -0
- package/skills/service-omni-supervisor-users-create/assets/create-supervisors.apex.template +72 -0
- package/skills/service-omni-supervisor-users-create/references/apex-patterns.md +73 -0
- package/skills/service-omni-supervisor-users-create/references/apex-template-notes.md +41 -0
- package/skills/service-omni-supervisor-users-create/scripts/detect-and-create.sh +197 -0
- package/skills/service-omni-supervisor-users-create/scripts/detect-existing.sh +112 -0
- package/skills/service-omni-supervisor-users-create/scripts/run-create.sh +296 -0
- package/skills/service-omni-work-skill-routing-configure/SKILL.md +80 -0
- package/skills/service-omni-work-skill-routing-configure/references/api-notes.md +67 -0
- package/skills/service-omni-work-skill-routing-configure/scripts/configure-and-report.sh +262 -0
- package/skills/service-omni-work-skill-routing-configure/scripts/tests/_bootstrap.py +121 -0
- package/skills/service-omni-work-skill-routing-configure/scripts/tests/test_work_skill_routing_contracts.py +161 -0
package/skills/education-cloud-domain-configure/references/domain-features/academic-operations.md
ADDED
|
@@ -0,0 +1,386 @@
|
|
|
1
|
+
# 3. Academic Operations
|
|
2
|
+
|
|
3
|
+
**Purpose**: Manage course catalog, section scheduling, enrollment, and academic calendar.
|
|
4
|
+
|
|
5
|
+
**Prerequisites**:
|
|
6
|
+
- All Foundation prerequisites (Section 0)
|
|
7
|
+
- OmniStudio — for course search and registration portal components
|
|
8
|
+
- Experience Cloud — for student-facing course registration portal
|
|
9
|
+
- Business Rules Engine — for Policy Rules Framework (enrollment eligibility, holds/blocks)
|
|
10
|
+
- Data Processing Engine — for academic data transformations
|
|
11
|
+
- SIS/LMS Integration (optional) — for external system sync
|
|
12
|
+
|
|
13
|
+
**Core features**:
|
|
14
|
+
- Course catalog management
|
|
15
|
+
- Section scheduling and capacity
|
|
16
|
+
- Enrollment tracking
|
|
17
|
+
- Prerequisites and corequisites
|
|
18
|
+
- Waitlist management
|
|
19
|
+
|
|
20
|
+
### Enablement & Toggles (executed order)
|
|
21
|
+
|
|
22
|
+
**Org context**: On `IndustriesSettings` metadata object, `fullName = Industries`. All feature toggles are `enableXXX` metadata elements (camelCase) with a matching flat read field `Is<X>Enabled`.
|
|
23
|
+
|
|
24
|
+
**Working method (this org)**:
|
|
25
|
+
|
|
26
|
+
- **Toggle write** (headless metadata):
|
|
27
|
+
```http
|
|
28
|
+
PUT /services/data/v68.0/headless/metadata
|
|
29
|
+
{"type":"IndustriesSettings","fullName":"Industries","xmlRep":"<?xml version=\"1.0\" encoding=\"UTF-8\"?><IndustriesSettings xmlns=\"http://soap.sforce.com/2006/04/metadata\"><ELEMENT>true</ELEMENT></IndustriesSettings>"}
|
|
30
|
+
```
|
|
31
|
+
- **Cold verify** (mandatory — `success:true` alone unreliable):
|
|
32
|
+
```http
|
|
33
|
+
GET /services/data/v68.0/tooling/sobjects/IndustriesSettings/bWRjLzBIRS9JbmR1c3RyaWVzU2V0dGluZ3M=
|
|
34
|
+
```
|
|
35
|
+
Check `.Metadata.<element>` == true AND flat `Is<X>Enabled` == true. Durable Id ends in raw `=` (not `%3D`). Result is large (~25 KB) — grep, don't full-read.
|
|
36
|
+
- Query endpoints (`/query`, `/tooling/query`) work via this router — pass the query through `queryParams: {"q": "SELECT ..."}`, NOT inlined as `?q=` in the URL (that 404s). On sObject GET, no `?fields=` param (router treats it as external-id path) — use `/describe` for field lists instead.
|
|
37
|
+
|
|
38
|
+
Order: Turn On Academic Operations → Automatically Validate Pathway Selections → Create Learning Achievement Record Types → Set Up Learning Achievement Configuration → Turn On Advanced Academic Operations → Enforce Time Conflicts → Configure Course Waitlists. `IndustriesSettings` toggles are IRREVERSIBLE; Course Waitlists (Step 7) is a separate, reversible CRUD object — see that step for its own write path. Try API first; fall back to manual UI on failure.
|
|
39
|
+
|
|
40
|
+
#### Step 1 — Turn On Academic Operations
|
|
41
|
+
|
|
42
|
+
**What it does**: Academic Operations — manage learner pathways, course catalog, learning achievements.
|
|
43
|
+
|
|
44
|
+
**Metadata element**: `enableAcademicOperations` (flat read: `IsAcademicOperationsEnabled`)
|
|
45
|
+
|
|
46
|
+
**API call**:
|
|
47
|
+
```http
|
|
48
|
+
PUT /services/data/v68.0/headless/metadata
|
|
49
|
+
{"type":"IndustriesSettings","fullName":"Industries","xmlRep":"<?xml version=\"1.0\" encoding=\"UTF-8\"?><IndustriesSettings xmlns=\"http://soap.sforce.com/2006/04/metadata\"><enableAcademicOperations>true</enableAcademicOperations></IndustriesSettings>"}
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
**Verification** (cold): GET IndustriesSettings → `.Metadata.enableAcademicOperations` == true AND `IsAcademicOperationsEnabled` == true.
|
|
53
|
+
|
|
54
|
+
**Sub-features** (enumerate + confirm with customer before proceeding): Automatically Validate Pathway Selections, Learning Achievement Record Types + Configuration, Advanced Academic Operations, Enforce Time Conflicts, Configure Course Waitlists.
|
|
55
|
+
|
|
56
|
+
---
|
|
57
|
+
|
|
58
|
+
#### Step 2 — Automatically Validate Pathway Selections
|
|
59
|
+
|
|
60
|
+
**What it does**: Automatically Validate Pathway Selections — validates prerequisite and corequisite requirements automatically when a learner drops a course in the pathway canvas. Off by default.
|
|
61
|
+
|
|
62
|
+
**Metadata element**: `enablePathwayPlannerRealTimeValidation` (flat read: `IsPathwayPlannerRealTimeValidationEnabled`)
|
|
63
|
+
|
|
64
|
+
**API call**:
|
|
65
|
+
```http
|
|
66
|
+
PUT /services/data/v68.0/headless/metadata
|
|
67
|
+
{"type":"IndustriesSettings","fullName":"Industries","xmlRep":"<?xml version=\"1.0\" encoding=\"UTF-8\"?><IndustriesSettings xmlns=\"http://soap.sforce.com/2006/04/metadata\"><enablePathwayPlannerRealTimeValidation>true</enablePathwayPlannerRealTimeValidation></IndustriesSettings>"}
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
**Verification** (cold): GET IndustriesSettings → `.Metadata.enablePathwayPlannerRealTimeValidation` == true AND `IsPathwayPlannerRealTimeValidationEnabled` == true.
|
|
71
|
+
|
|
72
|
+
**Note**: When ON, the "Verify Program Requirements" button does NOT appear in the Learner Pathway Builder — validation runs automatically.
|
|
73
|
+
|
|
74
|
+
---
|
|
75
|
+
|
|
76
|
+
#### Step 3 — Create Learning Achievement Record Types (CREATE)
|
|
77
|
+
|
|
78
|
+
**What it does**: Learning Achievement Record Types — the record types backing learning objects (courses, programs, achievement groups, skills, and custom types like degrees/diplomas).
|
|
79
|
+
|
|
80
|
+
**Announce every create** (approve / reject / modify) before executing.
|
|
81
|
+
|
|
82
|
+
**Object**: `RecordType` (Tooling API). SObjectType = `LearningAchievement`.
|
|
83
|
+
|
|
84
|
+
**API call** (per record type):
|
|
85
|
+
```http
|
|
86
|
+
POST /services/data/v68.0/tooling/sobjects/RecordType
|
|
87
|
+
{"FullName":"LearningAchievement.<DeveloperName>","Metadata":{"label":"<Label>","active":true,"description":"..."}}
|
|
88
|
+
```
|
|
89
|
+
- `active:true` = UI "Select Active" step.
|
|
90
|
+
- Picklists inherited from Master automatically.
|
|
91
|
+
- Profile permissions NOT settable via this shape — assign separately via perm sets/profiles.
|
|
92
|
+
- Returns record Id.
|
|
93
|
+
|
|
94
|
+
**Minimum**: create at least 3 (Learning Course, Learning Program, Achievement Group). This org created 6 (Skill skipped — `enableEDCSkillsGenerator` = false):
|
|
95
|
+
|
|
96
|
+
| Label | DeveloperName | RecordType Id (example — this org) |
|
|
97
|
+
|-------|---------------|--------------------------|
|
|
98
|
+
| Learning Course | Learning_Course | 012SB00000BRNBuYAP |
|
|
99
|
+
| Learning Program | Learning_Program | 012SB00000BRNYTYA5 |
|
|
100
|
+
| Achievement Group | Achievement_Group | 012SB00000BRNa5YAH |
|
|
101
|
+
| Achievement Group All | Achievement_Group_All | 012SB00000BRNbhYAH |
|
|
102
|
+
| Degree | Degree | 012SB00000BRNdJYAX |
|
|
103
|
+
| Diploma | Diploma | 012SB00000BRNevYAH |
|
|
104
|
+
|
|
105
|
+
Skipped: Skill (only needed if Einstein Skills Generator / `enableEDCSkillsGenerator` is on).
|
|
106
|
+
|
|
107
|
+
**Verification** (cold, per Id): GET `/services/data/v68.0/tooling/sobjects/RecordType/<Id>` → confirm `IsActive` == true, `SobjectType` == LearningAchievement, `Name`, `FullName` match.
|
|
108
|
+
|
|
109
|
+
---
|
|
110
|
+
|
|
111
|
+
#### Step 4 — Set Up Learning Achievement Configuration (CREATE)
|
|
112
|
+
|
|
113
|
+
**What it does**: Learning Achievement Configuration (Set Up Learning Achievement Types) — maps each Learning Achievement type to a Learning Achievement record type. Every learning achievement type requires ≥1 config record. Learning Course, Learning Program, and Achievement Group config records CAN'T be deleted.
|
|
114
|
+
|
|
115
|
+
**Prerequisite**: Learning Achievement record types created first (Step 3). Capture their Ids.
|
|
116
|
+
|
|
117
|
+
**Announce every create** (approve / reject / modify) before executing.
|
|
118
|
+
|
|
119
|
+
**Object**: `LearningAchievementConfig` (Data API + Tooling API). Key prefix `14y`.
|
|
120
|
+
|
|
121
|
+
**Create fields**:
|
|
122
|
+
- `MasterLabel` — Name (label)
|
|
123
|
+
- `DeveloperName` — API Name (unique, no spaces)
|
|
124
|
+
- `LearningAchievementType` — picklist. Values: `LearningCourse`, `LearningProgram`, `AchievementGroup`, `AchievementGroupAll`, `Skill`, `Custom`
|
|
125
|
+
- `LearningAchvRecordTypeId` — reference to RecordType (UNIQUE — one config per record type)
|
|
126
|
+
- Optional: `Description`, `IconName`
|
|
127
|
+
|
|
128
|
+
**API call** (per record):
|
|
129
|
+
```http
|
|
130
|
+
POST /services/data/v68.0/sobjects/LearningAchievementConfig
|
|
131
|
+
{"MasterLabel":"Learning Course","DeveloperName":"LearningCourse","LearningAchievementType":"LearningCourse","LearningAchvRecordTypeId":"<RecordTypeId>"}
|
|
132
|
+
```
|
|
133
|
+
Returns record Id (`14y...`).
|
|
134
|
+
|
|
135
|
+
**Standard mappings** (this org created 6; Skill skipped):
|
|
136
|
+
|
|
137
|
+
| Name (MasterLabel) | API Name (DeveloperName) | LearningAchievementType | Record Type | Config Id (example — this org) |
|
|
138
|
+
|--------------------|--------------------------|-------------------------|-------------|----------------------|
|
|
139
|
+
| Learning Course | LearningCourse | `LearningCourse` | Learning_Course | 14ySB0000001WvVYAU |
|
|
140
|
+
| Learning Program | LearningProgram | `LearningProgram` | Learning_Program | 14ySB0000001Wx7YAE |
|
|
141
|
+
| Achievement Group | AchievementGroup | `AchievementGroup` | Achievement_Group | 14ySB0000001WyjYAE |
|
|
142
|
+
| Achievement Group All | Achievement_Group_All | `AchievementGroupAll` | Achievement_Group_All | 14ySB0000001X0LYAU |
|
|
143
|
+
| Degree | Degree | `Custom` | Degree | 14ySB0000001X1xYAE |
|
|
144
|
+
| Diploma | Diploma | `Custom` | Diploma | 14ySB0000001X3ZYAU |
|
|
145
|
+
|
|
146
|
+
Notes:
|
|
147
|
+
- Rows 1-3 mandatory + non-deletable.
|
|
148
|
+
- Custom configs (Degree, Diploma) use type `Custom` — no dedicated picklist value.
|
|
149
|
+
- Skill config only if Einstein Skills Generator (`enableEDCSkillsGenerator`) is on.
|
|
150
|
+
|
|
151
|
+
**Verification** (cold, per Id): GET `/services/data/v68.0/sobjects/LearningAchievementConfig/<Id>` → confirm `LearningAchievementType` + `LearningAchvRecordTypeId` match intended mapping.
|
|
152
|
+
|
|
153
|
+
---
|
|
154
|
+
|
|
155
|
+
#### Step 5 — Turn On Advanced Academic Operations
|
|
156
|
+
|
|
157
|
+
**What it does**: Advanced Academic Operations — course search + registration for students. Includes SIS features: course registration, holds management, GPA calculation, and enrollment policy enforcement. Turning it on in Education Cloud lets you manage licenses/access, enable features per-student, monitor usage, and manage billing centrally.
|
|
158
|
+
|
|
159
|
+
**Prerequisites / dependencies**:
|
|
160
|
+
- Assign the **Education Cloud Advanced Academic Operations for Experience Cloud** permission set license to students → enables course registration, waitlists, and student portal features.
|
|
161
|
+
- Includes access to the **Business Rules Engine (BRE)** and **Expression Sets**, plus the quotas required to run them. EVERY feature in the Advanced Academic Operations feature set requires BRE and quota capacity.
|
|
162
|
+
- (These PSL assignment + BRE/quota provisioning steps are manual/admin work, outside this toggle.)
|
|
163
|
+
|
|
164
|
+
**Metadata element**: `enableEduAdvncdAcadOper` (flat read: `IsEduAdvncdAcadOperEnabled`)
|
|
165
|
+
|
|
166
|
+
**API call**:
|
|
167
|
+
```http
|
|
168
|
+
PUT /services/data/v68.0/headless/metadata
|
|
169
|
+
{"type":"IndustriesSettings","fullName":"Industries","xmlRep":"<?xml version=\"1.0\" encoding=\"UTF-8\"?><IndustriesSettings xmlns=\"http://soap.sforce.com/2006/04/metadata\"><enableEduAdvncdAcadOper>true</enableEduAdvncdAcadOper></IndustriesSettings>"}
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
**Verification** (cold): GET IndustriesSettings → `.Metadata.enableEduAdvncdAcadOper` == true AND `IsEduAdvncdAcadOperEnabled` == true.
|
|
173
|
+
|
|
174
|
+
**Note**: Related agent toggles (`enableCourseSearchAgent`, `enableCourseOpsAgent`) are separate Agentforce features, NOT part of this switch.
|
|
175
|
+
|
|
176
|
+
---
|
|
177
|
+
|
|
178
|
+
#### Step 6 — Enforce Time Conflicts
|
|
179
|
+
|
|
180
|
+
**What it does**: Enforce Time Conflicts — enforces time-conflict validation to prevent learners from registering for course offerings that have conflicting schedules.
|
|
181
|
+
|
|
182
|
+
**Metadata element**: `enableCosConflicts` (flat read: `IsCosConflictsEnabled`) (COS = Course Offering Schedule.)
|
|
183
|
+
|
|
184
|
+
**API call**:
|
|
185
|
+
```http
|
|
186
|
+
PUT /services/data/v68.0/headless/metadata
|
|
187
|
+
{"type":"IndustriesSettings","fullName":"Industries","xmlRep":"<?xml version=\"1.0\" encoding=\"UTF-8\"?><IndustriesSettings xmlns=\"http://soap.sforce.com/2006/04/metadata\"><enableCosConflicts>true</enableCosConflicts></IndustriesSettings>"}
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
**Verification** (cold): GET IndustriesSettings → `.Metadata.enableCosConflicts` == true AND `IsCosConflictsEnabled` == true.
|
|
191
|
+
|
|
192
|
+
---
|
|
193
|
+
|
|
194
|
+
#### Step 7 — Configure Course Waitlists
|
|
195
|
+
|
|
196
|
+
**What it does**: Course Waitlists — configures waitlist ranking rules (`WaitlistPosition`) and the enrollment-offer acceptance window (`EnrollmentOfferExpiration`) that drive course-waitlist behavior org-wide.
|
|
197
|
+
|
|
198
|
+
**Object**: `CourseWaitlistConfig` — NOT an `IndustriesSettings` toggle; its own setup object with a dedicated Aura-backed API (confirmed live on this org — `GET` below returned `200`). **AURA-IS-CANONICAL**: the controller maintains the `WaitlistPositionFieldOrder` sibling cascade server-side (insert shifts higher rows +1, update reorders the affected window, delete compacts to a contiguous `1..N`) — a raw Tooling Insert/Update/Delete or Metadata XML deploy lands the row but breaks that invariant. Use the endpoints below, not a generic sObject/Tooling write.
|
|
199
|
+
|
|
200
|
+
**Read existing configs first** (ordered by `WaitlistPositionFieldOrder` ASC):
|
|
201
|
+
```http
|
|
202
|
+
GET /headless/invoke/platform/course-waitlist-config
|
|
203
|
+
```
|
|
204
|
+
Returns `[]` when no rows exist yet. Each row: `Id`, `DeveloperName`, `MasterLabel`, `Type` (`WaitlistPosition` | `EnrollmentOfferExpiration`), `Value`, `WaitlistPositionFieldOrder`, `SortOrder`.
|
|
205
|
+
|
|
206
|
+
**Create**:
|
|
207
|
+
```http
|
|
208
|
+
PATCH /headless/invoke/platform/course-waitlist-config/create-course-waitlist-config
|
|
209
|
+
{"developerName": "<name>", "masterLabel": "<label>", "type": "WaitlistPosition", "value": "<value>", "waitlistPositionFieldOrder": <int>, "sortOrder": "Ascending"}
|
|
210
|
+
```
|
|
211
|
+
Returns `{"success": true, "recordId": "<id>"}`. When `type = WaitlistPosition` and `waitlistPositionFieldOrder` is set, the controller shifts every sibling row at-or-above the new position by +1 before inserting.
|
|
212
|
+
|
|
213
|
+
**Update** (by `recordId` from the read step; `developerName`/`type` are immutable post-create):
|
|
214
|
+
```http
|
|
215
|
+
PATCH /headless/invoke/platform/course-waitlist-config/update-course-waitlist-config
|
|
216
|
+
{"recordId": "<id>", "masterLabel": "<label>", "value": "<value>", "waitlistPositionFieldOrder": <int>, "sortOrder": "Ascending"}
|
|
217
|
+
```
|
|
218
|
+
Changing `waitlistPositionFieldOrder` reorders every sibling row in the affected window server-side.
|
|
219
|
+
|
|
220
|
+
**Delete** (by `recordId`):
|
|
221
|
+
```http
|
|
222
|
+
DELETE /headless/invoke/platform/course-waitlist-config/delete-course-waitlist-config
|
|
223
|
+
```
|
|
224
|
+
`queryParams: {"recordId": "<id>"}`. If the deleted row was `Type = WaitlistPosition`, remaining `WaitlistPosition` rows are compacted to a contiguous `1..N` sequence.
|
|
225
|
+
|
|
226
|
+
**Verification** (cold, after any write): re-run the GET above and confirm the row is present/absent/updated as expected — for `WaitlistPosition` changes, also confirm sibling `WaitlistPositionFieldOrder` values reflect the cascade (no gaps, no duplicates).
|
|
227
|
+
|
|
228
|
+
**Preconditions**: Academic Operations enabled (Step 1 of this section) + `AccessEducationCloud` user permission; create/update/delete additionally require admin access (edit/create/delete all require `isAdminUser`).
|
|
229
|
+
|
|
230
|
+
---
|
|
231
|
+
|
|
232
|
+
### Sub-Feature Configuration
|
|
233
|
+
|
|
234
|
+
#### Step 1 — Create Learning Programs
|
|
235
|
+
|
|
236
|
+
**What it does**: Creates Learning Program records for each degree/certificate/program.
|
|
237
|
+
|
|
238
|
+
**Setup path**:
|
|
239
|
+
1. Navigate to Academic Operations App → Learning Programs
|
|
240
|
+
2. Click New
|
|
241
|
+
3. Create Learning Program record:
|
|
242
|
+
- Program Name: "Bachelor of Science in Computer Science"
|
|
243
|
+
- Academic Level: Bachelor's
|
|
244
|
+
- Credit Hours Required: 120
|
|
245
|
+
- Link to Business Account (Department or College)
|
|
246
|
+
4. Configure program prerequisites and requirements
|
|
247
|
+
5. Save
|
|
248
|
+
6. Repeat for each degree/certificate/program
|
|
249
|
+
|
|
250
|
+
**API approach** (try first):
|
|
251
|
+
```http
|
|
252
|
+
POST /services/data/v68.0/sobjects/LearningProgram__c
|
|
253
|
+
{"Name": "Bachelor of Science in Computer Science", "AcademicLevel__c": "Bachelors", "CreditHours__c": 120, "BusinessAccount__c": "<Dept_Account_ID>"}
|
|
254
|
+
```
|
|
255
|
+
|
|
256
|
+
**Verification** (read back by the Id captured at creation — a SOQL `SELECT Id FROM <Object> WHERE ...` via `queryParams` also works if you need to re-find the record later):
|
|
257
|
+
```http
|
|
258
|
+
GET /services/data/v68.0/sobjects/LearningProgram__c/<id-captured-from-create-response>
|
|
259
|
+
```
|
|
260
|
+
|
|
261
|
+
---
|
|
262
|
+
|
|
263
|
+
#### Step 2 — Configure Course Search and Registration
|
|
264
|
+
|
|
265
|
+
**What it does**: Activates Course Search OmniScript and FlexCards, configures search filters.
|
|
266
|
+
|
|
267
|
+
**Setup path**:
|
|
268
|
+
1. Navigate to Setup → OmniStudio → OmniScripts
|
|
269
|
+
2. Activate Course Search OmniScript
|
|
270
|
+
3. Navigate to Setup → OmniStudio → FlexCards
|
|
271
|
+
4. Activate Course Search FlexCards
|
|
272
|
+
5. Configure search filters:
|
|
273
|
+
- Term
|
|
274
|
+
- Department
|
|
275
|
+
- Level (100, 200, 300, 400)
|
|
276
|
+
- Availability (open seats)
|
|
277
|
+
6. Add Course Search component to the student-facing portal (Experience Cloud)
|
|
278
|
+
|
|
279
|
+
**Verification**: Navigate to portal URL and verify Course Search component loads.
|
|
280
|
+
|
|
281
|
+
---
|
|
282
|
+
|
|
283
|
+
#### Step 3 — Configure Enrollment Eligibility (Policy Rules Framework)
|
|
284
|
+
|
|
285
|
+
**What it does**: Creates enrollment eligibility rules using Business Rules Engine.
|
|
286
|
+
|
|
287
|
+
**Setup path**:
|
|
288
|
+
1. Navigate to Setup → Business Rules Engine
|
|
289
|
+
2. Create enrollment eligibility rules:
|
|
290
|
+
- Credit hour minimum/maximum (e.g., full-time = 12-18 credits)
|
|
291
|
+
- Academic standing requirements (e.g., GPA ≥ 2.0 for enrollment)
|
|
292
|
+
- Prerequisite completion checks
|
|
293
|
+
3. Activate rules
|
|
294
|
+
4. Link to enrollment workflow
|
|
295
|
+
|
|
296
|
+
**Verification**: Test enrollment with test student to confirm rules enforce.
|
|
297
|
+
|
|
298
|
+
---
|
|
299
|
+
|
|
300
|
+
#### Step 4 — Configure Holds and Blocks
|
|
301
|
+
|
|
302
|
+
**What it does**: Defines hold types and configures which holds block enrollment.
|
|
303
|
+
|
|
304
|
+
**Setup path**:
|
|
305
|
+
1. Navigate to Academic Operations App → Holds and Blocks
|
|
306
|
+
2. Define hold types:
|
|
307
|
+
- Financial hold (unpaid balance)
|
|
308
|
+
- Academic hold (probation/suspension)
|
|
309
|
+
- Administrative hold (missing documents)
|
|
310
|
+
3. Configure which holds block enrollment
|
|
311
|
+
4. Assign roles that can place/remove holds
|
|
312
|
+
5. Save
|
|
313
|
+
|
|
314
|
+
**Verification**: `GET /services/data/v68.0/query` with `queryParams: {"q": "SELECT Id, Name FROM Hold__c"}` (add a `WHERE Name = '...'` filter once the exact hold-type field name is confirmed via describe — no need to ask the user for a raw Id). Describe the object (`GET /services/data/v68.0/sobjects/Hold__c/describe`) first to confirm the actual field names/record types.
|
|
315
|
+
|
|
316
|
+
---
|
|
317
|
+
|
|
318
|
+
#### Step 5 — Configure Course Waitlists
|
|
319
|
+
|
|
320
|
+
**What it does**: Enables waitlist functionality per course offering and sets automatic promotion rules.
|
|
321
|
+
|
|
322
|
+
**Setup path**:
|
|
323
|
+
1. Navigate to Academic Operations App → Course Offerings
|
|
324
|
+
2. Edit course offering record
|
|
325
|
+
3. Enable waitlist functionality
|
|
326
|
+
4. Set waitlist capacity (e.g., max 10 students on waitlist)
|
|
327
|
+
5. Set automatic promotion rules (e.g., promote next student when seat opens)
|
|
328
|
+
6. Save
|
|
329
|
+
|
|
330
|
+
**Verification**: Check Course Offering record has waitlist enabled.
|
|
331
|
+
|
|
332
|
+
---
|
|
333
|
+
|
|
334
|
+
#### Step 6 — Set Up Petitions and Waivers
|
|
335
|
+
|
|
336
|
+
**What it does**: Configures petition record types and assigns review/approval workflows.
|
|
337
|
+
|
|
338
|
+
**Setup path**:
|
|
339
|
+
1. Navigate to Setup → Object Manager → Petition__c
|
|
340
|
+
2. Create petition record types:
|
|
341
|
+
- Course waiver
|
|
342
|
+
- Prerequisite waiver
|
|
343
|
+
- Enrollment exception
|
|
344
|
+
3. Assign review and approval workflows per record type
|
|
345
|
+
4. Link to student academic record
|
|
346
|
+
5. Save
|
|
347
|
+
|
|
348
|
+
**Verification**: `GET /services/data/v68.0/tooling/query` with `queryParams: {"q": "SELECT Id, Name, SobjectType FROM RecordType WHERE SobjectType='Petition__c'"}` — confirm each created record type by Name. Or describe the object (`GET /services/data/v68.0/sobjects/Petition__c/describe`) to confirm via `recordTypeInfos`.
|
|
349
|
+
|
|
350
|
+
---
|
|
351
|
+
|
|
352
|
+
#### Step 7 — Configure Transfer Credit Management
|
|
353
|
+
|
|
354
|
+
**What it does**: Defines transfer credit equivalency rules and configures review workflow.
|
|
355
|
+
|
|
356
|
+
**Setup path**:
|
|
357
|
+
1. Navigate to Academic Operations App → Transfer Credits
|
|
358
|
+
2. Define transfer credit equivalency rules (e.g., CS-101 at Community College = CS-101 at University)
|
|
359
|
+
3. Configure transfer credit review workflow
|
|
360
|
+
4. Link approved transfer credits to student's degree plan
|
|
361
|
+
5. Save
|
|
362
|
+
|
|
363
|
+
**Verification**: `GET /services/data/v68.0/query` with `queryParams: {"q": "SELECT Id, Name FROM TransferCredit__c"}` (add a `WHERE` filter on the relevant lookup/field once confirmed via describe — no need to ask the user for a raw Id). Describe the object (`GET /services/data/v68.0/sobjects/TransferCredit__c/describe`) first to confirm field names/record types.
|
|
364
|
+
|
|
365
|
+
---
|
|
366
|
+
|
|
367
|
+
#### Step 8 — Set Up Intelligent Degree Planning
|
|
368
|
+
|
|
369
|
+
**What it does**: Enables Degree Planning feature and configures degree plan templates per Learning Program.
|
|
370
|
+
|
|
371
|
+
**Setup path**:
|
|
372
|
+
1. Navigate to Setup → Education Cloud Settings
|
|
373
|
+
2. Enable Degree Planning feature toggle
|
|
374
|
+
3. Navigate to Academic Operations App → Degree Plan Templates
|
|
375
|
+
4. Configure degree plan templates per Learning Program:
|
|
376
|
+
- Link to Learning Program
|
|
377
|
+
- Add required courses
|
|
378
|
+
- Add elective requirements
|
|
379
|
+
5. Link to Course Catalog and Academic Calendar
|
|
380
|
+
6. Add Degree Planning component to Learner Portal (Experience Cloud)
|
|
381
|
+
7. Save
|
|
382
|
+
|
|
383
|
+
**Verification**: Navigate to Learner Portal and verify Degree Planning component loads for student users.
|
|
384
|
+
|
|
385
|
+
---
|
|
386
|
+
|
package/skills/education-cloud-domain-configure/references/domain-features/alumni-relations.md
ADDED
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
# 4. Alumni Relations
|
|
2
|
+
|
|
3
|
+
**Purpose**: Track alumni engagement, giving campaigns, events, and networking.
|
|
4
|
+
|
|
5
|
+
**Prerequisites**:
|
|
6
|
+
- All Foundation prerequisites (Section 0)
|
|
7
|
+
- Experience Cloud — for alumni-facing portal and profile components
|
|
8
|
+
- Fundraising license — for gift management features (optional)
|
|
9
|
+
- Marketing Cloud Engagement for Education (optional) — for alumni email campaigns
|
|
10
|
+
- Donor Support Agent / Philanthropic Research Agent (optional) — requires Agentforce add-on license + Einstein GenAI
|
|
11
|
+
|
|
12
|
+
**Core features**:
|
|
13
|
+
- Alumni records (Person Accounts)
|
|
14
|
+
- Engagement tracking
|
|
15
|
+
- Giving campaigns and donations
|
|
16
|
+
- Event management
|
|
17
|
+
- Volunteer opportunities
|
|
18
|
+
|
|
19
|
+
### Sub-Feature Configuration
|
|
20
|
+
|
|
21
|
+
#### Step 1 — Configure Alumni Profiles and Data
|
|
22
|
+
|
|
23
|
+
**What it does**: Converts or tags existing Contact records with alumni record type and configures alumni-specific fields.
|
|
24
|
+
|
|
25
|
+
**Setup path**:
|
|
26
|
+
1. Navigate to Setup → Object Manager → Account (Person Account)
|
|
27
|
+
2. Create Alumni record type if not exists
|
|
28
|
+
3. Assign Alumni record type to existing Contact records or create new
|
|
29
|
+
4. Configure alumni-specific fields:
|
|
30
|
+
- Graduation year
|
|
31
|
+
- Degree
|
|
32
|
+
- Department
|
|
33
|
+
- Employer
|
|
34
|
+
- Industry
|
|
35
|
+
5. Set up RFM (Recency, Frequency, Monetary) scoring for donor segmentation
|
|
36
|
+
|
|
37
|
+
**Verification**: `GET /services/data/v68.0/query` with `queryParams: {"q": "SELECT Id, Name FROM Account WHERE RecordType.Name='Alumni'"}` — no need to ask the user for a raw Id. Describe the object (`GET /services/data/v68.0/sobjects/Account/describe`) as a fallback to confirm fields/record types.
|
|
38
|
+
|
|
39
|
+
---
|
|
40
|
+
|
|
41
|
+
#### Step 2 — Set Up Alumni Engagement Tracking
|
|
42
|
+
|
|
43
|
+
**What it does**: Configures interaction/engagement record types and engagement scoring rules.
|
|
44
|
+
|
|
45
|
+
**Setup path**:
|
|
46
|
+
1. Navigate to Alumni Relations Console → Engagement tab
|
|
47
|
+
2. Configure interaction/engagement record types:
|
|
48
|
+
- Event attendance
|
|
49
|
+
- Donation
|
|
50
|
+
- Volunteer activity
|
|
51
|
+
- Mentoring participation
|
|
52
|
+
3. Set up engagement scoring rules (e.g., event attendance = 10 points, donation = 50 points)
|
|
53
|
+
4. Link engagements to alumni Contact records
|
|
54
|
+
5. Save
|
|
55
|
+
|
|
56
|
+
**Verification**: `GET /services/data/v68.0/tooling/query` with `queryParams: {"q": "SELECT Id, Name, SobjectType FROM RecordType WHERE SobjectType='Engagement__c'"}` to confirm the configured record types, plus `GET /services/data/v68.0/query` with `queryParams: {"q": "SELECT Id, Name FROM Engagement__c"}` to spot-check records — no need to ask the user for a raw Id. Describe the object (`GET /services/data/v68.0/sobjects/Engagement__c/describe`) as a fallback to confirm fields/record types.
|
|
57
|
+
|
|
58
|
+
---
|
|
59
|
+
|
|
60
|
+
#### Step 3 — Set Up the Alumni Portal (Experience Cloud)
|
|
61
|
+
|
|
62
|
+
**What it does**: Deploys alumni-facing portal with profile components, event registration, mentoring sign-up, giving forms.
|
|
63
|
+
|
|
64
|
+
**Setup path**:
|
|
65
|
+
1. Navigate to Setup → Digital Experiences → All Sites
|
|
66
|
+
2. Create new Experience Cloud site or configure existing site
|
|
67
|
+
3. Add alumni profile components:
|
|
68
|
+
- Bio
|
|
69
|
+
- Career info
|
|
70
|
+
- Giving history
|
|
71
|
+
- Engagement score
|
|
72
|
+
4. Add engagement features:
|
|
73
|
+
- Event registration
|
|
74
|
+
- Mentoring sign-up
|
|
75
|
+
- Giving forms
|
|
76
|
+
- Volunteer opportunities
|
|
77
|
+
5. Publish and activate the portal
|
|
78
|
+
|
|
79
|
+
**Verification**: Navigate to portal URL and verify components load for alumni users.
|
|
80
|
+
|
|
81
|
+
---
|
|
82
|
+
|
|
83
|
+
#### Step 4 — Configure Fundraising (if licensed)
|
|
84
|
+
|
|
85
|
+
**What it does**: Sets up Gift Commitment, Gift Transaction, and Gift Entry workflows.
|
|
86
|
+
|
|
87
|
+
**Setup path**:
|
|
88
|
+
1. Navigate to Alumni Relations Console → Fundraising tab
|
|
89
|
+
2. Set up Gift Commitment record types
|
|
90
|
+
3. Configure Gift Transaction workflows
|
|
91
|
+
4. Configure Gift Entry workflows
|
|
92
|
+
5. Set up Gift Processing rules and approvals
|
|
93
|
+
6. Link giving data to Donor Profiles
|
|
94
|
+
7. Save
|
|
95
|
+
|
|
96
|
+
**Verification**: `GET /services/data/v68.0/tooling/query` with `queryParams: {"q": "SELECT Id, Name, SobjectType FROM RecordType WHERE SobjectType='GiftCommitment__c'"}` to confirm the configured record types, plus `GET /services/data/v68.0/query` with `queryParams: {"q": "SELECT Id, Name FROM GiftCommitment__c"}` to spot-check records — no need to ask the user for a raw Id. Describe the object (`GET /services/data/v68.0/sobjects/GiftCommitment__c/describe`) as a fallback to confirm fields/record types.
|
|
97
|
+
|
|
98
|
+
---
|
|
99
|
+
|
|
100
|
+
#### Step 5 — Set Up Donor Profiles and Briefs
|
|
101
|
+
|
|
102
|
+
**What it does**: Configures Donor Profile page layout with giving history, engagement scores, and relationship data.
|
|
103
|
+
|
|
104
|
+
**Setup path**:
|
|
105
|
+
1. Navigate to Setup → Object Manager → Account (Person Account)
|
|
106
|
+
2. Edit Alumni record type page layout
|
|
107
|
+
3. Add Donor Profile section with:
|
|
108
|
+
- Giving history
|
|
109
|
+
- Engagement scores
|
|
110
|
+
- Relationship data
|
|
111
|
+
- Philanthropic interests
|
|
112
|
+
4. Enable Philanthropic Research data integration if available
|
|
113
|
+
5. Configure Donor Briefs for major gift officers
|
|
114
|
+
6. Save
|
|
115
|
+
|
|
116
|
+
**Verification**: Check Alumni record page shows Donor Profile section.
|
|
117
|
+
|
|
118
|
+
---
|
|
119
|
+
|
|
120
|
+
#### Step 6 — Configure Reporting and Insights
|
|
121
|
+
|
|
122
|
+
**What it does**: Activates Education Analytics dashboards for Advancement and configures alumni engagement KPIs.
|
|
123
|
+
|
|
124
|
+
**Setup path**:
|
|
125
|
+
1. Navigate to Setup → Analytics → Education Analytics
|
|
126
|
+
2. Activate dashboards for Advancement:
|
|
127
|
+
- Alumni Engagement KPIs
|
|
128
|
+
- Fundraising pipeline reports
|
|
129
|
+
- Donor retention metrics
|
|
130
|
+
3. Link to CRM Analytics for Advisor-style insights on donor behavior
|
|
131
|
+
4. Save
|
|
132
|
+
|
|
133
|
+
**Verification**: Check Analytics Studio shows Education Analytics dashboards.
|
|
134
|
+
|
|
135
|
+
---
|
|
136
|
+
|
|
137
|
+
#### Step 7 — (Optional) Set Up Marketing Cloud Engagement for Alumni
|
|
138
|
+
|
|
139
|
+
**What it does**: Connects Marketing Cloud Engagement to Salesforce org and configures alumni email journeys.
|
|
140
|
+
|
|
141
|
+
**Setup path**:
|
|
142
|
+
1. Navigate to Setup → Integrations → Marketing Cloud Engagement
|
|
143
|
+
2. Configure Marketing Cloud connection (API credentials)
|
|
144
|
+
3. Configure alumni email journeys:
|
|
145
|
+
- Event invites
|
|
146
|
+
- Giving campaigns
|
|
147
|
+
- Newsletters
|
|
148
|
+
- Reunion reminders
|
|
149
|
+
4. Sync alumni segments from Education Cloud to Marketing Cloud
|
|
150
|
+
5. Activate journeys
|
|
151
|
+
|
|
152
|
+
**Verification**: Check Marketing Cloud shows synced alumni segments.
|
|
153
|
+
|
|
154
|
+
---
|
|
155
|
+
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# Cross-Domain Dependencies
|
|
2
|
+
|
|
3
|
+
| Dependency | Required By |
|
|
4
|
+
|-----------|-------------|
|
|
5
|
+
| Person Accounts | All domains (student data model) |
|
|
6
|
+
| OmniStudio (FlexCards, OmniScripts) | Student Success, Recruitment & Admissions, Academic Operations, Mentoring |
|
|
7
|
+
| Experience Cloud | All student/alumni/applicant portals |
|
|
8
|
+
| Business Rules Engine | Academic Operations (enrollment eligibility) |
|
|
9
|
+
| Data Processing Engine | Academic Operations (data transforms) |
|
|
10
|
+
| Salesforce Scheduler | Student Success (advising), Recruitment & Admissions (campus tours) |
|
|
11
|
+
| CRM Analytics | Student Success (Advisor Insights), Alumni Relations (engagement dashboards) |
|
|
12
|
+
| Einstein Generative AI | Advising Summary, Agentforce agents |
|
|
13
|
+
| Agentforce + add-on license | Student Recruitment Agent, Student Advising Agent, Course Search Agent, Donor Support Agent |
|
|
14
|
+
| Fundraising license | Alumni Relations (gift management) |
|
|
15
|
+
| Marketing Cloud Engagement | Recruitment & Admissions (prospect nurture), Alumni Relations (campaigns) |
|
|
16
|
+
|
|
17
|
+
---
|
|
18
|
+
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# IndustriesSettings Toggle Fields — Quick Reference
|
|
2
|
+
|
|
3
|
+
All EDU toggles are `enableXXX` fields inside the `IndustriesSettings` settings file (NOT ORG_PREFERENCES). Write via `PUT /services/data/v68.0/headless/metadata` (see SKILL.md **Domain & Feature Toggle Write Path**). All are one-way (`false → true` only).
|
|
4
|
+
|
|
5
|
+
| Feature | `IndustriesSettings` field |
|
|
6
|
+
|---------|----------------------------|
|
|
7
|
+
| Education Cloud (Foundation) | `enableEducationCloud` |
|
|
8
|
+
| Student Success | `enableStudentSuccess` |
|
|
9
|
+
| Academic Operations | `enableAcademicOperations` |
|
|
10
|
+
| Mentoring | `enableMentoring` |
|
|
11
|
+
| Alumni Relations | `enableAlumniRelations` |
|
|
12
|
+
| Recruitment & Admissions | `enableRNADynamicApplications` |
|
|
13
|
+
| Student Management | `enableStudentManagement` |
|
|
14
|
+
| Financial Aid | `enableFinancialAid` |
|
|
15
|
+
| Fundraising | `enableFundraising` |
|
|
16
|
+
| Corporate Relations | `enableCorporateRelations` |
|
|
17
|
+
| Outcomes | `enableOutcomes` |
|
|
18
|
+
| Program Cohorts | `enableProgramCohorts` |
|
|
19
|
+
| Student Goals | `enableStudentGoals` |
|
|
20
|
+
| Care Plans | `enableCarePlansPreference` (NOT `enableCarePlans` → `FIELD_INTEGRITY_EXCEPTION`); verify `IsCarePlansPreferenceEnabled` |
|
|
21
|
+
| Support Programs — Benefit Management | `enableBenefitManagementPreference` |
|
|
22
|
+
| Support Programs — Benefit/Goal Sharing | `enableBenefitAndGoalSharingPref` |
|
|
23
|
+
| Support Programs — Assign w/ inactive enrollment | `allowBenefitAssignmentWithInactiveProgramEnrollment` |
|
|
24
|
+
| Scheduler — Event Management | `enableEventManagementOrgPref` |
|
|
25
|
+
| Scheduler — Share SA with AR | `enableShareSaWithArOrgPref` |
|
|
26
|
+
| Academic Operations | `enableAcademicOperations`; verify `IsAcademicOperationsEnabled` |
|
|
27
|
+
| Validate Pathway Selections | `enablePathwayPlannerRealTimeValidation`; verify `IsPathwayPlannerRealTimeValidationEnabled` |
|
|
28
|
+
| Advanced Academic Operations | `enableEduAdvncdAcadOper`; verify `IsEduAdvncdAcadOperEnabled` (needs Adv Acad Ops PSL + BRE/quota — see Step 5) |
|
|
29
|
+
| Enforce Time Conflicts | `enableCosConflicts`; verify `IsCosConflictsEnabled` |
|
|
30
|
+
|
|
31
|
+
(~28 `enableXXX` fields total on `IndustriesSettings`.)
|
|
32
|
+
|
|
33
|
+
**Records (not toggles) — created via sObject/Tooling POST:**
|
|
34
|
+
|
|
35
|
+
| Record | Endpoint / shape | Gotcha |
|
|
36
|
+
|--------|------------------|--------|
|
|
37
|
+
| Support Process | `POST sobjects/BusinessProcess {Name, TableEnumOrId:"Case", Description}` | Do NOT send `IsActive` (INVALID_FIELD_FOR_INSERT_UPDATE); active by default |
|
|
38
|
+
| Case Record Type | `POST tooling/sobjects/RecordType {FullName:"Case.X", Metadata:{label,active,businessProcess,description}}` | `businessProcess` = BP **Name**; profile perms NOT applied via API |
|
|
39
|
+
| Case Team Template | `POST sobjects/CaseTeamTemplate {Name, Description}` | Prereq for SuccessTeam; reference by **Name** |
|
|
40
|
+
| Success Team | `POST sobjects/SuccessTeam {Name, CaseRecordTypeId, DefaultUnassignedCaseTeam, IsActive}` | `IsActive` IS writable; `DefaultUnassignedCaseTeam` = CaseTeamTemplate Name |
|
|
41
|
+
|
|
42
|
+
---
|
|
43
|
+
|