@salesforce/afv-skills 1.65.0 → 1.65.1
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/field-service-data-capture-form-deployer-configure/SKILL.md +2 -23
- package/skills/field-service-data-capture-form-designer-configure/SKILL.md +3 -13
- package/skills/field-service-mobile-branding-configure/SKILL.md +3 -17
- package/skills/field-service-objective-designer-configure/SKILL.md +379 -72
- package/skills/field-service-prework-brief-deployer-configure/SKILL.md +537 -10
- package/skills/field-service-scheduling-policy-designer-query/SKILL.md +1093 -65
- package/skills/field-service-sobject-create-configure/SKILL.md +213 -13
- package/skills/field-service-voice-to-form-configure/SKILL.md +11 -40
- package/skills/field-service-work-rule-designer-configure/SKILL.md +95 -121
- package/skills/agentforce-gpt-email-generation-configure/SKILL.md +0 -312
- package/skills/agentforce-wizard-ui-forecasting-analytics-components-configure/SKILL.md +0 -64
- package/skills/agentforce-wizard-ui-sales-einstein-components-configure/SKILL.md +0 -46
- package/skills/automation-company-profile-info-query/SKILL.md +0 -51
- package/skills/automation-digital-wallet-configure/SKILL.md +0 -689
- package/skills/automation-flow-coordinate/SKILL.md +0 -95
- package/skills/automation-flow-coordinate/references/elements/action-call/action-call.md +0 -1569
- package/skills/automation-flow-coordinate/references/elements/action-call/conversation-messaging.md +0 -96
- package/skills/automation-flow-coordinate/references/elements/action-call/examples/send-sms-message.json +0 -23
- package/skills/automation-flow-coordinate/references/elements/action-call/examples/send-to-journey-no-fields.json +0 -31
- package/skills/automation-flow-coordinate/references/elements/action-call/send-to-journey.md +0 -179
- package/skills/automation-flow-coordinate/references/elements/exit-rule/examples/event-email-link-click.json +0 -13
- package/skills/automation-flow-coordinate/references/elements/exit-rule/exit-rule.md +0 -83
- package/skills/automation-flow-coordinate/references/elements/forward-to-bot-or-agent/examples/forward-to-bot-or-agent.json +0 -69
- package/skills/automation-flow-coordinate/references/elements/forward-to-bot-or-agent/forward-to-bot-or-agent.md +0 -274
- package/skills/automation-flow-coordinate/references/elements/start/audience-common.md +0 -192
- package/skills/automation-flow-coordinate/references/elements/start/automation-event-triggered.md +0 -130
- package/skills/automation-flow-coordinate/references/elements/start/data-cloud-data-change-triggered.md +0 -92
- package/skills/automation-flow-coordinate/references/elements/start/form-submission-triggered.md +0 -88
- package/skills/automation-flow-coordinate/references/elements/start/segment-triggered.md +0 -152
- package/skills/automation-flow-coordinate/references/elements/start/start.md +0 -539
- package/skills/automation-flow-coordinate/references/elements/subflow/subflow.md +0 -152
- package/skills/automation-flow-coordinate/references/elements/wait/wait.md +0 -497
- package/skills/automation-flow-coordinate/references/recipes/author/author.md +0 -868
- package/skills/automation-flow-coordinate/references/recipes/summarize/element-generic.md +0 -300
- package/skills/automation-flow-coordinate/references/recipes/summarize/reference-resolution.md +0 -292
- package/skills/automation-flow-coordinate/references/recipes/summarize/summarize.md +0 -323
- package/skills/automation-flow-coordinate/references/recipes/testing/examples/debug-output-template.md +0 -109
- package/skills/automation-flow-coordinate/references/recipes/testing/shape.md +0 -219
- package/skills/automation-flow-coordinate/references/recipes/testing/shared-stages/intent-analyzer.md +0 -180
- package/skills/automation-flow-coordinate/references/recipes/testing/workflows/debug.md +0 -175
- package/skills/automation-flow-coordinate/references/recipes/testing/workflows/promote.md +0 -255
- package/skills/automation-flow-coordinate/references/recipes/testing/workflows/save-debug.md +0 -212
- package/skills/automation-flow-coordinate/references/resources/variable/variable.md +0 -171
- package/skills/automation-flow-coordinate/references/shared/anti-patterns.md +0 -786
- package/skills/automation-flow-coordinate/references/shared/end/end.md +0 -267
- package/skills/automation-flow-coordinate/references/shared/flow-type-resolver/eval/README.md +0 -69
- package/skills/automation-flow-coordinate/references/shared/flow-type-resolver/eval/predictions.jsonl +0 -80
- package/skills/automation-flow-coordinate/references/shared/flow-type-resolver/eval/prompts.jsonl +0 -116
- package/skills/automation-flow-coordinate/references/shared/flow-type-resolver/flow-type-resolver.md +0 -321
- package/skills/automation-flow-coordinate/references/shared/flow-type-resolver/taxonomy.json +0 -320
- package/skills/automation-flow-coordinate/references/shared/server-functions.md +0 -597
- package/skills/automotive-cloud-appraisal-management-settings-configure/SKILL.md +0 -69
- package/skills/automotive-cloud-dealer-essentials-configure/SKILL.md +0 -78
- package/skills/automotive-cloud-ground-agent-data-pipelines-configure/SKILL.md +0 -373
- package/skills/automotive-cloud-ground-mfg-agent-data-pipelines-configure/SKILL.md +0 -273
- package/skills/automotive-cloud-mfg-agent-data-pipelines-configure/SKILL.md +0 -259
- package/skills/automotive-cloud-mfg-sales-concierge-agent-create/SKILL.md +0 -369
- package/skills/automotive-cloud-mfg-sales-concierge-foundation-configure/SKILL.md +0 -542
- package/skills/automotive-cloud-mfg-sales-concierge-foundation-coordinate/SKILL.md +0 -159
- package/skills/automotive-cloud-mfg-sales-concierge-orchestrator-agent-create/SKILL.md +0 -349
- package/skills/automotive-cloud-mfg-sales-concierge-orchestrator-configure/SKILL.md +0 -505
- package/skills/automotive-cloud-sales-concierge-agent-create/SKILL.md +0 -380
- package/skills/automotive-cloud-sales-concierge-foundation-configure/SKILL.md +0 -567
- package/skills/automotive-cloud-sales-concierge-foundation-coordinate/SKILL.md +0 -159
- package/skills/automotive-cloud-sales-concierge-orchestrator-agent-create/SKILL.md +0 -360
- package/skills/automotive-cloud-sales-concierge-orchestrator-configure/SKILL.md +0 -539
- package/skills/automotive-cloud-sales-concierge-search-grounding-configure/SKILL.md +0 -358
- package/skills/commerce-b2b-merchant-quote-configure/SKILL.md +0 -602
- package/skills/commerce-b2b-store-configure/SKILL.md +0 -251
- package/skills/commerce-credit-memo-create/SKILL.md +0 -139
- package/skills/commerce-delivery-business-hours-configure/SKILL.md +0 -277
- package/skills/commerce-delivery-estimation-apply/SKILL.md +0 -155
- package/skills/commerce-delivery-estimation-configure/SKILL.md +0 -377
- package/skills/commerce-delivery-routing-specs-integrate/SKILL.md +0 -174
- package/skills/commerce-estimate-bopis-query/SKILL.md +0 -279
- package/skills/commerce-estimate-delivery-date-query/SKILL.md +0 -349
- package/skills/commerce-fees-apply/SKILL.md +0 -227
- package/skills/commerce-fulfillment-routing-analyze/SKILL.md +0 -200
- package/skills/commerce-guest-buyer-create/SKILL.md +0 -173
- package/skills/commerce-location-bopis-configure/SKILL.md +0 -378
- package/skills/commerce-location-business-hours-configure/SKILL.md +0 -235
- package/skills/commerce-location-delivery-processing-time-configure/SKILL.md +0 -309
- package/skills/commerce-location-graph-integrate/SKILL.md +0 -131
- package/skills/commerce-location-shipping-carrier-method-configure/SKILL.md +0 -755
- package/skills/commerce-location-temporary-operating-hours-configure/SKILL.md +0 -331
- package/skills/commerce-merchant-buyer-groups-configure/SKILL.md +0 -579
- package/skills/commerce-merchant-buyer-user-onboarding-create/SKILL.md +0 -626
- package/skills/commerce-merchant-catalog-configure/SKILL.md +0 -614
- package/skills/commerce-merchant-extension-provider-configure/SKILL.md +0 -368
- package/skills/commerce-merchant-insights-account-health-churn-analyze/SKILL.md +0 -118
- package/skills/commerce-merchant-insights-inventory-returns-analyze/SKILL.md +0 -65
- package/skills/commerce-merchant-insights-order-shopper-get/SKILL.md +0 -90
- package/skills/commerce-merchant-insights-product-performance-analyze/SKILL.md +0 -72
- package/skills/commerce-merchant-insights-query/SKILL.md +0 -279
- package/skills/commerce-merchant-storefront-guest-access-configure/SKILL.md +0 -656
- package/skills/commerce-order-summary-change-apply/SKILL.md +0 -375
- package/skills/commerce-product-details-get/SKILL.md +0 -363
- package/skills/commerce-product-search/SKILL.md +0 -563
- package/skills/commerce-react-storefront-create/SKILL.md +0 -350
- package/skills/commerce-return-order-summary-create/SKILL.md +0 -513
- package/skills/commerce-search-relevance-analyze/SKILL.md +0 -757
- package/skills/commerce-temporary-processing-time-override-create/SKILL.md +0 -274
- package/skills/communications-initial-setup-configure/SKILL.md +0 -630
- package/skills/communications-multisite-configure/SKILL.md +0 -571
- package/skills/communications-revenue-cloud-settings-configure/SKILL.md +0 -74
- package/skills/communications-smb-fiber-catalog-create/SKILL.md +0 -413
- package/skills/communications-tmf-integrate/SKILL.md +0 -1368
- package/skills/consumer-goods-visit-activity-act4-questions-assign/SKILL.md +0 -448
- package/skills/consumer-goods-visit-activity-act5-standard-create/SKILL.md +0 -269
- package/skills/consumer-goods-visit-activity-act6-assortment-configure/SKILL.md +0 -271
- package/skills/consumer-goods-visit-activity-act7-account-scoping-create/SKILL.md +0 -382
- package/skills/consumer-goods-visit-activity-act8-plan-attach-create/SKILL.md +0 -373
- package/skills/consumer-goods-visit-activity-act9-proof-validate/SKILL.md +0 -389
- package/skills/consumer-goods-visit-and-activity-act1-specification-create/SKILL.md +0 -338
- package/skills/consumer-goods-visit-and-activity-act2-template-create/SKILL.md +0 -547
- package/skills/consumer-goods-visit-and-activity-act3-definition-create/SKILL.md +0 -346
- package/skills/consumer-goods-visit-and-activity-configure/SKILL.md +0 -1110
- package/skills/crm-analytics-adoption-insights-configure/SKILL.md +0 -224
- package/skills/crm-analytics-custom-report-type-lightning-configure/SKILL.md +0 -418
- package/skills/crm-analytics-dashboards-configure/SKILL.md +0 -731
- package/skills/crm-analytics-operational-analytics-metadata-bridge-migrate/SKILL.md +0 -233
- package/skills/crm-analytics-report-notifications-ui-configure/SKILL.md +0 -184
- package/skills/crm-analytics-sharing-inheritance-coverage-analyze/SKILL.md +0 -167
- package/skills/crm-analytics-sonic-getting-started-configure/SKILL.md +0 -55
- package/skills/crm-analytics-tableau-next-app-deploy/SKILL.md +0 -1350
- package/skills/crm-analytics-tableau-next-c360-basemodel-validate/SKILL.md +0 -1862
- package/skills/crm-analytics-tableau-next-datacloud-validate/SKILL.md +0 -83
- package/skills/crm-analytics-tableau-next-provisioning-validate/SKILL.md +0 -81
- package/skills/data360-activation-create/SKILL.md +0 -104
- package/skills/data360-activation-external-platform-get/SKILL.md +0 -49
- package/skills/data360-activation-target-create/SKILL.md +0 -93
- package/skills/data360-activation-v2-create/SKILL.md +0 -456
- package/skills/data360-audience-dmo-get/SKILL.md +0 -38
- package/skills/data360-calculated-affinity-create/SKILL.md +0 -82
- package/skills/data360-calculated-insight-create/SKILL.md +0 -148
- package/skills/data360-catalog-metadata-create/SKILL.md +0 -183
- package/skills/data360-code-extension-create/SKILL.md +0 -115
- package/skills/data360-communication-capping-create/SKILL.md +0 -227
- package/skills/data360-connection-create/SKILL.md +0 -491
- package/skills/data360-content-lens-create/SKILL.md +0 -181
- package/skills/data360-data-action-create/SKILL.md +0 -126
- package/skills/data360-data-action-target-create/SKILL.md +0 -181
- package/skills/data360-data-clean-room-create/SKILL.md +0 -238
- package/skills/data360-data-governance-create/SKILL.md +0 -746
- package/skills/data360-data-graph-create/SKILL.md +0 -82
- package/skills/data360-data-harmonized-model-object-reference-create/SKILL.md +0 -38
- package/skills/data360-data-lake-object-create/SKILL.md +0 -207
- package/skills/data360-data-model-object-catalog-get/SKILL.md +0 -49
- package/skills/data360-data-model-object-create/SKILL.md +0 -128
- package/skills/data360-data-model-object-mapping-create/SKILL.md +0 -106
- package/skills/data360-data-space-create/SKILL.md +0 -161
- package/skills/data360-data-streams-create/SKILL.md +0 -324
- package/skills/data360-engagement-signal-get/SKILL.md +0 -38
- package/skills/data360-experiment-create/SKILL.md +0 -82
- package/skills/data360-goal-based-campaign-create/SKILL.md +0 -192
- package/skills/data360-harmonization-process-history-get/SKILL.md +0 -38
- package/skills/data360-harmonized-unstructured-dmo-create/SKILL.md +0 -84
- package/skills/data360-identity-resolution-create/SKILL.md +0 -115
- package/skills/data360-intelligent-document-processing-create/SKILL.md +0 -148
- package/skills/data360-knowledge-graph-construction-create/SKILL.md +0 -93
- package/skills/data360-knowledge-graph-create/SKILL.md +0 -216
- package/skills/data360-knowledge-space-mcp-configure/SKILL.md +0 -475
- package/skills/data360-machine-learning-mcp-configure/SKILL.md +0 -697
- package/skills/data360-multi-org-mcp-configure/SKILL.md +0 -117
- package/skills/data360-secondary-index-mcp-configure/SKILL.md +0 -126
- package/skills/data360-segment-mcp-configure/SKILL.md +0 -159
- package/skills/data360-semantic-calculated-dimension-mcp-configure/SKILL.md +0 -93
- package/skills/data360-semantic-calculated-measurement-mcp-configure/SKILL.md +0 -93
- package/skills/data360-semantic-data-object-mcp-configure/SKILL.md +0 -93
- package/skills/data360-semantic-dimension-mcp-configure/SKILL.md +0 -38
- package/skills/data360-semantic-engine-mcp-configure/SKILL.md +0 -62
- package/skills/data360-semantic-measurement-mcp-configure/SKILL.md +0 -38
- package/skills/data360-semantic-metric-mcp-configure/SKILL.md +0 -93
- package/skills/data360-semantic-model-mcp-configure/SKILL.md +0 -115
- package/skills/data360-standard-mapping-mcp-configure/SKILL.md +0 -38
- package/skills/data360-tenant-lifecycle-mcp-configure/SKILL.md +0 -73
- package/skills/experience-afv-query/SKILL.md +0 -234
- package/skills/experience-agentforce-vibes-in-react-configure/SKILL.md +0 -63
- package/skills/experience-apex-components-configure/SKILL.md +0 -69
- package/skills/experience-apex-pages-configure/SKILL.md +0 -107
- package/skills/experience-app-home-configure/SKILL.md +0 -76
- package/skills/experience-aura-lightning-out-access-configure/SKILL.md +0 -58
- package/skills/experience-briefcase-configure/SKILL.md +0 -287
- package/skills/experience-community-flexi-page-list-create/SKILL.md +0 -74
- package/skills/experience-community-template-definition-list-query/SKILL.md +0 -48
- package/skills/experience-community-theme-definition-list-query/SKILL.md +0 -38
- package/skills/experience-content-assets-configure/SKILL.md +0 -86
- package/skills/experience-custom-domain-create/SKILL.md +0 -727
- package/skills/experience-defer-rendering-workspace-page-setup-configure/SKILL.md +0 -41
- package/skills/experience-field-service-app-builder-configure/SKILL.md +0 -187
- package/skills/experience-flow-category-configure/SKILL.md +0 -117
- package/skills/experience-formula-configure/SKILL.md +0 -358
- package/skills/experience-global-actions-configure/SKILL.md +0 -69
- package/skills/experience-global-publisher-layouts-configure/SKILL.md +0 -79
- package/skills/experience-instrumentation-configure/SKILL.md +0 -64
- package/skills/experience-lex-engagement-configure/SKILL.md +0 -50
- package/skills/experience-lightning-bolt-open/SKILL.md +0 -12
- package/skills/experience-lightning-out-configure/SKILL.md +0 -129
- package/skills/experience-lightning-preview-configure/SKILL.md +0 -67
- package/skills/experience-lightning-types-query/SKILL.md +0 -98
- package/skills/experience-malware-scan-configure/SKILL.md +0 -71
- package/skills/experience-my-salesforce-configure/SKILL.md +0 -126
- package/skills/experience-navigation-menus-configure/SKILL.md +0 -235
- package/skills/experience-notification-types-configure/SKILL.md +0 -206
- package/skills/experience-notifications-configure/SKILL.md +0 -75
- package/skills/experience-record-discovery-query/SKILL.md +0 -227
- package/skills/experience-regenerate-previews-open/SKILL.md +0 -94
- package/skills/experience-sales-cloud-mab-configure/SKILL.md +0 -254
- package/skills/experience-schema-builder-open/SKILL.md +0 -38
- package/skills/experience-simple-record-home-configure/SKILL.md +0 -110
- package/skills/experience-static-resources-configure/SKILL.md +0 -74
- package/skills/field-service-setup-coordinate/SKILL.md +0 -62
- package/skills/field-service-work-plan-configure/SKILL.md +0 -253
- package/skills/fsc-actionable-segmentation-settings-configure/SKILL.md +0 -180
- package/skills/fsc-digital-origination-bre-decision-matrix-foundation-create/SKILL.md +0 -196
- package/skills/fsc-digital-origination-bre-disclosures-consent-configure/SKILL.md +0 -106
- package/skills/fsc-digital-origination-bre-document-upload-configure/SKILL.md +0 -96
- package/skills/fsc-digital-origination-bre-permissions-assign/SKILL.md +0 -111
- package/skills/fsc-digital-origination-bre-setup-coordinate/SKILL.md +0 -250
- package/skills/fsc-digital-origination-bre-stp-eligibility-configure/SKILL.md +0 -122
- package/skills/fsc-digital-origination-coordinate/SKILL.md +0 -653
- package/skills/fsc-digital-origination-demo-run/SKILL.md +0 -225
- package/skills/fsc-digital-origination-execution-guardrails-validate/SKILL.md +0 -112
- package/skills/fsc-digital-origination-initial-setup-configure/SKILL.md +0 -396
- package/skills/fsc-digital-origination-pricing-setup-coordinate/SKILL.md +0 -336
- package/skills/fsc-digital-origination-pricing-setup-data-foundation-create/SKILL.md +0 -208
- package/skills/fsc-digital-origination-pricing-setup-procedure-create/SKILL.md +0 -375
- package/skills/fsc-digital-origination-product-setup-act1-permissions-assign/SKILL.md +0 -83
- package/skills/fsc-digital-origination-product-setup-coordinate/SKILL.md +0 -248
- package/skills/fsc-digital-origination-sample-data-create/SKILL.md +0 -206
- package/skills/fsc-document-checklist-settings-configure/SKILL.md +0 -57
- package/skills/fsc-flexible-hierarchy-configure/SKILL.md +0 -148
- package/skills/fsc-flexible-hierarchy-foundation-configure/SKILL.md +0 -1430
- package/skills/fsc-flexible-hierarchy-graph-config-create/SKILL.md +0 -471
- package/skills/fsc-flexible-hierarchy-rule-based-graph-deploy/SKILL.md +0 -429
- package/skills/fsc-pricing-product-configurator-configure/SKILL.md +0 -150
- package/skills/fsc-pricing-salesforce-omnistudio-switch/SKILL.md +0 -123
- package/skills/fsc-product-act2-catalog-categories-create/SKILL.md +0 -82
- package/skills/fsc-product-act3-attributes-create/SKILL.md +0 -249
- package/skills/fsc-product-act4-classification-assignment-create/SKILL.md +0 -196
- package/skills/fsc-product-act5-considerations-get/SKILL.md +0 -44
- package/skills/fsc-stage-management-apex-flow-deploy/SKILL.md +0 -384
- package/skills/fsc-stage-management-compliant-data-sharing-configure/SKILL.md +0 -144
- package/skills/fsc-stage-management-decision-matrices-create/SKILL.md +0 -107
- package/skills/fsc-stage-management-definition-assignments-create/SKILL.md +0 -189
- package/skills/fsc-stage-management-definition-create/SKILL.md +0 -108
- package/skills/fsc-stage-management-permissions-assign/SKILL.md +0 -143
- package/skills/fsc-stage-management-transitions-configure/SKILL.md +0 -139
- package/skills/health-cloud-appt-booking-config-configure/SKILL.md +0 -135
- package/skills/health-cloud-appt-booking-url-config-configure/SKILL.md +0 -134
- package/skills/health-cloud-care-provider-affl-role-config-configure/SKILL.md +0 -136
- package/skills/health-cloud-care-provider-search-config-configure/SKILL.md +0 -134
- package/skills/health-cloud-care-requests-create/SKILL.md +0 -178
- package/skills/health-cloud-initial-configure/SKILL.md +0 -511
- package/skills/health-cloud-patient-appointment-scheduling-configure/SKILL.md +0 -1374
- package/skills/health-cloud-provider-search-settings-configure/SKILL.md +0 -924
- package/skills/health-cloud-referral-management-coordinate/SKILL.md +0 -513
- package/skills/health-cloud-timeline-configure/SKILL.md +0 -622
- package/skills/health-cloud-virtual-visit-config-configure/SKILL.md +0 -135
- package/skills/industries-account-score-settings-query/SKILL.md +0 -78
- package/skills/industries-actionable-list-data-sources-dmo-configure/SKILL.md +0 -177
- package/skills/industries-ad-product-availability-search/SKILL.md +0 -399
- package/skills/industries-advanced-account-forecast-settings-configure/SKILL.md +0 -628
- package/skills/industries-advanced-therapy-management-settings-configure/SKILL.md +0 -73
- package/skills/industries-atm-settings-starter-configure/SKILL.md +0 -76
- package/skills/industries-batch-document-ai-configure/SKILL.md +0 -196
- package/skills/industries-behavioral-health-app-settings-configure/SKILL.md +0 -71
- package/skills/industries-branch-management-settings-configure/SKILL.md +0 -89
- package/skills/industries-bre-decision-table-access-configure/SKILL.md +0 -367
- package/skills/industries-brokerage-settings-configure/SKILL.md +0 -41
- package/skills/industries-calendar-sync-settings-configure/SKILL.md +0 -89
- package/skills/industries-care-request-settings-configure/SKILL.md +0 -218
- package/skills/industries-case-management-intelligence-settings-configure/SKILL.md +0 -54
- package/skills/industries-catalog-process-attributes-products-configure/SKILL.md +0 -380
- package/skills/industries-catalog-process-fulfillment-configure/SKILL.md +0 -216
- package/skills/industries-catalog-process-intake-configure/SKILL.md +0 -219
- package/skills/industries-catalog-process-knowledge-configure/SKILL.md +0 -153
- package/skills/industries-catalog-process-preprocessor-configure/SKILL.md +0 -168
- package/skills/industries-cds-general-settings-configure/SKILL.md +0 -69
- package/skills/industries-claim-financial-settings-configure/SKILL.md +0 -169
- package/skills/industries-clinical-data-model-settings-configure/SKILL.md +0 -136
- package/skills/industries-clinical-data-model-settings-starter-configure/SKILL.md +0 -105
- package/skills/industries-collection-plan-settings-configure/SKILL.md +0 -132
- package/skills/industries-comms-service-console-settings-configure/SKILL.md +0 -159
- package/skills/industries-compliance-configure/SKILL.md +0 -102
- package/skills/industries-compliance-document-extraction-setup-configure/SKILL.md +0 -76
- package/skills/industries-contact-center-app-layout-configure/SKILL.md +0 -88
- package/skills/industries-contact-center-components-configure/SKILL.md +0 -96
- package/skills/industries-contact-center-path-knowledge-configure/SKILL.md +0 -95
- package/skills/industries-contact-center-user-access-assign/SKILL.md +0 -96
- package/skills/industries-course-waitlist-config-configure/SKILL.md +0 -162
- package/skills/industries-crisis-center-settings-configure/SKILL.md +0 -84
- package/skills/industries-custom-object-settings-configure/SKILL.md +0 -94
- package/skills/industries-data-cloud-integration-configure/SKILL.md +0 -88
- package/skills/industries-data-space-feature-mappings-configure/SKILL.md +0 -245
- package/skills/industries-decision-matrix-builder-configure/SKILL.md +0 -78
- package/skills/industries-decision-table-hbase-configure/SKILL.md +0 -87
- package/skills/industries-decision-table-version-configure/SKILL.md +0 -74
- package/skills/industries-decision-tables-builder-configure/SKILL.md +0 -253
- package/skills/industries-decision-tables-configure/SKILL.md +0 -439
- package/skills/industries-energy-utilities-configure/SKILL.md +0 -251
- package/skills/industries-eu-cloud-multisite-configure/SKILL.md +0 -1008
- package/skills/industries-eu-new-connections-configure/SKILL.md +0 -30
- package/skills/industries-explainability-msg-template-configure/SKILL.md +0 -135
- package/skills/industries-expression-set-message-token-configure/SKILL.md +0 -135
- package/skills/industries-field-service-settings-configure/SKILL.md +0 -82
- package/skills/industries-form-framework-settings-configure/SKILL.md +0 -30
- package/skills/industries-fsc-ai-settings-configure/SKILL.md +0 -57
- package/skills/industries-fsc-association-engine-settings-configure/SKILL.md +0 -172
- package/skills/industries-fsc-b2b-settings-configure/SKILL.md +0 -61
- package/skills/industries-fsc-insurance-settings-configure/SKILL.md +0 -58
- package/skills/industries-fsc-visa-fulfillment-setup-configure/SKILL.md +0 -103
- package/skills/industries-fsc-wealth-agent-settings-configure/SKILL.md +0 -117
- package/skills/industries-fsc-wealth-settings-configure/SKILL.md +0 -99
- package/skills/industries-fundraising-gift-entry-settings-configure/SKILL.md +0 -120
- package/skills/industries-fundraising-rfm-configure/SKILL.md +0 -128
- package/skills/industries-fundraising-settings-configure/SKILL.md +0 -145
- package/skills/industries-fundraising-source-code-gen-configure/SKILL.md +0 -299
- package/skills/industries-google-maps-api-key-settings-configure/SKILL.md +0 -87
- package/skills/industries-grantmaking-intelligence-settings-open/SKILL.md +0 -58
- package/skills/industries-hc-score-category-settings-configure/SKILL.md +0 -167
- package/skills/industries-health-engagement-settings-configure/SKILL.md +0 -218
- package/skills/industries-home-health-agentforce-setup-configure/SKILL.md +0 -131
- package/skills/industries-home-health-bundling-policy-create/SKILL.md +0 -50
- package/skills/industries-home-health-entity-labels-configure/SKILL.md +0 -29
- package/skills/industries-home-health-fsl-package-deploy/SKILL.md +0 -71
- package/skills/industries-home-health-fsl-settings-validate/SKILL.md +0 -27
- package/skills/industries-home-health-guided-setup-care-and-skill-get/SKILL.md +0 -80
- package/skills/industries-home-health-guided-setup-configure/SKILL.md +0 -836
- package/skills/industries-home-health-guided-setup-enable-org-fsl-get/SKILL.md +0 -55
- package/skills/industries-home-health-guided-setup-get-org-ready-get/SKILL.md +0 -61
- package/skills/industries-home-health-licenses-assign/SKILL.md +0 -27
- package/skills/industries-home-health-operating-hours-create/SKILL.md +0 -40
- package/skills/industries-home-health-scheduling-policy-create/SKILL.md +0 -41
- package/skills/industries-home-health-service-objective-create/SKILL.md +0 -22
- package/skills/industries-home-health-skills-create/SKILL.md +0 -31
- package/skills/industries-home-health-users-create/SKILL.md +0 -29
- package/skills/industries-icm-act3-toggles-configure/SKILL.md +0 -198
- package/skills/industries-icm-act5-genai-suggested-assessments-configure/SKILL.md +0 -361
- package/skills/industries-icm-act6-mcg-integration-configure/SKILL.md +0 -550
- package/skills/industries-integrated-care-management-configure/SKILL.md +0 -168
- package/skills/industries-object-enablement-configure/SKILL.md +0 -86
- package/skills/industries-tpm-system-processing-service-configure/SKILL.md +0 -64
- package/skills/integration-apex-settings-configure/SKILL.md +0 -61
- package/skills/marketing-e360-email-archiving-configure/SKILL.md +0 -73
- package/skills/platform-custom-permissions-configure/SKILL.md +0 -687
- package/skills/platform-label-workbench-import-create/SKILL.md +0 -67
- package/skills/platform-privacy-agent-settings-configure/SKILL.md +0 -752
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: fsc-product-act5-considerations-get
|
|
3
|
-
description: "Sub-skill of digital-origination-product-setup. Act 5 — surface the Salesforce Help considerations and limitations for Digital Lending catalogs and products (100-product FlexCard cap, no pagination, dynamic name/image/description, currency vs number typing for loan-amount attributes, LoanTerm as months picklist, DigitalLendingTransFormProductInfo data-mapper update requirement when custom attributes are added). Not a write step — alignment step."
|
|
4
|
-
metadata:
|
|
5
|
-
version: "1.0"
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
# Act 5 — Considerations & limits
|
|
9
|
-
|
|
10
|
-
Source: [Considerations and Limitations for Catalogs and Products for Digital Lending](https://help.salesforce.com/s/articleView?id=ind.fsc_lending_catalogs_products_considerations.htm&type=5)
|
|
11
|
-
|
|
12
|
-
## Purpose
|
|
13
|
-
|
|
14
|
-
Alignment step, not a write step. Surface each consideration to the admin so downstream
|
|
15
|
-
expectations (product listing, offer validity, data mapper updates) are set correctly.
|
|
16
|
-
|
|
17
|
-
## Prereq gate
|
|
18
|
-
|
|
19
|
-
- Acts 1–4 complete, OR the admin explicitly asked for a considerations-only summary.
|
|
20
|
-
|
|
21
|
-
## What to surface
|
|
22
|
-
|
|
23
|
-
Full verbatim list at [`../../references/considerations-and-limits.md`](../../references/considerations-and-limits.md).
|
|
24
|
-
Walk the admin through each bullet; capture acknowledgement.
|
|
25
|
-
|
|
26
|
-
Priority items to call out:
|
|
27
|
-
|
|
28
|
-
1. **100-product FlexCard cap + no pagination.** Product List Page FlexCard shows up to 100 products from the CPQ API. If the admin plans to onboard more, this is a design blocker.
|
|
29
|
-
2. **Category-required rule.** If not using parent + child categories, products MUST be assigned to a category. If using parent + child, use subcategories.
|
|
30
|
-
3. **Attribute grouping.** Add LoanTerm, MinLoanAmount, MaxLoanAmount, OmniScriptName, OfferValidPeriod in the same attribute category OR as uncategorized. Do not split across attribute categories.
|
|
31
|
-
4. **Type mismatch — MinLoanAmount / MaxLoanAmount.** Sample-data considerations describe these as Type **currency**. Help-doc creation steps (Article 6, Act 3) use Data Type = **Number**. If the admin plans to use the Agentforce Financial Services sample data, use currency; otherwise follow Number per the creation steps.
|
|
32
|
-
5. **LoanTerm — picklist in months.** LoanTerm is a picklist type with loan terms as picklist values. Values are in months.
|
|
33
|
-
6. **Data mapper update requirement.** If the admin creates attributes beyond LoanTerm / MinLoanAmount / MaxLoanAmount / OmniScriptName / OfferValidPeriod, they MUST update the DigitalLendingTransFormProductInfo Data Mapper Transform with the custom attributes. This is out of scope for this SKILL — flag it as follow-up.
|
|
34
|
-
7. **Dynamic product-card fields.** Name, display URL, and description shown on the product card come from the product record's name / display URL / description attributes. Values are dynamic per product.
|
|
35
|
-
8. **CPQ Fetch product detail API.** Returns new attributes; the updated attributes appear on the product detail page. Wire-up is out of scope for this SKILL.
|
|
36
|
-
|
|
37
|
-
## End state
|
|
38
|
-
|
|
39
|
-
- Admin has acknowledged each consideration.
|
|
40
|
-
- Follow-up items captured (custom-attribute data-mapper update, FlexCard scale, sample-data currency typing).
|
|
41
|
-
|
|
42
|
-
## See also
|
|
43
|
-
|
|
44
|
-
- [`../../references/considerations-and-limits.md`](../../references/considerations-and-limits.md) — verbatim source
|
|
@@ -1,384 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: fsc-stage-management-apex-flow-deploy
|
|
3
|
-
parent: "digital-origination-stage-management-setup"
|
|
4
|
-
purpose: "Deploy the CDSCacheHelper and AutoLoanCDSUtil Apex classes and create the autolaunched Flow that stage transition rules invoke."
|
|
5
|
-
description: "Deploy the two Apex classes that power Compliant Data Sharing for Stage Management (CDSCacheHelper, which caches participant role and group name-to-Id maps, and AutoLoanCDSUtil, which exposes the \"Digital Lending CDS\" invocable method that reads the three decision matrices and creates or updates participant records), then create the \"Digital Lending Stage Management\" autolaunched Flow that wraps the Apex so a stage transition rule can call it. Apex and Flow are code artifacts deployed through the Metadata/Tooling API and verified with a fresh read; if the org disallows deploys, the sibling stops at a guided checkpoint. It never hand-edits the delivered class logic beyond the documented developer-name substitutions."
|
|
6
|
-
metadata:
|
|
7
|
-
version: "1.0"
|
|
8
|
-
cliTools:
|
|
9
|
-
- tool:
|
|
10
|
-
- "sf"
|
|
11
|
-
semver: ">=2.0.0"
|
|
12
|
-
---
|
|
13
|
-
|
|
14
|
-
# Digital Origination Stage Management — CDS Apex and Flow
|
|
15
|
-
|
|
16
|
-
Deploy the code that runs on every stage transition. When a stage transition rule fires, an autolaunched
|
|
17
|
-
Flow invokes `AutoLoanCDSUtil`, which reads the three decision matrices and creates or updates the CDS
|
|
18
|
-
participant records that change who can see the application. This sibling deploys the two Apex classes and
|
|
19
|
-
creates the Flow. It does not create the perm sets, groups, matrices, stage definition, or transitions —
|
|
20
|
-
it only deploys the code that consumes them.
|
|
21
|
-
|
|
22
|
-
Source: Salesforce Help "Create an Apex Class CDSCacheHelper"
|
|
23
|
-
(`ind.fsc_lending_stage_management_apex_helper`), "Create an Apex Class CDSUtil"
|
|
24
|
-
(`ind.fsc_lending_stage_management_apex_cdsutil`), and "Create Digital Lending Stage Management Flow".
|
|
25
|
-
The complete, verbatim class bodies are inlined below — deploy them exactly as written (the only permitted
|
|
26
|
-
edit is the documented `FSCCDSUser` perm-set-name substitution).
|
|
27
|
-
|
|
28
|
-
## Prerequisites this sibling depends on
|
|
29
|
-
|
|
30
|
-
The Apex resolves these by name at runtime, so they must exist (from the `compliant-data-sharing` and
|
|
31
|
-
`decision-matrices` siblings) before the Apex can run — though the classes can be **deployed** before the
|
|
32
|
-
matrices exist, they will not evaluate correctly until every referenced artifact is present:
|
|
33
|
-
|
|
34
|
-
- Permission set `FSCCDSUser`
|
|
35
|
-
- Participant groups `Agent_Group`, `Underwriter_Group`
|
|
36
|
-
- Participant roles prefixed `ApplicationForm`, `ApplicationFormProduct`, `PartyProfile`
|
|
37
|
-
- Decision matrices `HomeLoan_CDS_Config`, `AFPStage_To_ApplicantVisibleStatus`, `AFPStage_To_AFStage`
|
|
38
|
-
|
|
39
|
-
## The two Apex classes
|
|
40
|
-
|
|
41
|
-
Deploy both classes **verbatim** as given below. `CDSCacheHelper` has no dependency; `AutoLoanCDSUtil`
|
|
42
|
-
depends on it (a `static {}` initializer calls `CDSCacheHelper.loadCDSData()`), so deploy them together or
|
|
43
|
-
helper-first.
|
|
44
|
-
|
|
45
|
-
### `CDSCacheHelper`
|
|
46
|
-
|
|
47
|
-
Caches two static name→Id maps via `loadCDSData()`: `PARTICIPANT_ROLE_NAME_TO_ID` (active
|
|
48
|
-
`ParticipantRole`, keyed by `DeveloperName`) and `PARTICIPANT_GROUP_NAME_TO_ID` (`Group` where
|
|
49
|
-
`Type='Participant'`, keyed by `DeveloperName`). The guard returns early only when **both** maps are
|
|
50
|
-
already populated.
|
|
51
|
-
|
|
52
|
-
```apex
|
|
53
|
-
public class CDSCacheHelper {
|
|
54
|
-
|
|
55
|
-
public static Map<String, String> PARTICIPANT_ROLE_NAME_TO_ID = new Map<String, String>();
|
|
56
|
-
public static Map<String, String> PARTICIPANT_GROUP_NAME_TO_ID = new Map<String, String>();
|
|
57
|
-
|
|
58
|
-
public static void loadCDSData() {
|
|
59
|
-
|
|
60
|
-
if (!(PARTICIPANT_ROLE_NAME_TO_ID.isEmpty() || PARTICIPANT_GROUP_NAME_TO_ID.isEmpty())) {
|
|
61
|
-
return;
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
// Caching participant roles
|
|
65
|
-
List<Participantrole> paticipantRoles = [SELECT ID, DeveloperName FROM ParticipantRole WHERE IsActive = true];
|
|
66
|
-
for (Participantrole role: paticipantRoles) {
|
|
67
|
-
PARTICIPANT_ROLE_NAME_TO_ID.put(role.DeveloperName, role.ID);
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
// Caching participant groups
|
|
71
|
-
List<Group> groups = [SELECT ID, DeveloperName FROM Group WHERE Type = 'Participant'];
|
|
72
|
-
for (Group groupData: groups) {
|
|
73
|
-
PARTICIPANT_GROUP_NAME_TO_ID.put(groupData.DeveloperName, groupData.ID);
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
}
|
|
79
|
-
```
|
|
80
|
-
|
|
81
|
-
### `AutoLoanCDSUtil`
|
|
82
|
-
|
|
83
|
-
`public with sharing`, exposes `@InvocableMethod(label='Digital Lending CDS')` `execute(List<ID> ids)`
|
|
84
|
-
where the first Id is an `ApplicationFormProduct`. On a stage change it (1) updates
|
|
85
|
-
`ApplicationFormProduct.ApplicantVisibleStatus` via the `AFPStage_To_ApplicantVisibleStatus` matrix, (2)
|
|
86
|
-
updates the parent `ApplicationForm.Stage` via `AFPStage_To_AFStage`, and (3) creates/updates participant
|
|
87
|
-
records on `AppFormProductParticipant`, `ApplicationFormParticipant`, and `PartyProfileParticipant` via
|
|
88
|
-
`HomeLoan_CDS_Config` (outputs `Applicant_Agent_Access` and `Underwriter_Access`, comma-separated
|
|
89
|
-
role lists). Roles are dispatched by `startsWith` — `ApplicationFormProduct` is checked **before**
|
|
90
|
-
`ApplicationForm` because the latter is a prefix of the former. It calls each matrix via
|
|
91
|
-
`Invocable.Action.createCustomAction('runDecisionMatrix', <matrixName>)`.
|
|
92
|
-
|
|
93
|
-
**The one documented customization point:** `CDS_PERMISSION_SET_NAME = 'FSCCDSUser'`. If the admin created
|
|
94
|
-
the CDS permission set with a different API name, replace `'FSCCDSUser'` on that line before deploy (and
|
|
95
|
-
keep it in lockstep with the `compliant-data-sharing` sibling). The matrix names, group names
|
|
96
|
-
(`Agent_Group` / `Underwriter_Group`), and field names are load-bearing contracts — do not otherwise
|
|
97
|
-
rewrite the class logic.
|
|
98
|
-
|
|
99
|
-
```apex
|
|
100
|
-
public with sharing class AutoLoanCDSUtil {
|
|
101
|
-
|
|
102
|
-
private static final String DM_APP_FORM_PRODUCT_STAGE_FIELD_NAME = 'ApplicationFormProductStage';
|
|
103
|
-
private static final String DM_APP_FORM_STAGE_FIELD_NAME = 'ApplicationFormStage';
|
|
104
|
-
private static final String DM_APPLICANT_STATUS_FIELD_NAME = 'ApplicantVisibleStatus';
|
|
105
|
-
|
|
106
|
-
private static final String DM_AFP_STAGE_TO_AF_STAGE = 'AFPStage_To_AFStage';
|
|
107
|
-
private static final String DM_AFP_STAGE_TO_APPLICANT_STATUS = 'AFPStage_To_ApplicantVisibleStatus';
|
|
108
|
-
|
|
109
|
-
private static final String DM_AUTO_LOAN_CDS = 'HomeLoan_CDS_Config';
|
|
110
|
-
private static final String DM_UW_ACCESS_FIELD_NAME = 'Underwriter_Access';
|
|
111
|
-
private static final String DM_APPLICANT_AGENT_ACCESS_FIELD_NAME = 'Applicant_Agent_Access';
|
|
112
|
-
|
|
113
|
-
private static final String APPLICATION_FORM = 'ApplicationForm';
|
|
114
|
-
private static final String APPLICATION_FORM_PRODUCT = 'ApplicationFormProduct';
|
|
115
|
-
private static final String PARTY_PROFILE = 'PartyProfile';
|
|
116
|
-
|
|
117
|
-
private static final String UNDERWRITER_PARTICIPANT_GROUP_NAME = 'Underwriter_Group';
|
|
118
|
-
private static final String AGENT_PARTICIPANT_GROUP_NAME = 'Agent_Group';
|
|
119
|
-
private static final String CDS_PERMISSION_SET_NAME = 'FSCCDSUser';
|
|
120
|
-
|
|
121
|
-
static {
|
|
122
|
-
CDSCacheHelper.loadCDSData();
|
|
123
|
-
}
|
|
124
|
-
|
|
125
|
-
@InvocableMethod(label = 'Digital Lending CDS'
|
|
126
|
-
description = 'Creates the CDS records on ApplicationForm/ApplicationFormProduct/PartyProfile based on the configuration.')
|
|
127
|
-
public static List <Result> execute(List <ID> ids) {
|
|
128
|
-
List <Result> results = new List <Result> ();
|
|
129
|
-
Result result = new Result();
|
|
130
|
-
try {
|
|
131
|
-
|
|
132
|
-
Id applicationFormProductId = ids.get(0);
|
|
133
|
-
|
|
134
|
-
ApplicationFormProduct appFormProduct = [SELECT Id, Stage, ApplicantVisibleStatus, ApplicationFormId FROM ApplicationFormProduct WHERE Id =: applicationFormProductId];
|
|
135
|
-
|
|
136
|
-
updateApplicantVisibleStatus(appFormProduct);
|
|
137
|
-
updateApplicationFormStage(appFormProduct);
|
|
138
|
-
|
|
139
|
-
Invocable.Action.Result cdsDmResult = invokeDecisionMatrix(DM_AUTO_LOAN_CDS, appFormProduct.Stage);
|
|
140
|
-
String applicantAgentRole = getOutputVal(cdsDmResult, DM_APPLICANT_AGENT_ACCESS_FIELD_NAME);
|
|
141
|
-
String underwriterRole = getOutputVal(cdsDmResult, DM_UW_ACCESS_FIELD_NAME);
|
|
142
|
-
|
|
143
|
-
String[] applicantAgentRoles = applicantAgentRole.split(',');
|
|
144
|
-
String[] underwriterRoles = underwriterRole.split(',');
|
|
145
|
-
|
|
146
|
-
Set <Id> partyProfileIds = new Set < Id > ();
|
|
147
|
-
|
|
148
|
-
List <Applicant> applicants = [SELECT Id, Email, ApplicationFormId, PartyProfileId FROM Applicant WHERE ApplicationFormId =: appFormProduct.ApplicationFormId];
|
|
149
|
-
|
|
150
|
-
for (Applicant applicant: applicants) {
|
|
151
|
-
if (applicant.PartyProfileId != null) {
|
|
152
|
-
partyProfileIds.add(applicant.PartyProfileId);
|
|
153
|
-
}
|
|
154
|
-
// If no users where email matches applicant email, continue
|
|
155
|
-
List<User> users = [SELECT Id FROM USER WHERE Email =: applicant.Email];
|
|
156
|
-
if (users.size() == 0) {
|
|
157
|
-
continue;
|
|
158
|
-
}
|
|
159
|
-
User user = users.get(0);
|
|
160
|
-
|
|
161
|
-
// If user does not have CDS permission, continue
|
|
162
|
-
List<PermissionSetAssignment> permissionSetAssignments = [SELECT AssigneeId, PermissionSet.Name FROM PermissionSetAssignment
|
|
163
|
-
WHERE AssigneeId =: user.Id AND PermissionSet.Name =: CDS_PERMISSION_SET_NAME ];
|
|
164
|
-
if (permissionSetAssignments.size() == 0) {
|
|
165
|
-
continue;
|
|
166
|
-
}
|
|
167
|
-
|
|
168
|
-
for (String cdsRole: applicantAgentRoles) {
|
|
169
|
-
if (cdsRole.startsWith(APPLICATION_FORM_PRODUCT)) {
|
|
170
|
-
handleApplicationFormProductParticipants(user.Id, appFormProduct, cdsRole);
|
|
171
|
-
} else if (cdsRole.startsWith(APPLICATION_FORM)) {
|
|
172
|
-
handleApplicationFormParticipants(user.Id, appFormProduct, cdsRole);
|
|
173
|
-
} else if (cdsRole.startsWith(PARTY_PROFILE)) {
|
|
174
|
-
handlePartyProfileParticipants(user.Id, applicant.PartyProfileId, cdsRole);
|
|
175
|
-
}
|
|
176
|
-
}
|
|
177
|
-
}
|
|
178
|
-
// Updating / Creating Participant Records for Underwrite groups
|
|
179
|
-
handleCDSUpdatesForGroups(UNDERWRITER_PARTICIPANT_GROUP_NAME, underwriterRoles, partyProfileIds, appFormProduct);
|
|
180
|
-
|
|
181
|
-
// Updating / Creating Participant Records for Agent groups
|
|
182
|
-
handleCDSUpdatesForGroups(AGENT_PARTICIPANT_GROUP_NAME, applicantAgentRoles, partyProfileIds, appFormProduct);
|
|
183
|
-
result.isSuccess = true;
|
|
184
|
-
result.message = 'Stage configuration executed successfully.';
|
|
185
|
-
|
|
186
|
-
} catch (Exception ex) {
|
|
187
|
-
result.isSuccess = false;
|
|
188
|
-
result.message = ex.getMessage();
|
|
189
|
-
System.debug(ex);
|
|
190
|
-
}
|
|
191
|
-
|
|
192
|
-
results.add(result);
|
|
193
|
-
return results;
|
|
194
|
-
}
|
|
195
|
-
|
|
196
|
-
public static void handleCDSUpdatesForGroups(String groupName, String[] roles, Set < Id > partyProfileIds, ApplicationFormProduct appFormProduct) {
|
|
197
|
-
String groupId = CDSCacheHelper.PARTICIPANT_GROUP_NAME_TO_ID.get(groupName);
|
|
198
|
-
for (String cdsRole: roles) {
|
|
199
|
-
if (cdsRole.startsWith(APPLICATION_FORM_PRODUCT)) {
|
|
200
|
-
handleApplicationFormProductParticipants(groupId, appFormProduct, cdsRole);
|
|
201
|
-
} else if (cdsRole.startsWith(APPLICATION_FORM)) {
|
|
202
|
-
handleApplicationFormParticipants(groupId, appFormProduct, cdsRole);
|
|
203
|
-
} else if (cdsRole.startsWith(PARTY_PROFILE)) {
|
|
204
|
-
for (Id partyProfileId: partyProfileIds) {
|
|
205
|
-
handlePartyProfileParticipants(groupId, partyProfileId, cdsRole);
|
|
206
|
-
}
|
|
207
|
-
}
|
|
208
|
-
}
|
|
209
|
-
}
|
|
210
|
-
|
|
211
|
-
public static void updateApplicantVisibleStatus(ApplicationFormProduct appFormProduct) {
|
|
212
|
-
Invocable.Action.Result result = invokeDecisionMatrix(DM_AFP_STAGE_TO_APPLICANT_STATUS, appFormProduct.Stage);
|
|
213
|
-
String applicantVisibleStatus = getOutputVal(result, DM_APPLICANT_STATUS_FIELD_NAME);
|
|
214
|
-
appFormProduct.ApplicantVisibleStatus = applicantVisibleStatus;
|
|
215
|
-
upsert appFormProduct;
|
|
216
|
-
}
|
|
217
|
-
|
|
218
|
-
public static void updateApplicationFormStage(ApplicationFormProduct appFormProduct) {
|
|
219
|
-
Invocable.Action.Result result = invokeDecisionMatrix(DM_AFP_STAGE_TO_AF_STAGE, appFormProduct.Stage);
|
|
220
|
-
String applicationFormStage = getOutputVal(result, DM_APP_FORM_STAGE_FIELD_NAME);
|
|
221
|
-
|
|
222
|
-
ApplicationForm applicationForm = new ApplicationForm();
|
|
223
|
-
applicationForm.Id = appFormProduct.ApplicationFormId;
|
|
224
|
-
applicationForm.Stage = applicationFormStage;
|
|
225
|
-
upsert applicationForm;
|
|
226
|
-
}
|
|
227
|
-
|
|
228
|
-
public static void handleApplicationFormParticipants(Id userOrGroupId, ApplicationFormProduct appFormProduct, String roleName) {
|
|
229
|
-
List<ApplicationFormParticipant> appFormParticipants = [SELECT Id, ParticipantRoleId FROM ApplicationFormParticipant WHERE ParticipantId =: userOrGroupId AND ApplicationFormId=:appFormProduct.ApplicationFormId];
|
|
230
|
-
String roleId = CDSCacheHelper.PARTICIPANT_ROLE_NAME_TO_ID.get(roleName);
|
|
231
|
-
if (appFormParticipants.size() == 0) {
|
|
232
|
-
ApplicationFormParticipant participant = new ApplicationFormParticipant(ApplicationFormId = appFormProduct.ApplicationFormId,
|
|
233
|
-
IsActive = true,
|
|
234
|
-
ParticipantRoleId = roleId,
|
|
235
|
-
ParticipantId=userOrGroupId);
|
|
236
|
-
insert participant;
|
|
237
|
-
} else {
|
|
238
|
-
ApplicationFormParticipant participant = appFormParticipants.get(0);
|
|
239
|
-
participant.IsActive = true;
|
|
240
|
-
participant.ParticipantRoleId = roleId;
|
|
241
|
-
upsert participant;
|
|
242
|
-
}
|
|
243
|
-
}
|
|
244
|
-
|
|
245
|
-
public static void handleApplicationFormProductParticipants(Id userOrGroupId, ApplicationFormProduct appFormProduct, String roleName) {
|
|
246
|
-
List<AppFormProductParticipant> participants = [SELECT Id, ParticipantRoleId FROM AppFormProductParticipant WHERE ParticipantId =: userOrGroupId AND ApplicationFormProductId=:appFormProduct.Id];
|
|
247
|
-
String roleId = CDSCacheHelper.PARTICIPANT_ROLE_NAME_TO_ID.get(roleName);
|
|
248
|
-
if (participants.size() == 0) {
|
|
249
|
-
AppFormProductParticipant participant = new AppFormProductParticipant(ApplicationFormProductId = appFormProduct.Id,
|
|
250
|
-
IsActive = true,
|
|
251
|
-
ParticipantRoleId = roleId,
|
|
252
|
-
ParticipantId=userOrGroupId);
|
|
253
|
-
insert participant;
|
|
254
|
-
} else {
|
|
255
|
-
AppFormProductParticipant participant = participants.get(0);
|
|
256
|
-
participant.IsActive = true;
|
|
257
|
-
participant.ParticipantRoleId = roleId;
|
|
258
|
-
upsert participant;
|
|
259
|
-
}
|
|
260
|
-
}
|
|
261
|
-
|
|
262
|
-
public static void handlePartyProfileParticipants(Id userOrGroupId, String partyProfileId, String roleName) {
|
|
263
|
-
List<PartyProfileParticipant> participants = [SELECT Id, ParticipantRoleId FROM PartyProfileParticipant WHERE ParticipantId =: userOrGroupId AND PartyProfileId=:partyProfileId];
|
|
264
|
-
String roleId = CDSCacheHelper.PARTICIPANT_ROLE_NAME_TO_ID.get(roleName);
|
|
265
|
-
if (participants.size() == 0) {
|
|
266
|
-
PartyProfileParticipant participant = new PartyProfileParticipant(PartyProfileId = partyProfileId,
|
|
267
|
-
IsActive = true,
|
|
268
|
-
ParticipantRoleId = roleId,
|
|
269
|
-
ParticipantId=userOrGroupId);
|
|
270
|
-
insert participant;
|
|
271
|
-
} else {
|
|
272
|
-
PartyProfileParticipant participant = participants.get(0);
|
|
273
|
-
participant.IsActive = true;
|
|
274
|
-
participant.ParticipantRoleId = roleId;
|
|
275
|
-
upsert participant;
|
|
276
|
-
}
|
|
277
|
-
}
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
public static Invocable.Action.Result invokeDecisionMatrix(String decisionMatrixName, String appFormProductStageVal) {
|
|
281
|
-
// Create an Invocable.Action
|
|
282
|
-
Invocable.Action action = Invocable.Action.createCustomAction('runDecisionMatrix', decisionMatrixName);
|
|
283
|
-
action.setInvocationParameter(DM_APP_FORM_PRODUCT_STAGE_FIELD_NAME, appFormProductStageVal);
|
|
284
|
-
List < Invocable.Action.Result > results = action.invoke();
|
|
285
|
-
return results.get(0);
|
|
286
|
-
}
|
|
287
|
-
|
|
288
|
-
public static String getOutputVal(Invocable.Action.Result result, String outputFieldName) {
|
|
289
|
-
return (String) result.getOutputParameters().get(outputFieldName);
|
|
290
|
-
}
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
public class Result {
|
|
294
|
-
@InvocableVariable(label = 'Message'
|
|
295
|
-
description = 'Resulted output of the action.'
|
|
296
|
-
required = true)
|
|
297
|
-
public String message;
|
|
298
|
-
|
|
299
|
-
@InvocableVariable(label = 'Status'
|
|
300
|
-
description = 'Resulted status of the action.'
|
|
301
|
-
required = true)
|
|
302
|
-
public boolean isSuccess;
|
|
303
|
-
}
|
|
304
|
-
}
|
|
305
|
-
```
|
|
306
|
-
|
|
307
|
-
## Deploy path — direct Tooling ApexClass create (dispatchable), with a production deploy fallback + checkpoint
|
|
308
|
-
|
|
309
|
-
Apex is not headlessly *authored* through a Setup Connect API. Create it through the **Tooling REST
|
|
310
|
-
sObjects route** — a plain-JSON HTTP path the hosted agent drives with no CLI, local project, or
|
|
311
|
-
multipart body:
|
|
312
|
-
|
|
313
|
-
1. Read whether each class already exists (`SELECT Id, Name, Status FROM ApexClass WHERE Name IN
|
|
314
|
-
('CDSCacheHelper','AutoLoanCDSUtil')`). Reuse an exact-match class; on a body mismatch, present the
|
|
315
|
-
diff and ask before overwriting.
|
|
316
|
-
2. **Create via the Tooling REST sObjects route (primary, dispatchable, org-verified):** POST
|
|
317
|
-
`/services/data/vXX.0/tooling/sobjects/ApexClass` ONCE PER CLASS with a JSON body
|
|
318
|
-
`{"Name":"...","Body":"<full .cls source>","Status":"Active"}`. Create **CDSCacheHelper first**, then
|
|
319
|
-
**AutoLoanCDSUtil**, so the util compiles against an already-present helper (its `static{}` initializer
|
|
320
|
-
calls `CDSCacheHelper.loadCDSData()`). The response is synchronous `{id, success:true}`; on
|
|
321
|
-
`success:false` read the compile error (there is no async job to poll). This works in sandbox / scratch
|
|
322
|
-
/ developer orgs; production orgs block direct Apex create by platform rule (use the deploy fallback
|
|
323
|
-
below there).
|
|
324
|
-
3. Re-read both classes (`SELECT Id, Name, Status FROM ApexClass WHERE Name IN (...)`) and confirm
|
|
325
|
-
`Status = Active` with no compile errors.
|
|
326
|
-
4. **PRECONDITION — Enhanced Personal Information Management:** `AutoLoanCDSUtil` reads `User.Email`. If
|
|
327
|
-
`UserManagementSettings.enableEnhancedConcealPersonalInfo` is **enabled**, `User.Email` is concealed
|
|
328
|
-
from the Apex compiler for the creating user and the class will **not** compile (`success:false`, a
|
|
329
|
-
"No such column 'Email' on entity 'User'"-class error). This is an org/permission condition — not a
|
|
330
|
-
code defect and not a transport problem (every write channel feeds the same org Apex compiler, so
|
|
331
|
-
switching deploy method does not fix it). Resolve it before creating `AutoLoanCDSUtil` (grant "View All
|
|
332
|
-
Users", or disable Enhanced conceal on a disposable test org); never rewrite the class to dodge it.
|
|
333
|
-
5. **Production / non-dispatchable deploy fallback:** where direct Tooling create is blocked (production),
|
|
334
|
-
deploy the same two class bodies (helper-first, one request) through the Metadata API `deployRequest`
|
|
335
|
-
zip flow. Note this is a **multipart** upload (a binary zip part), so it is NOT drivable by the JSON
|
|
336
|
-
dispatch client — it needs a multipart-capable caller (or, on a local workstation only,
|
|
337
|
-
`sf project deploy start --metadata-dir <dir>`; the hosted agent cannot shell to a CLI). Do NOT use the
|
|
338
|
-
Tooling `MetadataContainer` → `ApexClassMember` → `ContainerAsyncRequest` overwrite flow for these
|
|
339
|
-
classes — its `ApexClassMember` POST has been observed to **500 server-side (org-verified)**.
|
|
340
|
-
6. **Checkpoint fallback:** if no create/deploy path is reachable at all (missing author-apex permission
|
|
341
|
-
and no deploy surface), stop, report the blocker, and hand off the two class bodies inlined above
|
|
342
|
-
("The two Apex classes"). Do not report the sibling complete without the classes present.
|
|
343
|
-
|
|
344
|
-
## The autolaunched Flow
|
|
345
|
-
|
|
346
|
-
Create the **`Digital Lending Stage Management`** autolaunched Flow (No Triggers):
|
|
347
|
-
|
|
348
|
-
- One **Action** element running Apex `apex-AutoLoanCDSUtil`, with "Set Input Values" on.
|
|
349
|
-
- A **Variable** resource: API name `RecordId`, data type **Text**, **Available for input** = true — the
|
|
350
|
-
transition rule passes the `ApplicationFormProduct` record Id into it.
|
|
351
|
-
- Label and API name: `Digital Lending Stage Management`.
|
|
352
|
-
- Save and **activate** the Flow.
|
|
353
|
-
|
|
354
|
-
Create the Flow via the **Tooling REST sObjects route (primary, dispatchable, org-verified)**: POST
|
|
355
|
-
`/services/data/vXX.0/tooling/sobjects/Flow` with a JSON body
|
|
356
|
-
`{"FullName":"Digital_Lending_Stage_Management","Metadata":{...}}` — `processType` `AutoLaunchedFlow`, a
|
|
357
|
-
`start` element carrying both `locationX` and `locationY` (both required), the Action element above, the
|
|
358
|
-
`RecordId` Text input variable (`isInput:true`), and `status` `Active`. Create it **after** the Apex
|
|
359
|
-
classes (its Action references `apex-AutoLoanCDSUtil`). Then re-read `FlowDefinitionView` / `Flow` to
|
|
360
|
-
confirm the active version references the Apex action. Where direct Tooling Flow create is blocked
|
|
361
|
-
(production), deliver the same `Flow` component through the Metadata API `deployRequest` zip flow — a
|
|
362
|
-
**multipart** upload, so NOT drivable by the JSON dispatch client; it needs a multipart-capable caller (or,
|
|
363
|
-
local workstation only, the `sf` CLI). The stage-transition rules (the `stage-transitions` sibling) bind to
|
|
364
|
-
this Flow by its exact name, so it must be active before transitions are activated.
|
|
365
|
-
|
|
366
|
-
## Idempotency and rollback
|
|
367
|
-
|
|
368
|
-
- Reuse exact-match classes and an exact-match active Flow; do not create suffixed duplicates.
|
|
369
|
-
- On a body/definition mismatch, present the diff and stop.
|
|
370
|
-
- Rollback deletes only artifacts created by this run and only after confirming no transition rule
|
|
371
|
-
depends on the Flow.
|
|
372
|
-
|
|
373
|
-
## Output contract
|
|
374
|
-
|
|
375
|
-
Return: each Apex class Id and Status (or the deploy blocker), and the Flow's API name, active version
|
|
376
|
-
number, and confirmation that its Action element calls `apex-AutoLoanCDSUtil` with the `RecordId` input.
|
|
377
|
-
|
|
378
|
-
## Definition of done
|
|
379
|
-
|
|
380
|
-
`CDSCacheHelper` and `AutoLoanCDSUtil` are deployed and Active (deploying the verbatim bodies inlined
|
|
381
|
-
above; or a deploy blocker is reported with those bodies handed off), and the
|
|
382
|
-
`Digital Lending Stage Management` autolaunched Flow is active with a `RecordId`
|
|
383
|
-
Text input variable and an Action element invoking `apex-AutoLoanCDSUtil`. A partial run is never reported
|
|
384
|
-
as complete.
|
|
@@ -1,144 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: fsc-stage-management-compliant-data-sharing-configure
|
|
3
|
-
parent: "digital-origination-stage-management-setup"
|
|
4
|
-
purpose: "Configure Compliant Data Sharing for stage management — org-wide sharing, the two CDS permission sets, object enablement, participant roles, and participant groups."
|
|
5
|
-
description: "Configure Compliant Data Sharing (CDS) for Stage Management for Digital Lending: set org-wide sharing for the Application Form, Application Form Product, and Party Profile objects to Private or Public Read-Only; create the FSCCDSUser and FSCCDSConfigUser permission sets; enable CDS on those three objects; create the nine participant roles (No Access / Read Write / Read Only per object); and create the Agent_Group and Underwriter_Group participant groups. These artifacts carry exact API names the CDS Apex resolves at runtime, so it never invents or renames them silently."
|
|
6
|
-
metadata:
|
|
7
|
-
version: "1.0"
|
|
8
|
-
cliTools:
|
|
9
|
-
- tool:
|
|
10
|
-
- "sf"
|
|
11
|
-
semver: ">=2.0.0"
|
|
12
|
-
---
|
|
13
|
-
|
|
14
|
-
# Digital Origination Stage Management — Compliant Data Sharing
|
|
15
|
-
|
|
16
|
-
Set up the Compliant Data Sharing foundation that Stage Management drives. As an application form product
|
|
17
|
-
moves through its stages, the CDS Apex creates or updates participant records so bankers, underwriters,
|
|
18
|
-
and applicants gain or lose access. This sibling creates every CDS artifact those participant records
|
|
19
|
-
depend on. It does not deploy the Apex, create the Flow, build the matrices, or create the stage
|
|
20
|
-
definition.
|
|
21
|
-
|
|
22
|
-
Source: Salesforce Help "Set Up Compliant Data Sharing for Stage Management Digital Lending" and its
|
|
23
|
-
five child articles (CDS permission sets, object enablement, participant roles, participant groups).
|
|
24
|
-
|
|
25
|
-
## Inputs
|
|
26
|
-
|
|
27
|
-
- Target-org alias and acting admin.
|
|
28
|
-
- The three objects are fixed by the feature: `ApplicationForm`, `ApplicationFormProduct`, `PartyProfile`.
|
|
29
|
-
- The admin's per-stage access policy (which role gets Read/Write, Read Only, or No Access at each stage)
|
|
30
|
-
— this drives the participant-role set and, later, the decision-matrix rows. Do not infer it.
|
|
31
|
-
|
|
32
|
-
## The exact-name contract
|
|
33
|
-
|
|
34
|
-
The CDS Apex (`AutoLoanCDSUtil`) resolves these artifacts **by API/developer name at runtime**. Create
|
|
35
|
-
them with exactly these names, or thread any admin-approved rename into the Apex before it is deployed:
|
|
36
|
-
|
|
37
|
-
- CDS user permission set: `FSCCDSUser`
|
|
38
|
-
- Participant groups: `Agent_Group`, `Underwriter_Group`
|
|
39
|
-
- Participant role API names begin with `ApplicationForm`, `ApplicationFormProduct`, `PartyProfile`.
|
|
40
|
-
|
|
41
|
-
## Step 1 — Org-wide sharing
|
|
42
|
-
|
|
43
|
-
Set the org-wide default sharing for `ApplicationForm`, `ApplicationFormProduct`, and `PartyProfile` to
|
|
44
|
-
**Private** or **Public Read-Only** (CDS requires the baseline be no broader than Read-Only so CDS grants
|
|
45
|
-
are additive). Confirm the current setting first; report a change as an org-wide effect and apply only
|
|
46
|
-
after confirming the target org. Follow Salesforce Help "Configure Your Org for Compliant Data Sharing",
|
|
47
|
-
"Configure Page Layouts for CDS", and "Manage Users in CDS" for the page-layout and user steps.
|
|
48
|
-
|
|
49
|
-
## Step 2 — CDS permission sets
|
|
50
|
-
|
|
51
|
-
Create two permission sets (License = **None** on both):
|
|
52
|
-
|
|
53
|
-
- **`FSCCDSUser`** (label `FSCCDSUser`) — grant the **Use Compliant Data Sharing** system permission.
|
|
54
|
-
On a headless `PermissionSet` write the literal field is **`PermissionsUseCompliantDataSharing = true`**.
|
|
55
|
-
This exact developer name is referenced by the Apex; a rename must be threaded into the Apex constant.
|
|
56
|
-
- **`FSCCDSConfigUser`** (label `FSCCDSConfigUser`) — grant **Configure Compliant Data Sharing**
|
|
57
|
-
(field **`PermissionsConfigCompliantDataSharing = true`**); deselect **Use Compliant Data Sharing**
|
|
58
|
-
(`PermissionsUseCompliantDataSharing = false`) if it was set.
|
|
59
|
-
|
|
60
|
-
Create them via the Metadata/Tooling API (or sObject REST for `PermissionSet` + `SetupEntityAccess` /
|
|
61
|
-
`PermissionSetPermissions` where available), describing first. Reuse an exact-match existing set rather
|
|
62
|
-
than creating a duplicate.
|
|
63
|
-
|
|
64
|
-
## Step 3 — Enable CDS on the objects (proven: Metadata API `IndustriesSettings`)
|
|
65
|
-
|
|
66
|
-
Turn on Compliant Data Sharing for `ApplicationForm`, `ApplicationFormProduct`, and `PartyProfile`.
|
|
67
|
-
**The proven headless path is a Metadata API `IndustriesSettings` deploy** (org-verified on fsc-dop8,
|
|
68
|
-
v63.0) — the Aura `updateEntityPreference` write 501s and the Org Preferences API rejects the `Cds*`
|
|
69
|
-
bits, so use MDAPI:
|
|
70
|
-
|
|
71
|
-
```xml
|
|
72
|
-
<!-- Industries.settings (MDAPI filename MUST be Industries.settings, NOT source-format .settings-meta.xml) -->
|
|
73
|
-
<IndustriesSettings xmlns="http://soap.sforce.com/2006/04/metadata">
|
|
74
|
-
<enableCdsApplicationForm>true</enableCdsApplicationForm>
|
|
75
|
-
<enableCdsApplicationFormProduct>true</enableCdsApplicationFormProduct>
|
|
76
|
-
<enableCdsPartyProfile>true</enableCdsPartyProfile>
|
|
77
|
-
</IndustriesSettings>
|
|
78
|
-
```
|
|
79
|
-
|
|
80
|
-
Package this with `package.xml` (`<members>Industries</members>` / `<name>Settings</name>`) and deploy it
|
|
81
|
-
**headlessly through the Metadata API REST `deployRequest` endpoint** (base64-zip POST, then poll the
|
|
82
|
-
deploy status) — no CLI required. Re-read the entity CDS state (`describe`) to confirm. (On a local
|
|
83
|
-
workstation the same zip can be deployed with `sf project deploy start --metadata-dir <dir>` — local-dev
|
|
84
|
-
convenience only, not a served path.) If the org disallows Metadata deploys, fall back to Setup →
|
|
85
|
-
**Object Enablement Settings** (turn on for CRM and Experience Cloud users) and stop at the Setup
|
|
86
|
-
checkpoint until the admin confirms.
|
|
87
|
-
|
|
88
|
-
## Step 4 — Participant roles
|
|
89
|
-
|
|
90
|
-
For each of the three objects, create **No Access**, **Read/Write**, and **Read Only** participant roles
|
|
91
|
-
(nine total) via Setup → **Participant Roles** → New (or the corresponding sObject/Metadata write,
|
|
92
|
-
describe-first). Each role has a Name, an API name, a parent object, and a default access level. The Apex
|
|
93
|
-
matches roles by API-name prefix, so keep the object prefix exact:
|
|
94
|
-
|
|
95
|
-
| Object | Example role API names | Default access |
|
|
96
|
-
|---|---|---|
|
|
97
|
-
| Application Form | `ApplicationFormNoAccess`, `ApplicationFormRW`, `ApplicationFormRead` | No Access / Read Write / Read Only |
|
|
98
|
-
| Application Form Product | `ApplicationFormProductNoAccess`, `ApplicationFormProductRW`, `ApplicationFormProductRead` | No Access / Read Write / Read Only |
|
|
99
|
-
| Party Profile | `PartyProfileNoAccess`, `PartyProfileRW`, `PartyProfileRead` | No Access / Read Write / Read Only |
|
|
100
|
-
|
|
101
|
-
The exact role API names must match the tokens the admin's decision-matrix rows emit (the
|
|
102
|
-
`HomeLoan_CDS_Config` matrix outputs comma-separated role lists such as
|
|
103
|
-
`ApplicationFormRW, ApplicationFormProductRW, PartyProfileRW`). Agree the naming with the admin up front
|
|
104
|
-
so roles, matrix rows, and Apex align.
|
|
105
|
-
|
|
106
|
-
## Step 5 — Participant groups
|
|
107
|
-
|
|
108
|
-
Create two participant groups (`Group` sObject with `Type = 'Participant'` — there is no dedicated
|
|
109
|
-
ParticipantGroup entity):
|
|
110
|
-
|
|
111
|
-
- `Agent_Group` (name and developer name `Agent_Group`)
|
|
112
|
-
- `Underwriter_Group` (name and developer name `Underwriter_Group`)
|
|
113
|
-
|
|
114
|
-
These developer names are hardcoded in the Apex (`AGENT_PARTICIPANT_GROUP_NAME` /
|
|
115
|
-
`UNDERWRITER_PARTICIPANT_GROUP_NAME`).
|
|
116
|
-
|
|
117
|
-
**Prerequisite (org-verified):** creating a `Type='Participant'` Group requires the **running/acting
|
|
118
|
-
user** to hold **Configure Compliant Data Sharing** — i.e. assign the `FSCCDSConfigUser` perm set (and
|
|
119
|
-
`FSCCDSUser`) to the acting user *before* this step. Without it the insert fails
|
|
120
|
-
`INSUFFICIENT_ACCESS_ON_CROSS_REFERENCE_ENTITY`. `dispatch` mints a fresh token per call, so a
|
|
121
|
-
just-granted `PermissionSetAssignment` takes effect on the very next call.
|
|
122
|
-
|
|
123
|
-
## Idempotency and rollback
|
|
124
|
-
|
|
125
|
-
- Query for an exact-match perm set, role, or group by API/developer name before creating; reuse it.
|
|
126
|
-
- On a shape mismatch (e.g. a role with the right name but wrong default access), present the diff and
|
|
127
|
-
stop rather than overwriting.
|
|
128
|
-
- Rollback removes only artifacts created by this run, and only after confirming no participant record,
|
|
129
|
-
Apex, or matrix row depends on them.
|
|
130
|
-
- Never change org-wide sharing back without explicit approval — other features may now depend on it.
|
|
131
|
-
|
|
132
|
-
## Output contract
|
|
133
|
-
|
|
134
|
-
Return: the org-wide sharing setting for each object (prior and final), the two perm set Ids and API
|
|
135
|
-
names with their granted permissions, the CDS object-enablement state for all three objects, the nine
|
|
136
|
-
participant role Ids/API names/default access, and the two participant group Ids/developer names.
|
|
137
|
-
|
|
138
|
-
## Definition of done
|
|
139
|
-
|
|
140
|
-
Org-wide sharing for the three objects is Private or Public Read-Only; CDS is enabled on all three; the
|
|
141
|
-
`FSCCDSUser` and `FSCCDSConfigUser` perm sets exist with the correct system permissions; the nine
|
|
142
|
-
participant roles exist with matching API-name prefixes and the intended default access; and the
|
|
143
|
-
`Agent_Group` and `Underwriter_Group` participant groups exist. Any missing feature/object or unresolved
|
|
144
|
-
checkpoint is reported; a partial run is never reported as complete.
|