@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,924 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: health-cloud-provider-search-settings-configure
|
|
3
|
-
description: "Use this skill when users want to dPE-backed Provider Search Settings for Health Cloud. Trigger when users mention provider, search, settings, provider search settings."
|
|
4
|
-
metadata:
|
|
5
|
-
version: "1.0"
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
# Managing Provider Search Settings
|
|
9
|
-
|
|
10
|
-
## When to Use This Skill
|
|
11
|
-
|
|
12
|
-
DPE-backed Provider Search Settings for Health Cloud. Toggle the master Provider Search preference (which atomically disables the legacy provider-search sync preference and triggers Provider Search index-definition creation), and four sub-preferences: sync-job scheduling, precise matching, guest-user access, and the custom transaction-observer flag. Manage the index definition's owner: list Salesforce-licensed users (with a server-set `selected` flag for the current owner), persist a new owner, and propagate the owner change to the existing definition. Also exposes a separate Create-DPE-Definition entry point (operation postProviderSearchDPE) that creates the Provider Search index definition. Two steps (save-frequency, handle-custom-sync) are no-ops that always report success but have no effect; agents should skip them. The master Provider Search preference must be ON before the sub-preference toggles take effect.
|
|
13
|
-
|
|
14
|
-
## Workflow
|
|
15
|
-
|
|
16
|
-
Inspect via get-dpe-settings-org-pref. Enable: toggle-dpe-provider-search (master also creates the Provider Search index definition + disables the legacy sync preference) → 4 sub-preferences (sync-job, precise-matching, guest-user, custom-observer). Owner chain: get-salesforce-licensed-users → save-owner → trigger-owner-id-update-definition. generate-dpe-definition creates the Provider Search index definition (operation postProviderSearchDPE). SKIP save-frequency, handle-custom-sync (they are no-ops). See also the health-cloud-services skill for creating, copying, and updating care requests — including referrals (CareRequest via the Care Services Connect API) — once Provider Search is configured. RESULT-FILTER DEPTH (optional): seed-facility-account-address sets the backing Account's billing address so the DISTANCE / sort-by-distance filter can geocode and resolve; seed-facility-network-panel-status seeds HealthcareFacilityNetwork.PanelStatus ("Panel Open") so the ACCEPTING-NEW-PATIENTS filter has data. Both are optional data- depth enrichments — a minimal searchable row needs neither, and on a customer org the real provider data supplies them. smoke-find-providers exercises name/specialty and (with the address seed) distance search end-to-end. CRITERIA-BASED SEARCH & FILTER (Spring '24+): the ENABLEMENT is in scope and automated — enable-criteria-based-search deploys the Settings:Industries feature flag (enableCriteriaBasedSearchAndFilter) and assign-criteria-based-search-permset grants the internal CriteriaBasedSearchAndFilterPsl runtime permission (both confirmed live). What remains manual is ONLY placing the Criteria-Based Search & Filter Lightning component on an Experience/Lightning page in the builder (no headless enable API) and — for guest/community criteria search — the license-gated Experience-Cloud variant permset (CriteriaBasedSearchFilterExpCloudPsl). OUT OF THIS SOR'S SCOPE — presentation/config that has no headless enable API and is a builder/admin task on the Experience/Lightning page, NOT a step here: placing any search component (incl. Criteria-Based Search & Filter) on a page, the Copy Records / Create Report result actions (Create Referral is delegated to the health-cloud-services skill), and per-component display options. Constructing/serving the L2 Provider Search Agentforce agent is license-gated at activation and not closeable here. These are documented rather than stubbed so the SOR does not silently imply it configures them.
|
|
17
|
-
|
|
18
|
-
## Critical Constraints
|
|
19
|
-
|
|
20
|
-
**Preconditions:**
|
|
21
|
-
|
|
22
|
-
- User must have the Customize Application or System Administrator permission — the setup page and its precise-matching, custom-observer, save-frequency, handle-custom-sync, and generate-dpe-definition actions are all access-guarded on it. (check: `Customize Application permission`)
|
|
23
|
-
- Org must have the Health Cloud org permission — both the setup page and its actions are guarded by it. (check: `Health Cloud access`)
|
|
24
|
-
- Org must hold the Health Cloud + Einstein/Data Pipelines license entitlement (the DPE settings read reflects this). This is the license/entitlement gate only. The Data Pipeline / Sonic / DPE org PREFERENCE that the master toggle also requires is NOT a manual prerequisite — the recipe enables it itself via enable-data-processing-engine (and assign-data-pipelines-base-user). Do not stop to enable Data Pipelines by hand; the recipe owns it. (check: `a license/entitlement`)
|
|
25
|
-
|
|
26
|
-
## Verification Checklist
|
|
27
|
-
|
|
28
|
-
After every write operation, confirm the effect by re-reading state:
|
|
29
|
-
|
|
30
|
-
- After `toggle-dpe-provider-search`: call `verify-toggle-dpe-provider-search` (`GET /headless/invoke/platform/provider-search-settings`)
|
|
31
|
-
- After `toggle-provider-search-sync-job`: call `verify-toggle-provider-search-sync-job` (`GET /headless/invoke/platform/provider-search-settings`)
|
|
32
|
-
- After `toggle-provider-search-precise-matching`: call `verify-toggle-provider-search-precise-matching` (`GET /headless/invoke/platform/provider-search-settings`)
|
|
33
|
-
- After `toggle-provider-search-for-guest-user`: call `verify-toggle-provider-search-for-guest-user` (`GET /headless/invoke/platform/provider-search-settings`)
|
|
34
|
-
- After `toggle-custom-dpe-transaction-observer`: call `verify-toggle-custom-dpe-transaction-observer` (`GET /headless/invoke/platform/provider-search-settings`)
|
|
35
|
-
- After `write-org-wide-sharing-defaults`: call `verify-write-org-wide-sharing-defaults`
|
|
36
|
-
- After `create-guest-search-site`: call `verify-create-guest-search-site`
|
|
37
|
-
- After `deploy-provider-directory-component`: call `verify-provider-directory-component` (`POST /headless/metadata`)
|
|
38
|
-
- After `publish-guest-search-site`: call `verify-publish-guest-search-site`
|
|
39
|
-
- After `activate-guest-search-site`: call `verify-activate-guest-search-site`
|
|
40
|
-
- After `enable-health-cloud-genai`: call `verify-enable-health-cloud-genai`
|
|
41
|
-
- After `enable-context-service`: call `verify-context-service-member-profile` (`GET /connect/contextservice/access/{preferenceName}/{uniqueIdentifier}`)
|
|
42
|
-
- After `verify-provider-search-sync-populated`: call `smoke-find-providers` (`GET /headless/invoke/industries/industries-healthcare/care-provider-search/find-providers`)
|
|
43
|
-
- After `smoke-find-providers`, `grant-guest-profile-provider-object-read`, `enable-criteria-based-search`: call `report-provider-search-capability-status`
|
|
44
|
-
|
|
45
|
-
## Operations Reference
|
|
46
|
-
|
|
47
|
-
Operations grouped by purpose. Use these as the building blocks for the workflows above.
|
|
48
|
-
|
|
49
|
-
### Summary
|
|
50
|
-
|
|
51
|
-
| Operation | Purpose | Status | Call | Depends on |
|
|
52
|
-
|-----------|---------|--------|------|------------|
|
|
53
|
-
| `get-dpe-settings-org-pref` | read | proposed | `GET /headless/invoke/platform/provider-search-settings` | — |
|
|
54
|
-
| `toggle-dpe-provider-search` | write | proposed | `PATCH /headless/invoke/platform/provider-search-settings/handle-dpe-provider-search-toggle` | `enable-data-processing-engine` |
|
|
55
|
-
| `toggle-provider-search-sync-job` | write | proposed | `PATCH /headless/invoke/platform/provider-search-settings/handle-provider-search-sync-job-toggle` | `toggle-dpe-provider-search`, `seed-provider-facility-specialty` |
|
|
56
|
-
| `toggle-provider-search-precise-matching` | write | proposed | `PATCH /headless/invoke/platform/provider-search-settings/handle-provider-search-precise-matching-toggle` | `toggle-dpe-provider-search` |
|
|
57
|
-
| `toggle-provider-search-for-guest-user` | write | proposed | `PATCH /headless/invoke/platform/provider-search-settings/handle-provider-search-for-guest-user-toggle` | `toggle-dpe-provider-search` |
|
|
58
|
-
| `toggle-custom-dpe-transaction-observer` | write | proposed | `PATCH /headless/invoke/platform/provider-search-settings/handle-custom-dpe-transaction-observer-user-toggle` | `toggle-dpe-provider-search`, `save-owner` |
|
|
59
|
-
| `get-salesforce-licensed-users` | read | implemented | `GET /headless/invoke/platform/provider-search-settings/get-salesforce-licensed-users` | `enable-provider-search-for-guest-user` |
|
|
60
|
-
| `save-owner` | write | implemented | `PATCH /headless/invoke/platform/provider-search-settings/save-owner` | `get-salesforce-licensed-users`, `enable-provider-search-for-guest-user`, `assign-health-cloud-provider-permsets` |
|
|
61
|
-
| `trigger-owner-id-update-definition` | write | proposed | `PATCH /headless/invoke/platform/provider-search-settings/trigger-owner-id-update-definition` | `save-owner`, `assign-health-cloud-provider-permsets` |
|
|
62
|
-
| `save-frequency` | write | proposed | `PATCH /headless/invoke/platform/provider-search-settings/save-frequency` | — |
|
|
63
|
-
| `handle-custom-sync` | write | proposed | `PATCH /headless/invoke/platform/provider-search-settings/handle-custom-sync` | — |
|
|
64
|
-
| `generate-dpe-definition` | write | implemented | `PATCH /headless/invoke/platform/provider-search-settings/generate-dpedefinition` | `assign-health-cloud-provider-permsets` |
|
|
65
|
-
| `verify-toggle-dpe-provider-search` | verify | — | `GET /headless/invoke/platform/provider-search-settings` | `toggle-dpe-provider-search` |
|
|
66
|
-
| `verify-toggle-provider-search-sync-job` | verify | — | `GET /headless/invoke/platform/provider-search-settings` | `toggle-provider-search-sync-job` |
|
|
67
|
-
| `verify-toggle-provider-search-precise-matching` | verify | — | `GET /headless/invoke/platform/provider-search-settings` | `toggle-provider-search-precise-matching` |
|
|
68
|
-
| `verify-toggle-provider-search-for-guest-user` | verify | — | `GET /headless/invoke/platform/provider-search-settings` | `toggle-provider-search-for-guest-user` |
|
|
69
|
-
| `verify-toggle-custom-dpe-transaction-observer` | verify | — | `GET /headless/invoke/platform/provider-search-settings` | `toggle-custom-dpe-transaction-observer` |
|
|
70
|
-
| `enable-data-processing-engine` | write | proposed | `PATCH /headless/invoke/platform/sonic-getting-started/handle-sonic-pref` | `assign-data-pipelines-base-user` |
|
|
71
|
-
| `assign-data-pipelines-base-user` | write | implemented | `sobjects/PermissionSetAssignment` | — |
|
|
72
|
-
| `assign-health-cloud-provider-permsets` | write | implemented | `sobjects/PermissionSetAssignment` | `assign-data-pipelines-base-user` |
|
|
73
|
-
| `ensure-searchable-field-custom-field` | write | implemented | `/headless/metadata` | — |
|
|
74
|
-
| `configure-care-provider-search` | write | implemented | `sobjects/CareProviderSearchConfig` | `ensure-searchable-field-custom-field` |
|
|
75
|
-
| `configure-care-provider-affl-role` | write | implemented | `sobjects/CareProviderAfflRoleConfig` | `configure-care-provider-search` |
|
|
76
|
-
| `seed-care-specialty` | write | implemented | `sobjects/CareSpecialty` | `configure-care-provider-affl-role`, `assign-health-cloud-provider-permsets` |
|
|
77
|
-
| `seed-healthcare-provider` | write | implemented | `sobjects/HealthcareProvider` | `seed-care-specialty` |
|
|
78
|
-
| `seed-healthcare-facility` | write | implemented | `sobjects/HealthcareProvider` | `seed-healthcare-provider` |
|
|
79
|
-
| `seed-practitioner-facility` | write | implemented | `sobjects/HealthcarePractitionerFacility` | `seed-healthcare-provider` |
|
|
80
|
-
| `seed-provider-facility-specialty` | write | implemented | `sobjects/CareProviderFacilitySpecialty` | `seed-care-specialty`, `seed-practitioner-facility` |
|
|
81
|
-
| `write-org-wide-sharing-defaults` | write | implemented | `/headless/metadata` | — |
|
|
82
|
-
| `verify-write-org-wide-sharing-defaults` | verify | — | `verifyOrgWideSharingDefaults` | `write-org-wide-sharing-defaults` |
|
|
83
|
-
| `enable-digital-experiences` | write | implemented | `POST /headless/metadata` | — |
|
|
84
|
-
| `read-experience-site-templates` | read | implemented | `GET /connect/communities/templates` | `enable-digital-experiences` |
|
|
85
|
-
| `create-guest-search-site` | write | implemented | `POST /connect/communities` | `read-experience-site-templates` |
|
|
86
|
-
| `verify-create-guest-search-site` | verify | — | `BackgroundOperation.query` | `create-guest-search-site` |
|
|
87
|
-
| `deploy-provider-directory-component` | write | implemented | `POST /headless/metadata` | `verify-create-guest-search-site`, `enable-experience-bundle-metadata`, `toggle-dpe-provider-search`, `enable-provider-search-for-guest-user` |
|
|
88
|
-
| `verify-provider-directory-component` | verify | — | `POST /headless/metadata` | `deploy-provider-directory-component` |
|
|
89
|
-
| `publish-guest-search-site` | write | implemented | `POST /connect/communities/{communityId}/publish` | `verify-provider-directory-component` |
|
|
90
|
-
| `verify-publish-guest-search-site` | verify | — | `BackgroundOperation.query` | `publish-guest-search-site` |
|
|
91
|
-
| `activate-guest-search-site` | write | implemented | `Network.update` | `verify-publish-guest-search-site` |
|
|
92
|
-
| `verify-activate-guest-search-site` | verify | — | `Network.query` | `activate-guest-search-site` |
|
|
93
|
-
| `enable-health-cloud-genai` | write | implemented | `POST /headless/metadata` | — |
|
|
94
|
-
| `verify-enable-health-cloud-genai` | verify | — | `IndustriesSettings.query` | `enable-health-cloud-genai` |
|
|
95
|
-
| `enable-context-service` | write | implemented | `PUT /connect/contextservice/access/{preferenceName}/{uniqueIdentifier}` | `verify-enable-health-cloud-genai` |
|
|
96
|
-
| `verify-context-service-member-profile` | verify | — | `GET /connect/contextservice/access/{preferenceName}/{uniqueIdentifier}` | `enable-context-service` |
|
|
97
|
-
| `smoke-find-providers` | verify | proposed | `GET /headless/invoke/industries/industries-healthcare/care-provider-search/find-providers` | `verify-provider-search-sync-populated` |
|
|
98
|
-
| `enable-provider-search-for-guest-user` | write | implemented | `POST /headless/metadata` | — |
|
|
99
|
-
| `enable-experience-bundle-metadata` | write | implemented | `POST /headless/metadata` | `enable-digital-experiences` |
|
|
100
|
-
| `seed-facility-account-address` | write | implemented | `sobjects/Account` | `seed-healthcare-facility` |
|
|
101
|
-
| `seed-facility-network-panel-status` | write | implemented | `sobjects/HealthcareFacilityNetwork` | `seed-practitioner-facility` |
|
|
102
|
-
| `enable-criteria-based-search` | write | implemented | `POST /headless/metadata` | — |
|
|
103
|
-
| `assign-criteria-based-search-permset` | write | implemented | `sobjects/PermissionSetAssignment` | `enable-criteria-based-search` |
|
|
104
|
-
| `create-referral-from-search` | write | implemented | `POST /connect/health/referral-management/referrals` | `seed-provider-facility-specialty` |
|
|
105
|
-
| `grant-guest-profile-provider-object-read` | write | implemented | `POST /headless/metadata` | `enable-provider-search-for-guest-user`, `write-org-wide-sharing-defaults` |
|
|
106
|
-
| `report-provider-search-capability-status` | verify | implemented | `reportProviderSearchCapabilityStatus` | `smoke-find-providers`, `grant-guest-profile-provider-object-read`, `enable-criteria-based-search` |
|
|
107
|
-
| `deploy-provider-search-flexipage` | write | implemented | `POST /headless/metadata` | `enable-criteria-based-search`, `assign-criteria-based-search-permset` |
|
|
108
|
-
| `assign-provider-search-flexipage-activation` | write | implemented | `POST /headless/metadata` | `deploy-provider-search-flexipage` |
|
|
109
|
-
|
|
110
|
-
### Dependency graph
|
|
111
|
-
|
|
112
|
-
```mermaid
|
|
113
|
-
graph TD
|
|
114
|
-
get_dpe_settings_org_pref["get-dpe-settings-org-pref (read)"]
|
|
115
|
-
toggle_dpe_provider_search["toggle-dpe-provider-search (write)"]
|
|
116
|
-
toggle_provider_search_sync_job["toggle-provider-search-sync-job (write)"]
|
|
117
|
-
toggle_provider_search_precise_matching["toggle-provider-search-precise-matching (write)"]
|
|
118
|
-
toggle_provider_search_for_guest_user["toggle-provider-search-for-guest-user (write)"]
|
|
119
|
-
toggle_custom_dpe_transaction_observer["toggle-custom-dpe-transaction-observer (write)"]
|
|
120
|
-
get_salesforce_licensed_users["get-salesforce-licensed-users (read)"]
|
|
121
|
-
save_owner["save-owner (write)"]
|
|
122
|
-
trigger_owner_id_update_definition["trigger-owner-id-update-definition (write)"]
|
|
123
|
-
save_frequency["save-frequency (write)"]
|
|
124
|
-
handle_custom_sync["handle-custom-sync (write)"]
|
|
125
|
-
generate_dpe_definition["generate-dpe-definition (write)"]
|
|
126
|
-
verify_toggle_dpe_provider_search["verify-toggle-dpe-provider-search (verify)"]
|
|
127
|
-
verify_toggle_provider_search_sync_job["verify-toggle-provider-search-sync-job (verify)"]
|
|
128
|
-
verify_toggle_provider_search_precise_matching["verify-toggle-provider-search-precise-matching (verify)"]
|
|
129
|
-
verify_toggle_provider_search_for_guest_user["verify-toggle-provider-search-for-guest-user (verify)"]
|
|
130
|
-
verify_toggle_custom_dpe_transaction_observer["verify-toggle-custom-dpe-transaction-observer (verify)"]
|
|
131
|
-
enable_data_processing_engine["enable-data-processing-engine (write)"]
|
|
132
|
-
assign_data_pipelines_base_user["assign-data-pipelines-base-user (write)"]
|
|
133
|
-
assign_health_cloud_provider_permsets["assign-health-cloud-provider-permsets (write)"]
|
|
134
|
-
ensure_searchable_field_custom_field["ensure-searchable-field-custom-field (write)"]
|
|
135
|
-
configure_care_provider_search["configure-care-provider-search (write)"]
|
|
136
|
-
configure_care_provider_affl_role["configure-care-provider-affl-role (write)"]
|
|
137
|
-
seed_care_specialty["seed-care-specialty (write)"]
|
|
138
|
-
seed_healthcare_provider["seed-healthcare-provider (write)"]
|
|
139
|
-
seed_healthcare_facility["seed-healthcare-facility (write)"]
|
|
140
|
-
seed_practitioner_facility["seed-practitioner-facility (write)"]
|
|
141
|
-
seed_provider_facility_specialty["seed-provider-facility-specialty (write)"]
|
|
142
|
-
write_org_wide_sharing_defaults["write-org-wide-sharing-defaults (write)"]
|
|
143
|
-
verify_write_org_wide_sharing_defaults["verify-write-org-wide-sharing-defaults (verify)"]
|
|
144
|
-
enable_digital_experiences["enable-digital-experiences (write)"]
|
|
145
|
-
read_experience_site_templates["read-experience-site-templates (read)"]
|
|
146
|
-
create_guest_search_site["create-guest-search-site (write)"]
|
|
147
|
-
verify_create_guest_search_site["verify-create-guest-search-site (verify)"]
|
|
148
|
-
deploy_provider_directory_component["deploy-provider-directory-component (write)"]
|
|
149
|
-
verify_provider_directory_component["verify-provider-directory-component (verify)"]
|
|
150
|
-
publish_guest_search_site["publish-guest-search-site (write)"]
|
|
151
|
-
verify_publish_guest_search_site["verify-publish-guest-search-site (verify)"]
|
|
152
|
-
activate_guest_search_site["activate-guest-search-site (write)"]
|
|
153
|
-
verify_activate_guest_search_site["verify-activate-guest-search-site (verify)"]
|
|
154
|
-
enable_health_cloud_genai["enable-health-cloud-genai (write)"]
|
|
155
|
-
verify_enable_health_cloud_genai["verify-enable-health-cloud-genai (verify)"]
|
|
156
|
-
enable_context_service["enable-context-service (write)"]
|
|
157
|
-
verify_context_service_member_profile["verify-context-service-member-profile (verify)"]
|
|
158
|
-
smoke_find_providers["smoke-find-providers (verify)"]
|
|
159
|
-
enable_provider_search_for_guest_user["enable-provider-search-for-guest-user (write)"]
|
|
160
|
-
enable_experience_bundle_metadata["enable-experience-bundle-metadata (write)"]
|
|
161
|
-
seed_facility_account_address["seed-facility-account-address (write)"]
|
|
162
|
-
seed_facility_network_panel_status["seed-facility-network-panel-status (write)"]
|
|
163
|
-
enable_criteria_based_search["enable-criteria-based-search (write)"]
|
|
164
|
-
assign_criteria_based_search_permset["assign-criteria-based-search-permset (write)"]
|
|
165
|
-
create_referral_from_search["create-referral-from-search (write)"]
|
|
166
|
-
grant_guest_profile_provider_object_read["grant-guest-profile-provider-object-read (write)"]
|
|
167
|
-
report_provider_search_capability_status["report-provider-search-capability-status (verify)"]
|
|
168
|
-
deploy_provider_search_flexipage["deploy-provider-search-flexipage (write)"]
|
|
169
|
-
assign_provider_search_flexipage_activation["assign-provider-search-flexipage-activation (write)"]
|
|
170
|
-
enable_data_processing_engine --> toggle_dpe_provider_search
|
|
171
|
-
toggle_dpe_provider_search --> toggle_provider_search_sync_job
|
|
172
|
-
seed_provider_facility_specialty --> toggle_provider_search_sync_job
|
|
173
|
-
toggle_dpe_provider_search --> toggle_provider_search_precise_matching
|
|
174
|
-
toggle_dpe_provider_search --> toggle_provider_search_for_guest_user
|
|
175
|
-
toggle_dpe_provider_search --> toggle_custom_dpe_transaction_observer
|
|
176
|
-
save_owner --> toggle_custom_dpe_transaction_observer
|
|
177
|
-
enable_provider_search_for_guest_user --> get_salesforce_licensed_users
|
|
178
|
-
get_salesforce_licensed_users --> save_owner
|
|
179
|
-
enable_provider_search_for_guest_user --> save_owner
|
|
180
|
-
assign_health_cloud_provider_permsets --> save_owner
|
|
181
|
-
save_owner --> trigger_owner_id_update_definition
|
|
182
|
-
assign_health_cloud_provider_permsets --> trigger_owner_id_update_definition
|
|
183
|
-
assign_health_cloud_provider_permsets --> generate_dpe_definition
|
|
184
|
-
toggle_dpe_provider_search --> verify_toggle_dpe_provider_search
|
|
185
|
-
toggle_provider_search_sync_job --> verify_toggle_provider_search_sync_job
|
|
186
|
-
toggle_provider_search_precise_matching --> verify_toggle_provider_search_precise_matching
|
|
187
|
-
toggle_provider_search_for_guest_user --> verify_toggle_provider_search_for_guest_user
|
|
188
|
-
toggle_custom_dpe_transaction_observer --> verify_toggle_custom_dpe_transaction_observer
|
|
189
|
-
assign_data_pipelines_base_user --> enable_data_processing_engine
|
|
190
|
-
assign_data_pipelines_base_user --> assign_health_cloud_provider_permsets
|
|
191
|
-
ensure_searchable_field_custom_field --> configure_care_provider_search
|
|
192
|
-
configure_care_provider_search --> configure_care_provider_affl_role
|
|
193
|
-
configure_care_provider_affl_role --> seed_care_specialty
|
|
194
|
-
assign_health_cloud_provider_permsets --> seed_care_specialty
|
|
195
|
-
seed_care_specialty --> seed_healthcare_provider
|
|
196
|
-
seed_healthcare_provider --> seed_healthcare_facility
|
|
197
|
-
seed_healthcare_provider --> seed_practitioner_facility
|
|
198
|
-
seed_care_specialty --> seed_provider_facility_specialty
|
|
199
|
-
seed_practitioner_facility --> seed_provider_facility_specialty
|
|
200
|
-
write_org_wide_sharing_defaults --> verify_write_org_wide_sharing_defaults
|
|
201
|
-
enable_digital_experiences --> read_experience_site_templates
|
|
202
|
-
read_experience_site_templates --> create_guest_search_site
|
|
203
|
-
create_guest_search_site --> verify_create_guest_search_site
|
|
204
|
-
verify_create_guest_search_site --> deploy_provider_directory_component
|
|
205
|
-
enable_experience_bundle_metadata --> deploy_provider_directory_component
|
|
206
|
-
toggle_dpe_provider_search --> deploy_provider_directory_component
|
|
207
|
-
enable_provider_search_for_guest_user --> deploy_provider_directory_component
|
|
208
|
-
deploy_provider_directory_component --> verify_provider_directory_component
|
|
209
|
-
verify_provider_directory_component --> publish_guest_search_site
|
|
210
|
-
publish_guest_search_site --> verify_publish_guest_search_site
|
|
211
|
-
verify_publish_guest_search_site --> activate_guest_search_site
|
|
212
|
-
activate_guest_search_site --> verify_activate_guest_search_site
|
|
213
|
-
enable_health_cloud_genai --> verify_enable_health_cloud_genai
|
|
214
|
-
verify_enable_health_cloud_genai --> enable_context_service
|
|
215
|
-
enable_context_service --> verify_context_service_member_profile
|
|
216
|
-
enable_digital_experiences --> enable_experience_bundle_metadata
|
|
217
|
-
seed_healthcare_facility --> seed_facility_account_address
|
|
218
|
-
seed_practitioner_facility --> seed_facility_network_panel_status
|
|
219
|
-
enable_criteria_based_search --> assign_criteria_based_search_permset
|
|
220
|
-
seed_provider_facility_specialty --> create_referral_from_search
|
|
221
|
-
enable_provider_search_for_guest_user --> grant_guest_profile_provider_object_read
|
|
222
|
-
write_org_wide_sharing_defaults --> grant_guest_profile_provider_object_read
|
|
223
|
-
smoke_find_providers --> report_provider_search_capability_status
|
|
224
|
-
grant_guest_profile_provider_object_read --> report_provider_search_capability_status
|
|
225
|
-
enable_criteria_based_search --> report_provider_search_capability_status
|
|
226
|
-
enable_criteria_based_search --> deploy_provider_search_flexipage
|
|
227
|
-
assign_criteria_based_search_permset --> deploy_provider_search_flexipage
|
|
228
|
-
deploy_provider_search_flexipage --> assign_provider_search_flexipage_activation
|
|
229
|
-
```
|
|
230
|
-
|
|
231
|
-
### Read operations
|
|
232
|
-
|
|
233
|
-
#### `get-dpe-settings-org-pref`
|
|
234
|
-
|
|
235
|
-
Read the current Provider Search preference state. Returns a boolean map with keys isDpeOrgPreferenceEnabled, isDpeSyncEnabled, isProviderSearchPreciseMatchingEnabled, isProviderSearchForGuestUserEnabled, isCustomDpeTransactionObserverEnabled, plus an entitlement indicator reflecting whether the org holds the Einstein + Health Cloud licensing the feature requires. This read is the only reachable surface for these preferences; there is no public alternative.
|
|
236
|
-
|
|
237
|
-
**Call:** `GET /headless/invoke/platform/provider-search-settings` — status: `proposed`
|
|
238
|
-
|
|
239
|
-
**Output:** Boolean map with keys isDpeOrgPreferenceEnabled, isDpeSyncEnabled, isProviderSearchPreciseMatchingEnabled, isProviderSearchForGuestUserEnabled, isCustomDpeTransactionObserverEnabled, plus an entitlement indicator reflecting whether the org holds the required Einstein + Health Cloud licensing.
|
|
240
|
-
|
|
241
|
-
#### `get-salesforce-licensed-users`
|
|
242
|
-
|
|
243
|
-
List Salesforce-licensed users eligible to own the Provider Search index definition. Returns id, name, profileName, email, and a server-computed `selected` boolean flagging the currently-saved owner. This is the only reachable surface — a raw User query would lose the server-side `selected` join.
|
|
244
|
-
|
|
245
|
-
**Call:** `GET /headless/invoke/platform/provider-search-settings/get-salesforce-licensed-users` — status: `implemented`
|
|
246
|
-
|
|
247
|
-
**Depends on:** `enable-provider-search-for-guest-user`
|
|
248
|
-
|
|
249
|
-
**Output:** List of UserInfo records, each carrying id, name, profileName, email, and a server-computed `selected: boolean` flag (true for the currently-saved DPE owner).
|
|
250
|
-
|
|
251
|
-
#### `read-experience-site-templates`
|
|
252
|
-
|
|
253
|
-
List the available Experience Cloud site templates and locate an AURA-runtime template that backs a guest provider-directory site. The response is CommunityTemplateCollectionRepresentation {templates:[{templateName, publisher}], total}. CRITICAL: the Health Cloud provider-search component placed later (healthcloud:providerSearchCommunity) is an AURA community component — it implements forceCommunity:availableForAllPageTypes and is available ONLY in the Aura community component palette. It is NOT placeable on a Lightning Web Runtime (LWR) site: an LWR site (e.g. "Build Your Own (LWR)") will DEPLOY the component node into content.json successfully but then FAIL AT PUBLISH with the generic "component ... does not exist" (the LWR runtime cannot resolve an Aura community component). Select an AURA-runtime template here — e.g. "Customer Service" or an Aura "Build Your Own" (NOT the "(LWR)" variant) — and pass that exact templateName to create-guest-search-site. This is the first step of the guest-site creation recipe; it needs Digital Experiences already enabled (authored as the enable-digital-experiences step above, which this step depends on).
|
|
254
|
-
|
|
255
|
-
**Call:** `GET /connect/communities/templates` — status: `implemented`
|
|
256
|
-
|
|
257
|
-
**Depends on:** `enable-digital-experiences`
|
|
258
|
-
|
|
259
|
-
**Output:** templates[]: each entry carries templateName (the value to pass to the create step) and publisher. Pick an Aura-runtime template, NOT an LWR one.
|
|
260
|
-
|
|
261
|
-
### Write operations
|
|
262
|
-
|
|
263
|
-
#### `toggle-dpe-provider-search`
|
|
264
|
-
|
|
265
|
-
Master Provider Search preference. Enabling creates the Provider Search index definition and atomically enables the master preference while disabling the legacy provider-search sync preference. Returns a map with definitionCreationSuccess, errorMessage, and the post-write state. This is the only reachable surface for this preference — the index-creation and preference write are coupled and cannot be reconstructed from separate public calls.
|
|
266
|
-
|
|
267
|
-
**Call:** `PATCH /headless/invoke/platform/provider-search-settings/handle-dpe-provider-search-toggle` — status: `proposed`
|
|
268
|
-
|
|
269
|
-
**Inputs:**
|
|
270
|
-
|
|
271
|
-
- `value` *(`boolean`)* — Toggle the value preference on or off.
|
|
272
|
-
|
|
273
|
-
**Depends on:** `enable-data-processing-engine`
|
|
274
|
-
|
|
275
|
-
#### `toggle-provider-search-sync-job`
|
|
276
|
-
|
|
277
|
-
Toggle the Provider Search sync-job preference and trigger a Provider Search sync. Returns a status map. The master Provider Search preference must be ON (this is a sub-preference). This is the only reachable surface for this preference.
|
|
278
|
-
|
|
279
|
-
**Call:** `PATCH /headless/invoke/platform/provider-search-settings/handle-provider-search-sync-job-toggle` — status: `proposed`
|
|
280
|
-
|
|
281
|
-
**Depends on:** `toggle-dpe-provider-search`, `seed-provider-facility-specialty`
|
|
282
|
-
|
|
283
|
-
#### `toggle-provider-search-precise-matching`
|
|
284
|
-
|
|
285
|
-
Toggle the Provider Search precise-matching preference. True = deterministic matching, false = fuzzy matching. The master Provider Search preference must be ON. On a save failure the call returns an error. This is the only reachable surface for this preference.
|
|
286
|
-
|
|
287
|
-
**Call:** `PATCH /headless/invoke/platform/provider-search-settings/handle-provider-search-precise-matching-toggle` — status: `proposed`
|
|
288
|
-
|
|
289
|
-
**Inputs:**
|
|
290
|
-
|
|
291
|
-
- `value` *(`boolean`)* — Toggle the value preference on or off.
|
|
292
|
-
|
|
293
|
-
**Depends on:** `toggle-dpe-provider-search`
|
|
294
|
-
|
|
295
|
-
#### `toggle-provider-search-for-guest-user`
|
|
296
|
-
|
|
297
|
-
Toggle the Provider Search guest-user preference. True = Experience Cloud guests can use Provider Search. The master Provider Search preference must be ON. This is the only reachable surface for this preference.
|
|
298
|
-
|
|
299
|
-
**Call:** `PATCH /headless/invoke/platform/provider-search-settings/handle-provider-search-for-guest-user-toggle` — status: `proposed`
|
|
300
|
-
|
|
301
|
-
**Inputs:**
|
|
302
|
-
|
|
303
|
-
- `value` *(`boolean`)* — Toggle the value preference on or off.
|
|
304
|
-
|
|
305
|
-
**Depends on:** `toggle-dpe-provider-search`
|
|
306
|
-
|
|
307
|
-
#### `toggle-custom-dpe-transaction-observer`
|
|
308
|
-
|
|
309
|
-
Toggle the custom transaction-observer preference. True = the saved owner runs as the transaction observer; false = platform default. The master Provider Search preference must be ON. This is the only reachable surface for this preference.
|
|
310
|
-
|
|
311
|
-
**Call:** `PATCH /headless/invoke/platform/provider-search-settings/handle-custom-dpe-transaction-observer-user-toggle` — status: `proposed`
|
|
312
|
-
|
|
313
|
-
**Inputs:**
|
|
314
|
-
|
|
315
|
-
- `value` *(`boolean`)* — Toggle the value preference on or off.
|
|
316
|
-
|
|
317
|
-
**Depends on:** `toggle-dpe-provider-search`, `save-owner`
|
|
318
|
-
|
|
319
|
-
#### `save-owner`
|
|
320
|
-
|
|
321
|
-
Persist the Provider Search index-definition owner (a User Id). Pair with get-salesforce-licensed-users for a valid ownerId. Returns true; returns an error on save failure. This is the only reachable surface — the owner is stored in internal configuration with no Tooling exposure.
|
|
322
|
-
|
|
323
|
-
**Call:** `PATCH /headless/invoke/platform/provider-search-settings/save-owner` — status: `implemented`
|
|
324
|
-
|
|
325
|
-
**Inputs:**
|
|
326
|
-
|
|
327
|
-
- `ownerId` *(`String`)* — Id of the owner.
|
|
328
|
-
|
|
329
|
-
**Depends on:** `get-salesforce-licensed-users`, `enable-provider-search-for-guest-user`, `assign-health-cloud-provider-permsets`
|
|
330
|
-
|
|
331
|
-
#### `trigger-owner-id-update-definition`
|
|
332
|
-
|
|
333
|
-
Propagate the saved owner to the live Provider Search index definition. Run AFTER save-owner. Requires the caller to hold the Provider Search DPE permission (otherwise it returns a MissingDpePermToAdminUser error). Returns true on success. This is the only reachable surface for this operation.
|
|
334
|
-
|
|
335
|
-
**Call:** `PATCH /headless/invoke/platform/provider-search-settings/trigger-owner-id-update-definition` — status: `proposed`
|
|
336
|
-
|
|
337
|
-
**Depends on:** `save-owner`, `assign-health-cloud-provider-permsets`
|
|
338
|
-
|
|
339
|
-
#### `save-frequency`
|
|
340
|
-
|
|
341
|
-
No-op — this action returns success unconditionally and has no effect: the write does not persist and the frequency argument is ignored. Skip this step.
|
|
342
|
-
|
|
343
|
-
**Call:** `PATCH /headless/invoke/platform/provider-search-settings/save-frequency` — status: `proposed`
|
|
344
|
-
|
|
345
|
-
**Inputs:**
|
|
346
|
-
|
|
347
|
-
- `frequency` *(`String`)* — Value for the frequency field.
|
|
348
|
-
|
|
349
|
-
#### `handle-custom-sync`
|
|
350
|
-
|
|
351
|
-
No-op — this action returns success unconditionally and triggers no sync. Skip this step.
|
|
352
|
-
|
|
353
|
-
**Call:** `PATCH /headless/invoke/platform/provider-search-settings/handle-custom-sync` — status: `proposed`
|
|
354
|
-
|
|
355
|
-
#### `generate-dpe-definition`
|
|
356
|
-
|
|
357
|
-
Generate dpe definition.
|
|
358
|
-
|
|
359
|
-
**Call:** `PATCH /headless/invoke/platform/provider-search-settings/generate-dpedefinition` — status: `implemented`
|
|
360
|
-
|
|
361
|
-
**Depends on:** `assign-health-cloud-provider-permsets`
|
|
362
|
-
|
|
363
|
-
#### `enable-data-processing-engine`
|
|
364
|
-
|
|
365
|
-
Enable the Data Pipelines (Sonic) org preference so the Provider Search DPE indexing pipeline can run. toggle-dpe-provider-search returns HTTP 500 ("you must first enable the Data Pipeline org preference") until the Data Pipeline org preference is on, so this step MUST precede it. The pref is owned by the separate Data Pipelines setup page, not Provider Search. Enable surface: PATCH /headless/invoke/platform/sonic-getting-started/handle-sonic-pref with {"value": true, "appType": "DataManager"} — appType must be exactly "DataManager" (other values write unrelated prefs and leave this one off). Enabling it auto-enables isDpeSyncEnabled. This was previously punted to a precondition; it is authored here so the recipe runs autonomously (mirrors IAM enable-data-processing-engine / IAM-1).
|
|
366
|
-
|
|
367
|
-
**Call:** `PATCH /headless/invoke/platform/sonic-getting-started/handle-sonic-pref` — status: `proposed`
|
|
368
|
-
|
|
369
|
-
**Inputs:**
|
|
370
|
-
|
|
371
|
-
- `value` *(`Boolean`)* — Enable flag; true turns the Sonic/DPE org pref on.
|
|
372
|
-
- `appType` *(`String`)* — Sonic app-type selector; must be exactly DataManager to toggle the DPE/Data Manager org pref (other values write unrelated prefs and leave this one off).
|
|
373
|
-
|
|
374
|
-
**Depends on:** `assign-data-pipelines-base-user`
|
|
375
|
-
|
|
376
|
-
#### `assign-data-pipelines-base-user`
|
|
377
|
-
|
|
378
|
-
Assign the Data Pipelines Base User permission set (Name AnalyticsStoreUser, NamespacePrefix force) to the admin user driving the DPE enable path and trigger-owner-id-update-definition. Resolve the PermissionSet id first: SELECT Id FROM PermissionSet WHERE Name = 'AnalyticsStoreUser' AND NamespacePrefix = 'force' — querying Name = 'force__AnalyticsStoreUser' returns 0 rows (the namespace lives in NamespacePrefix, so Name holds only the bare 'AnalyticsStoreUser'). Then POST a PermissionSetAssignment with AssigneeId = the user and PermissionSetId = the resolved id. Idempotent: a DUPLICATE_VALUE response means the user already has it — treat as success. The fully-qualified force__AnalyticsStoreUser is correct for assignment/display; only the SOQL-by-Name form must use the bare name + NamespacePrefix. This was previously punted to a precondition; authored here so the recipe runs autonomously (mirrors IAM assign-data-pipelines-base-user / IAM-11).
|
|
379
|
-
|
|
380
|
-
**Call:** `sobjects/PermissionSetAssignment` — status: `implemented`
|
|
381
|
-
|
|
382
|
-
**Inputs:**
|
|
383
|
-
|
|
384
|
-
- `userId` *(`String`)* — The Id of the user to grant Data Pipelines Base User (typically the running admin).
|
|
385
|
-
|
|
386
|
-
#### `assign-health-cloud-provider-permsets`
|
|
387
|
-
|
|
388
|
-
Assign the three Health Cloud Provider Search permission sets — HealthCloudFoundation, HealthCloudProviderSearch, and HealthCloudProviderSearchDpe — to the admin user driving the DPE trigger and the provider-graph seed. These grant BOTH (a) the org-level DPE access the trigger-owner-id-update-definition gate requires (HealthCloudProviderSearchDpe carries the Data Processing Engine org permission that gate checks) AND (b) createability on the provider-graph objects. Before these permsets are assigned, CareSpecialty / HealthcareProvider / HealthcareFacility / CareProviderFacilitySpecialty / HealthcarePractitionerFacility all describe createable=FALSE and inserts throw CANNOT_INSERT_UPDATE_ACTIVATE_ENTITY; once assigned, createable is TRUE and the trigger succeeds. Resolve each PermissionSet id by Name (SELECT Id FROM PermissionSet WHERE Name IN ('HealthCloudFoundation','HealthCloudProviderSearch','HealthCloudProviderSearchDpe')) and POST one PermissionSetAssignment per id with AssigneeId = the running user. Idempotent: a DUPLICATE_VALUE response means already-assigned = success. This is a RECIPE step (self-healable), not a precondition and not a TD on another team — the same assignment unblocks step 4 (the DPE trigger) and the entire provider-graph seed chain.
|
|
389
|
-
|
|
390
|
-
**Call:** `sobjects/PermissionSetAssignment` — status: `implemented`
|
|
391
|
-
|
|
392
|
-
**Inputs:**
|
|
393
|
-
|
|
394
|
-
- `userId` *(`String`)* — The Id of the user to grant the Health Cloud Provider Search permsets (typically the running admin).
|
|
395
|
-
- `permissionSetNames` *(`Array`)* — The three permset Names to resolve and assign (one PermissionSetAssignment POST each).
|
|
396
|
-
|
|
397
|
-
**Depends on:** `assign-data-pipelines-base-user`
|
|
398
|
-
|
|
399
|
-
#### `ensure-searchable-field-custom-field`
|
|
400
|
-
|
|
401
|
-
Deploy a Text (or Text Area) custom field on CareProviderSearchableField BEFORE configuring the search. CareProviderSearchConfig's SourceField/TargetField reference fields that must ALREADY EXIST: core validation rejects the config with InvalidFieldTypeTarget / InvalidFieldTypeSource unless the TargetField is a text/textarea field on CareProviderSearchableField and the SourceField is a text/picklist field on the source object. When CareProviderSearchableField carries no custom fields, configure-care-provider-search cannot create a valid config → CareProviderSearchConfig stays empty → the DPE sync has nothing to index → provider search returns nothing while setup reports success. Deploy a CustomField metadata element (fullName CareProviderSearchableField.<FieldName>__c, type Text) so the search config has a valid TargetField to reference.
|
|
402
|
-
|
|
403
|
-
**Call:** `/headless/metadata` — status: `implemented`
|
|
404
|
-
|
|
405
|
-
**Inputs:**
|
|
406
|
-
|
|
407
|
-
- `fieldApiName` *(`String`)* — API name of the Text custom field to deploy on CareProviderSearchableField (fullName CareProviderSearchableField.<FieldName>__c). Referenced by CareProviderSearchConfig as its TargetField.
|
|
408
|
-
|
|
409
|
-
#### `configure-care-provider-search`
|
|
410
|
-
|
|
411
|
-
Create the CareProviderSearchConfig record(s) that define WHICH objects are searchable (createable:true — standard sObject CRUD). This is only half the search config: the affiliation-role side lives on CareProviderAfflRoleConfig, authored as the separate configure-care-provider-affl-role step below (a POST to this endpoint cannot create CareProviderAfflRoleConfig rows — a different sObject needs its own request). There is no dedicated managing-care-provider-search-config skill in the corpus (discover returns none); standard CRUD is the mechanism. Previously punted to a precondition; authored here so the recipe configures the searchable surface autonomously. The TargetField each record references MUST be an existing text/textarea custom field on CareProviderSearchableField (and SourceField a text/picklist field on the source object) or the create is rejected with InvalidFieldTypeTarget/InvalidFieldTypeSource — deploy it first via ensure-searchable-field-custom-field.
|
|
412
|
-
|
|
413
|
-
**Call:** `sobjects/CareProviderSearchConfig` — status: `implemented`
|
|
414
|
-
|
|
415
|
-
**Inputs:**
|
|
416
|
-
|
|
417
|
-
- `records` *(`Array`)* — CareProviderSearchConfig records defining which objects are searchable.
|
|
418
|
-
|
|
419
|
-
**Depends on:** `ensure-searchable-field-custom-field`
|
|
420
|
-
|
|
421
|
-
**Output:** Created CareProviderSearchConfig Id(s).
|
|
422
|
-
|
|
423
|
-
#### `configure-care-provider-affl-role`
|
|
424
|
-
|
|
425
|
-
Create the CareProviderAfflRoleConfig record(s) that define which affiliation roles are searchable (createable:true). This is a SEPARATE sObject from CareProviderSearchConfig, so it requires its own POST — the search-config step's endpoint cannot create these rows. Runs after configure-care-provider-search so the searchable-object surface exists before affiliation roles are attached to it.
|
|
426
|
-
|
|
427
|
-
**Call:** `sobjects/CareProviderAfflRoleConfig` — status: `implemented`
|
|
428
|
-
|
|
429
|
-
**Inputs:**
|
|
430
|
-
|
|
431
|
-
- `records` *(`Array`)* — CareProviderAfflRoleConfig records defining which affiliation roles are searchable.
|
|
432
|
-
|
|
433
|
-
**Depends on:** `configure-care-provider-search`
|
|
434
|
-
|
|
435
|
-
**Output:** Created CareProviderAfflRoleConfig Id(s).
|
|
436
|
-
|
|
437
|
-
#### `seed-care-specialty`
|
|
438
|
-
|
|
439
|
-
Create a CareSpecialty (e.g. Name = "Primary Care") — the specialty the seeded provider is discoverable under. Independent root object; its Id feeds the CareProviderFacilitySpecialty junction below. First of the per-sObject provider-graph seed steps; gated behind the search config so the searchable surface is defined before data lands. CareSpecialty (and every provider-graph object) describes createable=FALSE until the Health Cloud permsets are assigned, and inserts throw CANNOT_INSERT_UPDATE_ACTIVATE_ENTITY — hence the depends_on on assign-health-cloud-provider-permsets.
|
|
440
|
-
|
|
441
|
-
**Call:** `sobjects/CareSpecialty` — status: `implemented`
|
|
442
|
-
|
|
443
|
-
**Inputs:**
|
|
444
|
-
|
|
445
|
-
- `Name` *(`String`)* — Specialty name, e.g. "Primary Care".
|
|
446
|
-
|
|
447
|
-
**Depends on:** `configure-care-provider-affl-role`, `assign-health-cloud-provider-permsets`
|
|
448
|
-
|
|
449
|
-
**Output:** Created CareSpecialty Id.
|
|
450
|
-
|
|
451
|
-
#### `seed-healthcare-provider`
|
|
452
|
-
|
|
453
|
-
Create the PRACTITIONER-role HealthcareProvider — the searchable practitioner. CRITICAL DPE-contract shape: the provider-search DPE ingests a HealthcareProvider as a PRACTITIONER only when PractitionerId is set (a Contact reference) AND AccountId is null, with IsActive=true and IsNotSearchable=false (the two branch filters — practitioner vs facility — are mutually exclusive on the same HealthcareProvider row). Set PractitionerId to a Contact, leave AccountId null. There is NO separate HealthcareFacility object in the DPE datasource; the facility side is a SECOND HealthcareProvider row (seeded next) with the opposite fields. Required field Name.
|
|
454
|
-
|
|
455
|
-
**Call:** `sobjects/HealthcareProvider` — status: `implemented`
|
|
456
|
-
|
|
457
|
-
**Inputs:**
|
|
458
|
-
|
|
459
|
-
- `Name` *(`String`)* — Practitioner provider name.
|
|
460
|
-
- `PractitionerId` *(`String`)* — Contact Id backing the practitioner (references Contact). MUST be set for the practitioner branch; AccountId MUST be left null on this row.
|
|
461
|
-
- `IsActive` *(`Boolean`)* — Active — the DPE practitioner filter requires IsActive=true.
|
|
462
|
-
- `IsNotSearchable` *(`Boolean`)* — Must be false — the DPE filter excludes IsNotSearchable=true rows.
|
|
463
|
-
|
|
464
|
-
**Depends on:** `seed-care-specialty`
|
|
465
|
-
|
|
466
|
-
**Output:** Created practitioner-role HealthcareProvider Id.
|
|
467
|
-
|
|
468
|
-
#### `seed-healthcare-facility`
|
|
469
|
-
|
|
470
|
-
Create the FACILITY-role HealthcareProvider — the searchable facility. This is a SECOND HealthcareProvider row (NOT a HealthcareFacility object — the provider-search DPE has no HealthcareFacility datasource, so a HealthcareFacility row is never ingested). DPE-contract shape for the FACILITY branch: AccountId set (an Account reference) AND PractitionerId null, with IsActive=true and IsNotSearchable=false. This is the mirror of the practitioner row: the two branch filters are mutually exclusive on the same object. Required field Name.
|
|
471
|
-
|
|
472
|
-
**Call:** `sobjects/HealthcareProvider` — status: `implemented`
|
|
473
|
-
|
|
474
|
-
**Inputs:**
|
|
475
|
-
|
|
476
|
-
- `Name` *(`String`)* — Facility provider name.
|
|
477
|
-
- `AccountId` *(`String`)* — Account Id backing the facility (references Account). MUST be set for the facility branch; PractitionerId MUST be left null on this row.
|
|
478
|
-
- `IsActive` *(`Boolean`)* — Active — the DPE facility filter requires IsActive=true.
|
|
479
|
-
- `IsNotSearchable` *(`Boolean`)* — Must be false — the DPE filter excludes IsNotSearchable=true rows.
|
|
480
|
-
|
|
481
|
-
**Depends on:** `seed-healthcare-provider`
|
|
482
|
-
|
|
483
|
-
**Output:** Created facility-role HealthcareProvider Id.
|
|
484
|
-
|
|
485
|
-
#### `seed-practitioner-facility`
|
|
486
|
-
|
|
487
|
-
Create the HealthcarePractitionerFacility that pairs the practitioner-role provider with the facility — the link the CareProviderFacilitySpecialty junction references via PractitionerFacilityId. DPE-contract shape: this row MUST have IsActive=true, AccountId set (Account) AND PractitionerId set (the SAME Contact used on the practitioner-role HealthcareProvider) — the DPE joins HCPF.PractitionerId = HealthcareProvider.PractitionerId, so the Contact must match the practitioner row or the join drops it. Set HealthcareProviderId to the practitioner-role provider (seed-healthcare-provider). This object REQUIRES a `Name` value (REQUIRED_FIELD_MISSING [Name] if omitted).
|
|
488
|
-
|
|
489
|
-
**Call:** `sobjects/HealthcarePractitionerFacility` — status: `implemented`
|
|
490
|
-
|
|
491
|
-
**Inputs:**
|
|
492
|
-
|
|
493
|
-
- `Name` *(`String`)* — Practitioner-facility link name (REQUIRED — insert fails with REQUIRED_FIELD_MISSING [Name] otherwise).
|
|
494
|
-
- `HealthcareProviderId` *(`String`)* — Practitioner-role HealthcareProvider Id from seed-healthcare-provider.
|
|
495
|
-
- **Source:** output of `seed-healthcare-provider`
|
|
496
|
-
- `PractitionerId` *(`String`)* — Contact Id — MUST be the SAME Contact set as PractitionerId on the practitioner-role HealthcareProvider (the DPE inner-joins HCPF.PractitionerId = HCP.PractitionerId).
|
|
497
|
-
- `AccountId` *(`String`)* — Account Id — the DPE HCPF filter requires AccountId NOT NULL.
|
|
498
|
-
- `IsActive` *(`Boolean`)* — Must be true — the DPE HCPF filter requires IsActive=true.
|
|
499
|
-
|
|
500
|
-
**Depends on:** `seed-healthcare-provider`
|
|
501
|
-
|
|
502
|
-
**Output:** Created HealthcarePractitionerFacility Id (feeds the junction PractitionerFacilityId).
|
|
503
|
-
|
|
504
|
-
#### `seed-provider-facility-specialty`
|
|
505
|
-
|
|
506
|
-
Create the CareProviderFacilitySpecialty junction that attaches a specialty to the practitioner-facility link — this ENRICHES the practitioner search row with a specialty; it is NOT what makes a provider searchable. (Core-verified against ProviderSearchDPEdef.json: the DPE keys this junction on PractitionerFacilityId via a LEFT-OUTER (optional) join — a facility-role provider with zero junctions still emits a CareProviderSearchableField row, and a practitioner surfaces on the strength of its active HealthcarePractitionerFacility alone.) Carries SpecialtyId (seed-care-specialty), PractitionerFacilityId (seed-practitioner-facility), and AccountId — the DPE specialty-enrichment filter (Shared_Node_02_Active_Specialty) requires the junction be IsActive=true with AccountId NOT NULL and a non-null PractitionerFacilityId. HealthcareFacilityId is a lookup to a SEPARATE HealthcareFacility object and is NOT seeded or required (left null). REQUIRES a `Name` value (REQUIRED_FIELD_MISSING [Name] if omitted). This is the terminal seed node, so the sync job (toggle-provider-search-sync-job) depends on it. NOTE: CareProviderSearchableField is createable:false (DPE-sync-populated, read-only) — never inserted.
|
|
507
|
-
|
|
508
|
-
**Call:** `sobjects/CareProviderFacilitySpecialty` — status: `implemented`
|
|
509
|
-
|
|
510
|
-
**Inputs:**
|
|
511
|
-
|
|
512
|
-
- `Name` *(`String`)* — Junction record name (REQUIRED — insert fails with REQUIRED_FIELD_MISSING [Name] otherwise).
|
|
513
|
-
- `SpecialtyId` *(`String`)* — CareSpecialty Id from seed-care-specialty.
|
|
514
|
-
- **Source:** output of `seed-care-specialty`
|
|
515
|
-
- `PractitionerFacilityId` *(`String`)* — HealthcarePractitionerFacility Id from seed-practitioner-facility (the DPE specialty-enrichment join keys on this — must be non-null).
|
|
516
|
-
- **Source:** output of `seed-practitioner-facility`
|
|
517
|
-
- `AccountId` *(`String`)* — Account Id — the DPE specialty-enrichment filter requires AccountId NOT NULL. Use the SAME Account set on the practitioner's HealthcarePractitionerFacility.
|
|
518
|
-
- `IsActive` *(`Boolean`)* — Must be true — the DPE specialty-enrichment filter requires the junction IsActive=true.
|
|
519
|
-
|
|
520
|
-
**Depends on:** `seed-care-specialty`, `seed-practitioner-facility`
|
|
521
|
-
|
|
522
|
-
#### `write-org-wide-sharing-defaults`
|
|
523
|
-
|
|
524
|
-
Set the org-wide default sharing model to Public Read Only on every object the Provider Search engine reads over, so guest and low-privilege search callers can see provider records without a per-object manual visit to Sharing Settings. The full set is EIGHT objects: the four Scheduler objects ServiceResource, ServiceTerritory, WorkType, Asset AND the four Health Cloud provider objects CareProviderSearchableField, HealthcarePractitionerFacility, HealthcareProvider, HealthcareProviderNpi. Setting OWD on only the first four (the historical stopgap) leaves the provider objects Private, so search over the provider model returns nothing for guest/external callers while setup reports success — the exact failure this step exists to prevent when Provider Search runs stand-alone (no IAM SOR on the same org to set them). Each object is a separate metadata write: PUT /headless/metadata with a CustomObject fullName of the object carrying BOTH sharingModel Read (internal OWD) AND externalSharingModel Read (external OWD). Both are required for the guest use case: guest/Experience-site users are external users governed by the EXTERNAL sharing model, so setting only the internal sharingModel leaves the external default Private and the guest Provider Search site returns no records even though the write reports success (Read = Public Read Only; ReadWrite = Public Read/Write; Private restricts to owner). Both fields live on the CustomObject metadata even for standard objects. A recalculation of the sharing tables runs asynchronously after the write, so read access may lag the 200 by a short interval.
|
|
525
|
-
|
|
526
|
-
**Call:** `/headless/metadata` — status: `implemented`
|
|
527
|
-
|
|
528
|
-
**Inputs:**
|
|
529
|
-
|
|
530
|
-
- `objectName` *(`String`)* — CustomObject fullName whose OWD is being set — one of the eight: ServiceResource, ServiceTerritory, WorkType, Asset, CareProviderSearchableField, HealthcarePractitionerFacility, HealthcareProvider, HealthcareProviderNpi.
|
|
531
|
-
- `sharingModel` *(`String`)* — Internal OWD sharing model. Read = Public Read Only (the value this step sets); ReadWrite = Public Read/Write; Private = private. Enum, case-sensitive.
|
|
532
|
-
- `externalSharingModel` *(`String`)* — External OWD sharing model — governs guest / external Experience-site users, who are the callers this step exists to unblock. Read = Public Read Only (the value this step sets); ReadWrite = Public Read/Write; Private = private. Must be set alongside sharingModel or guest search returns no records. Enum, case-sensitive.
|
|
533
|
-
|
|
534
|
-
#### `enable-digital-experiences`
|
|
535
|
-
|
|
536
|
-
Enable Digital Experiences so the guest provider-search Experience Cloud site can be created. Deploy Settings:Communities with <enableNetworksEnabled>true</enableNetworksEnabled> (retrieve-modify-deploy, dispatcher- independent Metadata API transport). This is a ONE-WAY enable tied to a customer domain decision — once on it cannot be turned off. Previously this recipe punted it to a precondition ("stop and report; do not deploy as part of an autonomous run"); it is now authored as a step so Provider Search stands up fully autonomously exactly like its sibling IAM recipe (enable-digital-experiences / IAM-4/31), which already flips this same switch via the same deploy. The irreversibility is surfaced as a deliberate decision on the step rather than used to halt the run. PRECHECK / IDEMPOTENT: do NOT gate on SELECT IsNetworksEnabled FROM Organization — that column does not exist on this object and the query errors "No such column 'IsNetworksEnabled' on entity 'Organization'". Gate on the Network sObject instead: attempt SELECT COUNT() FROM Network — if it returns a count (valid type) Digital Experiences is already on and this step is a verified no-op; if it errors INVALID_TYPE ("sObject type 'Network' is not supported") DE is off and this deploy enables it.
|
|
537
|
-
|
|
538
|
-
**Call:** `POST /headless/metadata` — status: `implemented`
|
|
539
|
-
|
|
540
|
-
#### `create-guest-search-site`
|
|
541
|
-
|
|
542
|
-
Create the guest site on an AURA-runtime template (see read-experience-site-templates — NOT an LWR template, or publish fails to resolve the Aura provider-search component). Body is CommunityInputRepresentation {name, urlPathPrefix, templateName, description}; templateName is the Aura template name from read-experience-site-templates. Creation is ASYNCHRONOUS: the response is CommunityCreateRepresentation {name, message, jobId} and does NOT carry the Network id — jobId is a BackgroundOperation id to poll. The site's Network id is obtained after the job completes (query Network BY NAME — the platform normalizes/mangles urlPathPrefix on persistence, so the stored prefix differs from the submitted value and a Network lookup keyed on the exact submitted urlPathPrefix returns 0 rows; match on the site Name instead), not from this call.
|
|
543
|
-
|
|
544
|
-
**Call:** `POST /connect/communities` — status: `implemented`
|
|
545
|
-
|
|
546
|
-
**Inputs:**
|
|
547
|
-
|
|
548
|
-
- `name` *(`String`)* — Display name of the guest provider-search site.
|
|
549
|
-
- `urlPathPrefix` *(`String`)* — URL path prefix for the site (unique per org).
|
|
550
|
-
- `templateName` *(`String`)* — Exact LWR templateName returned by read-experience-site-templates.
|
|
551
|
-
- `description` *(`String`)* — Optional site description.
|
|
552
|
-
|
|
553
|
-
**Depends on:** `read-experience-site-templates`
|
|
554
|
-
|
|
555
|
-
**Output:** CommunityCreateRepresentation {name, message, jobId}. jobId → poll a BackgroundOperation; no Network id is returned here.
|
|
556
|
-
|
|
557
|
-
#### `deploy-provider-directory-component`
|
|
558
|
-
|
|
559
|
-
Place the provider-directory component onto the guest site by editing and redeploying the site's ExperienceBundle. The Aura-runtime sites the earlier steps create register in Metadata as an ExperienceBundle, NOT a DigitalExperienceBundle (a DigitalExperienceBundle list on an Aura-only org returns "No metadata found for type: DigitalExperienceBundle"), so this is a Metadata API deploy over the ExperienceBundle type — the LWR content.json / sfdc_cms__view path does NOT apply. Prerequisite: enable-experience-bundle-metadata must have run (it sets ExperienceBundleSettings.enableExperienceBundleMetadata = true), or the retrieve fails "ExperienceBundle isn't enabled for Aura sites". Concretely: (1) resolve the ExperienceBundle member name, then retrieve it. The member name is DERIVED from Network.Name — replace each run of non-alphanumeric characters with a single "_" and append a "1" suffix (e.g. "Provider Search Repro" -> "Provider_Search_Repro1"); it is NOT the urlPathPrefix and NOT siteName verbatim. Most robust: LIST the org's ExperienceBundle members (a Metadata list of type ExperienceBundle) and pick the one matching this site rather than blindly constructing the name — the list returns the exact member name the platform assigned. (2) Open the home view at experiences/<member>/views/home.json. (3) Find the region whose regionName is "content" and append to its components[] array the node {"type":"component","componentName":"healthcloud:providerSearchCommunity","id":"<uuid>", "componentAttributes":{},"renderPriority":"NEUTRAL","renditionMap":{}}. The Aura key is componentName (NOT "definition", which is the LWR DigitalExperienceBundle key), and id + renderPriority + renditionMap are ALL required — the deploy rejects a node missing any of them ("You seem to be missing the property renderPriority/renditionMap"). The node `id` MUST be a valid hex UUID matching ^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$ (or a 28-char [A-Z0-9] key); a non-hex id fails schema validation on deploy. (4) Deploy the experiences/ directory back. IMPORTANT RUNTIME CONSTRAINT: healthcloud:providerSearchCommunity is an AURA community component, so the site MUST have been created on an AURA-runtime template (see read-experience-site-templates); on an LWR site the deploy may succeed but publish later fails to resolve the component. Known behavior on the correct (Aura) template: the component is guarded by a design-time orgAccess check (Health Cloud Provider Search enabled); if the feature is off the node can be silently stripped on save, so the deploy can report success while the node is dropped — the next step re-reads views/home.json to confirm the node actually persisted (necessary but NOT sufficient: publish independently re-validates the component, see publish-guest-search-site).
|
|
560
|
-
|
|
561
|
-
**Call:** `POST /headless/metadata` — status: `implemented`
|
|
562
|
-
|
|
563
|
-
**Inputs:**
|
|
564
|
-
|
|
565
|
-
- `siteName` *(`String`)* — The created site's Network.Name (site display name). The ExperienceBundle member name to retrieve/deploy is DERIVED from it: replace each run of non-alphanumeric characters with "_" and append "1" (e.g. "Provider Search Repro" -> "Provider_Search_Repro1"). Not the urlPathPrefix.
|
|
566
|
-
- `componentName` *(`String`)* — The Aura community-component name to append to the home view's "content" region components[] array (under the key componentName, NOT "definition"). Literal: healthcloud:providerSearchCommunity.
|
|
567
|
-
|
|
568
|
-
**Depends on:** `verify-create-guest-search-site`, `enable-experience-bundle-metadata`, `toggle-dpe-provider-search`, `enable-provider-search-for-guest-user`
|
|
569
|
-
|
|
570
|
-
#### `publish-guest-search-site`
|
|
571
|
-
|
|
572
|
-
Publish the site so its content becomes live-servable. Publish is ASYNCHRONOUS: the response is CommunityPublishRepresentation {id, name, url, message, jobId} — id is the site's Network id (usable to drive activation) and jobId is a BackgroundOperation to poll for publish completion. Publishing makes the built content available; it does not by itself set the site status to Live (that is the next step).
|
|
573
|
-
|
|
574
|
-
**Call:** `POST /connect/communities/{communityId}/publish` — status: `implemented`
|
|
575
|
-
|
|
576
|
-
**Inputs:**
|
|
577
|
-
|
|
578
|
-
- `communityId` *(`String`)* — The site's Network/community id.
|
|
579
|
-
|
|
580
|
-
**Depends on:** `verify-provider-directory-component`
|
|
581
|
-
|
|
582
|
-
**Output:** CommunityPublishRepresentation {id (Network id), name, url, message, jobId}.
|
|
583
|
-
|
|
584
|
-
#### `activate-guest-search-site`
|
|
585
|
-
|
|
586
|
-
Activate the site by setting Network.Status = Live via the Data API. This is the headless activation path: the Connect community resource is GET-only (no PATCH), so activation is a Data-API write on the Network sObject, not a Connect call. Status is an enum — UnderConstruction (default), Live, DownForMaintenance; Live is the value that makes the guest site reachable. Gated on verify-publish-guest-search-site so it runs only after the asynchronous publish job has reached Complete, never against the publish POST response.
|
|
587
|
-
|
|
588
|
-
**Call:** `Network.update` — status: `implemented`
|
|
589
|
-
|
|
590
|
-
**Inputs:**
|
|
591
|
-
|
|
592
|
-
- `networkId` *(`String`)* — Network id (the publish response id).
|
|
593
|
-
|
|
594
|
-
**Depends on:** `verify-publish-guest-search-site`
|
|
595
|
-
|
|
596
|
-
#### `enable-health-cloud-genai`
|
|
597
|
-
|
|
598
|
-
Enable Einstein for Health Cloud by deploying IndustriesSettings with enableHealthCloudGenAIPref = true (Metadata API updateMetadata, minimal body). This is the L1 GenAI-platform enablement Provider Search's generative/assistive features build on. The pref lives on the IndustriesSettings UDD bundle alongside many sibling industries booleans; deploy a minimal body carrying only this flag so unrelated industries org config is not touched. enableHealthCloudGenAIPref is a gated pref: a deploy can report Changed while the effective flag stays off if the org lacks the backing capability, so the paired verify reads the effective state rather than trusting the deploy result. API VERSION: the enableHealthCloudGenAIPref property does NOT exist below Metadata API v64.0 — a deploy at v63.0 or lower FAILS with "Property 'enableHealthCloudGenAIPref' not valid in version 63.0". Deploy at v64.0 or higher (prefer the org's own apiVersion, floored at 64). Do NOT pin this deploy to the /services/data/v63.0 default some headless paths use.
|
|
599
|
-
|
|
600
|
-
**Call:** `POST /headless/metadata` — status: `implemented`
|
|
601
|
-
|
|
602
|
-
**Inputs:**
|
|
603
|
-
|
|
604
|
-
- `metadataType` *(`String`)* — Metadata type — IndustriesSettings.
|
|
605
|
-
- `fullName` *(`String`)* — Settings fullName — IndustriesSettings.
|
|
606
|
-
- `body` *(`Object`)* — Minimal IndustriesSettings body with enableHealthCloudGenAIPref = true.
|
|
607
|
-
|
|
608
|
-
#### `enable-context-service`
|
|
609
|
-
|
|
610
|
-
Enable Context Service for the org by calling the Context Service Access Connect resource (v244+) with a PUT — NOT a Metadata deploy. This flips the org preference ContextDefinitionsEnabled, the exact same preference the setup page writes, which is what materializes the context definitions that context-aware Provider Search features read. Path segment preferenceName MUST be the literal "contextServiceEnabled" (the impl allowlists only that key; any other value is a no-op); uniqueIdentifier is an opaque echo token (any non-empty string — the impl substitutes a timestamp if blank) and does not select a record or principal. Body carries isEnabled=true. Correcting a prior modeling error: the earlier version deployed IndustriesSettings with enableContextDefinitions=true, but enableContextDefinitions is a field of the IndustriesContextSettings type — deploying it under an IndustriesSettings fullName does not flip ContextDefinitionsEnabled. This Connect PUT is the verified in-org path and it also removes the IndustriesContextSettings prod metadata-CRUD allowlisting dependency. Prerequisites are unchanged from the deploy path: the org must have the Context Service capability (a provisioned license, usually bundled in the cloud add-on) and the caller must be a Context Service Admin or hold Customize Application. A gated pref can report success on the write while staying off if the backing capability is absent, so the paired verify reads the effective state rather than trusting the write. Runs after the GenAI verify so enablement is ordered.
|
|
611
|
-
|
|
612
|
-
**Call:** `PUT /connect/contextservice/access/{preferenceName}/{uniqueIdentifier}` — status: `implemented`
|
|
613
|
-
|
|
614
|
-
**Inputs:**
|
|
615
|
-
|
|
616
|
-
- `preferenceName` *(`String`)* — Path param. MUST be the literal "contextServiceEnabled" — the impl allowlists only this key and maps it to the ContextDefinitionsEnabled org preference. NOT "ContextDefinitionsEnabled" (that is the internal pref name, not the API-facing key).
|
|
617
|
-
- `uniqueIdentifier` *(`String`)* — Path param. Opaque echo token, reflected back in the response and not otherwise used; any non-empty string works (a blank one is replaced with a server timestamp).
|
|
618
|
-
- `isEnabled` *(`Boolean`)* — Body field, sent FLAT as {"isEnabled": true} (the JSON Connect input representation is flat — do NOT wrap it in a contextServiceAccessInput object; that wrapper is the XML tag name only and a JSON PUT with it returns JSON_PARSER_ERROR "Unrecognized field contextServiceAccessInput"). true enables Context Service for the org, false disables it. PUT {"isEnabled":true} returns {"isEnabled":true,"uniqueIdentifier":<echo>} and a follow-up GET reports isEnabled=true.
|
|
619
|
-
|
|
620
|
-
**Depends on:** `verify-enable-health-cloud-genai`
|
|
621
|
-
|
|
622
|
-
**Output:** ContextServiceAccessRepresentation {isEnabled, uniqueIdentifier}. Success is HTTP 200 with isEnabled reflecting the value sent — verify isEnabled == true rather than relying on the status code, since a not-permitted branch can return the inverse or null.
|
|
623
|
-
|
|
624
|
-
#### `enable-provider-search-for-guest-user`
|
|
625
|
-
|
|
626
|
-
Enable the Provider Search guest-user org permission by deploying a MINIMAL Settings:Industries body carrying only enableProviderSearchForGuestUser = true (Metadata API updateMetadata). This is the cold-start prerequisite for the owner chain: when the ProviderSearchForGuestUser permission is not yet available, the owner steps (get-salesforce-licensed-users, save-owner) return HTTP 500 ("ProviderSearchForGuestUser isn't available") until it is on. This Metadata enable is INDEPENDENT of the master DPE toggle (it does not require toggle-dpe-provider-search first), so it can and must run BEFORE the owner chain. It is the same effective pref the later sub-preference step toggle-provider-search-for-guest-user manages through the setup-page surface; enabling it here up front makes both the owner chain and that sub-toggle succeed. API VERSION: deploy at v64.0 or higher (prefer the org's own apiVersion, floored at 64); do NOT pin to the v63.0 default some headless paths use. Minimal body — only this flag — so unrelated industries org config is untouched.
|
|
627
|
-
|
|
628
|
-
**Call:** `POST /headless/metadata` — status: `implemented`
|
|
629
|
-
|
|
630
|
-
**Inputs:**
|
|
631
|
-
|
|
632
|
-
- `metadataType` *(`String`)* — Metadata type — Settings (Industries).
|
|
633
|
-
- `fullName` *(`String`)* — Settings fullName — Industries.
|
|
634
|
-
- `body` *(`Object`)* — Minimal Settings:Industries body with enableProviderSearchForGuestUser = true.
|
|
635
|
-
|
|
636
|
-
#### `enable-experience-bundle-metadata`
|
|
637
|
-
|
|
638
|
-
Enable the ExperienceBundle Metadata API by deploying ExperienceBundleSettings with enableExperienceBundleMetadata = true (Metadata API updateMetadata, minimal body). This org preference is OFF by default and gates programmatic access to Aura-site content: without it, a Metadata retrieve of the guest site's ExperienceBundle fails with "ExperienceBundle isn't enabled for Aura sites", so deploy-provider-directory-component cannot place the provider-search component. The setting lives on the ExperienceBundleSettings type (element enableExperienceBundleMetadata) — NOT on CommunitiesSettings. Deploy a minimal body carrying only this flag so unrelated Communities/Experience org config is untouched. Sequenced after enable-digital-experiences (Digital Experiences must be on first).
|
|
639
|
-
|
|
640
|
-
**Call:** `POST /headless/metadata` — status: `implemented`
|
|
641
|
-
|
|
642
|
-
**Inputs:**
|
|
643
|
-
|
|
644
|
-
- `metadataType` *(`String`)* — Metadata type — ExperienceBundle (the Settings fullName is ExperienceBundle, settings type ExperienceBundleSettings).
|
|
645
|
-
- `fullName` *(`String`)* — Settings fullName — ExperienceBundle.
|
|
646
|
-
- `body` *(`Object`)* — Minimal ExperienceBundleSettings body with enableExperienceBundleMetadata = true.
|
|
647
|
-
|
|
648
|
-
**Depends on:** `enable-digital-experiences`
|
|
649
|
-
|
|
650
|
-
#### `seed-facility-account-address`
|
|
651
|
-
|
|
652
|
-
Populate the billing address on the ACCOUNT that backs the facility-role HealthcareProvider (the AccountId set on seed-healthcare-facility), so the Provider Search distance / sort-by-distance filter has a geocodable address to resolve against. CONFIRMED against the live org schema: neither HealthcareProvider nor HealthcarePractitionerFacility has any address or geolocation field — the facility address lives on Account.BillingAddress (a compound Address field; write its components BillingStreet, BillingCity, BillingState, BillingPostalCode, BillingCountry). Salesforce's automatic geocoding data-integration rule then populates BillingLatitude / BillingLongitude asynchronously (or set them directly if geocoding is off). Without a set + geocoded address the Troubleshooter reports "Facility address must be set … must be synced" and distance filtering returns no results. OPTIONAL enrichment: a minimal searchable row does not need it; it only unblocks the distance filter. Data-API PATCH on the existing Account.
|
|
653
|
-
|
|
654
|
-
**Call:** `sobjects/Account` — status: `implemented`
|
|
655
|
-
|
|
656
|
-
**Inputs:**
|
|
657
|
-
|
|
658
|
-
- `accountId` *(`String`)* — The SAME Account Id passed as AccountId to seed-healthcare-facility — i.e. the backing Account of the facility-role HealthcareProvider, whose address is geocoded for distance search. This is NOT the seed-healthcare-facility output: that step returns the newly created HealthcareProvider record Id, not its AccountId, so a PATCH keyed on the HealthcareProvider Id would target the wrong sObject and never write the Account address. Bind this to the Account Id the facility seed was given (reuse the same value across the seed graph, as seed-facility-network-panel-status and seed-practitioner-facility do).
|
|
659
|
-
- `BillingStreet` *(`String`)* — Street of the facility address.
|
|
660
|
-
- `BillingCity` *(`String`)* — City of the facility address.
|
|
661
|
-
- `BillingState` *(`String`)* — State/province of the facility address.
|
|
662
|
-
- `BillingPostalCode` *(`String`)* — Postal code of the facility address.
|
|
663
|
-
- `BillingCountry` *(`String`)* — Country of the facility address.
|
|
664
|
-
|
|
665
|
-
**Depends on:** `seed-healthcare-facility`
|
|
666
|
-
|
|
667
|
-
#### `seed-facility-network-panel-status`
|
|
668
|
-
|
|
669
|
-
Create a HealthcareFacilityNetwork row carrying PanelStatus so the Provider Search "accepting new patients" filter has data to filter on. CONFIRMED on-org: HealthcareFacilityNetwork is a standard createable sObject; PanelStatus is a picklist with values Panel Open / Panel Full / Panel Termination / Panel Deleted — "Panel Open" is the accepting-new-patients state. Link the row to the seeded graph via PractitionerFacilityId (the HealthcarePractitionerFacility from seed-practitioner-facility) and/or HealthcareProviderId, with the SAME AccountId used across the seed graph and IsActive=true. Without such a row the new-patient filter returns acceptingNewPatients=false uniformly (the base graph never seeds it). OPTIONAL enrichment: a minimal searchable row does not need it; it only unblocks the new-patient filter. Data-API create.
|
|
670
|
-
|
|
671
|
-
**Call:** `sobjects/HealthcareFacilityNetwork` — status: `implemented`
|
|
672
|
-
|
|
673
|
-
**Inputs:**
|
|
674
|
-
|
|
675
|
-
- `Name` *(`String`)* — Facility-network record name.
|
|
676
|
-
- `PanelStatus` *(`String`)* — Panel status — set to "Panel Open" to mark the facility as accepting new patients (other values: Panel Full, Panel Termination, Panel Deleted).
|
|
677
|
-
- `PractitionerFacilityId` *(`String`)* — HealthcarePractitionerFacility Id (links the panel status to the seeded provider- facility pair).
|
|
678
|
-
- `AccountId` *(`String`)* — Account Id — the SAME Account used across the seed graph.
|
|
679
|
-
- `IsActive` *(`Boolean`)* — Active facility-network row.
|
|
680
|
-
|
|
681
|
-
**Depends on:** `seed-practitioner-facility`
|
|
682
|
-
|
|
683
|
-
#### `enable-criteria-based-search`
|
|
684
|
-
|
|
685
|
-
Turn on the Criteria-Based Search & Filter feature by deploying a MINIMAL Settings:Industries body carrying only enableCriteriaBasedSearchAndFilter = true (Metadata API updateMetadata). This is the richer filterable provider search + card display introduced in Spring '24. CONFIRMED on-org: enableCriteriaBasedSearchAndFilter is a real Settings:Industries field, initially false, and flips to true via a minimal single-flag deploy — the same idiom as enable-provider-search-for-guest-user. Deploy a minimal body (only this flag) so unrelated industries org config is untouched. API VERSION: deploy at v64.0 or higher (prefer the org's own apiVersion, floored at 64); do NOT pin to the v63.0 default some headless paths use. This is the ENABLEMENT half only — the Criteria-Based Search & Filter Lightning component must still be placed on a page in the App/Experience Builder (a builder task with no headless enable API), and the internal runtime permission is granted by assign-criteria-based-search-permset.
|
|
686
|
-
|
|
687
|
-
**Call:** `POST /headless/metadata` — status: `implemented`
|
|
688
|
-
|
|
689
|
-
**Inputs:**
|
|
690
|
-
|
|
691
|
-
- `metadataType` *(`String`)* — Metadata type — Settings (Industries).
|
|
692
|
-
- `fullName` *(`String`)* — Settings fullName — Industries.
|
|
693
|
-
- `body` *(`Object`)* — Minimal Settings:Industries body with enableCriteriaBasedSearchAndFilter = true.
|
|
694
|
-
|
|
695
|
-
#### `assign-criteria-based-search-permset`
|
|
696
|
-
|
|
697
|
-
Grant the internal Criteria-Based Search & Filter runtime permission by assigning the CriteriaBasedSearchAndFilterPsl permission set to the user who will run the search. Resolve the PermissionSet id by Name (SELECT Id FROM PermissionSet WHERE Name = 'CriteriaBasedSearchAndFilterPsl') and POST one PermissionSetAssignment with AssigneeId = that user. Idempotent: a DUPLICATE_VALUE response means already-assigned = success. NOTE the two variants: CriteriaBasedSearchAndFilterPsl is the INTERNAL permset (assignable on any Criteria-Based-Search-enabled org — this step); the sibling CriteriaBasedSearchFilterExpCloudPsl is the EXPERIENCE-CLOUD variant, which is a LICENSED seat — its assignment is rejected with "can't be assigned the permission set license" on an org lacking that Experience-Cloud entitlement. Assign the Experience-Cloud variant only for guest/community criteria-based search on a licensed org; it is not required for internal search.
|
|
698
|
-
|
|
699
|
-
**Call:** `sobjects/PermissionSetAssignment` — status: `implemented`
|
|
700
|
-
|
|
701
|
-
**Inputs:**
|
|
702
|
-
|
|
703
|
-
- `userId` *(`String`)* — The Id of the user to grant Criteria-Based Search (typically the running admin or the search user).
|
|
704
|
-
- `permissionSetNames` *(`Array`)* — The internal Criteria-Based Search permset Name to resolve and assign (one PermissionSetAssignment POST per permset). Add CriteriaBasedSearchFilterExpCloudPsl ONLY on an Experience-Cloud-licensed org for guest search.
|
|
705
|
-
|
|
706
|
-
**Depends on:** `enable-criteria-based-search`
|
|
707
|
-
|
|
708
|
-
#### `create-referral-from-search`
|
|
709
|
-
|
|
710
|
-
Create a patient referral to a provider surfaced by Provider Search — the headless equivalent of the "Create Referral" result-card action on the Criteria-Based Search component (internal users only; the UI action launches the packaged healthcloud__CreateReferral screen flow). Calls the dedicated Referral Management Connect resource, NOT the generic Care Services CareRequest API. Creates a ClinicalServiceRequest (Status defaults to New). CRITICAL id-type contract (confirmed live): patient.id is an Account Id (Person Account of the patient); requester.id and each performers[].id are HealthcareProvider Ids — passing a User Id (005) or Contact Id (003) returns HTTP 400 "Requester ID: id value of incorrect type". Gate: the org must have Health Cloud Provider Search enabled, satisfied by the PS enablement spine. Copy Records and Create Report are the two OTHER result actions: Copy Records is client-side-only (the browser formats already-fetched result fields to the clipboard — no server call, nothing to invoke headlessly), and Create Report is a report-creation invocable action (POST /actions/standard/createReport) that only registers once Criteria-Based Search & Filter is fully active on the org and rejects portal/guest callers — so it is documented, not stubbed here.
|
|
711
|
-
|
|
712
|
-
**Call:** `POST /connect/health/referral-management/referrals` — status: `implemented`
|
|
713
|
-
|
|
714
|
-
**Inputs:**
|
|
715
|
-
|
|
716
|
-
- `patientId` *(`String`)* — Account Id of the patient the referral is for (patient.id). Person Account.
|
|
717
|
-
- `requesterId` *(`String`)* — HealthcareProvider Id of the requesting provider (requester.id). MUST be a HealthcareProvider Id (0cm...) — a User or Contact Id returns 400 "incorrect type".
|
|
718
|
-
- `performerId` *(`String`)* — HealthcareProvider Id of the provider being referred to (performers[].id) — typically a provider returned by the search. MUST be a HealthcareProvider Id.
|
|
719
|
-
- `body` *(`Object`)* — Referral envelope: {patient:{id:<patientId>}, referral:{fields:{Type,Priority,Status}}, requester:{id:<requesterId>}, performers:[{id:<performerId>}]}. Optional sections: referralDetails, referralNotes, shouldUseHighConfidenceMatch.
|
|
720
|
-
|
|
721
|
-
**Depends on:** `seed-provider-facility-specialty`
|
|
722
|
-
|
|
723
|
-
**Output:** 201 with {referralsIds:[<ClinicalServiceRequest Id>]} on success; the created record has Status = New.
|
|
724
|
-
|
|
725
|
-
#### `grant-guest-profile-provider-object-read`
|
|
726
|
-
|
|
727
|
-
Grant the Experience Cloud site GUEST USER PROFILE object-level Read on the objects the Provider Search engine reads, so guest/unauthenticated visitors can run provider search. This is the object/field-permission layer of the guest recipe (help.salesforce.com "Give Guest Users Access to Provider Search"), DISTINCT from and additional to the record-visibility layer that write-org-wide-sharing-defaults sets: OWD (external Read) makes the records visible, the profile grant makes the OBJECT queryable — a guest with external-OWD Read but no profile object Read still gets zero results. Deploy a MINIMAL Profile metadata body for the site's guest profile carrying only <objectPermissions> with allowRead=true (all other CRUD false) for the Provider Search object graph: CareProviderSearchableField, CareSpecialty, CareTaxonomy, Contact, HealthcarePayerNetwork, HealthcarePractitionerFacility, HealthcareProvider, HealthcareProviderNpi, OperatingHours, PersonLanguage (the ten objects the article lists). Grant field-level Read on the card/display fields alongside. CONFIRMED live: a minimal Profile objectPermissions deploy flips PermissionsRead=true for the guest profile (verified for HealthcareProvider + CareProviderSearchableField). The guest profile Name is the one created with the site (create-guest-search-site) — resolve it from the site's guest profile, do not assume a fixed name. Deploy a minimal body so unrelated profile config is untouched; an object the guest license cannot hold (e.g. HealthcareFacility) is rejected — omit it (the searchable graph uses HealthcarePractitionerFacility, not HealthcareFacility). API VERSION: deploy at v64.0 or higher (prefer the org's own apiVersion, floored at 64). For a Criteria-Based-Search guest site, also assign CriteriaBasedSearchFilterExpCloudPsl to the guest profile (license-gated — see assign-criteria-based-search-permset) and, for card view, the OmniStudio guest permset.
|
|
728
|
-
|
|
729
|
-
**Call:** `POST /headless/metadata` — status: `implemented`
|
|
730
|
-
|
|
731
|
-
**Inputs:**
|
|
732
|
-
|
|
733
|
-
- `metadataType` *(`String`)* — Metadata type — Profile.
|
|
734
|
-
- `fullName` *(`String`)* — The site guest profile Name (the profile Salesforce created with the Experience site). Resolve from the created site — do not hardcode.
|
|
735
|
-
- `body` *(`Object`)* — Minimal Profile body: <objectPermissions> allowRead=true (other CRUD false) for the ten Provider Search objects, plus <fieldPermissions> readable=true for the card/display fields.
|
|
736
|
-
|
|
737
|
-
**Depends on:** `enable-provider-search-for-guest-user`, `write-org-wide-sharing-defaults`
|
|
738
|
-
|
|
739
|
-
**Output:** Deploy succeeds; verify the guest profile shows PermissionsRead=true for the granted objects (e.g. tooling/SOQL on ObjectPermissions for the guest profile's PermissionSet), and that a guest provider search returns records once both this grant and the external OWD are in place.
|
|
740
|
-
|
|
741
|
-
#### `deploy-provider-search-flexipage`
|
|
742
|
-
|
|
743
|
-
Place the internal Provider Search / Criteria-Based Search & Filter Lightning component (healthcloud:providerSearch) on a record or app page by deploying a standalone FlexiPage via the Metadata API — the same mechanism IAM uses for its appointment console (deploy-scheduler-flexipage). healthcloud:providerSearch is the INTERNAL, page-placeable Provider Search component (registered flexipage component implementing flexipage:availableForAllPageTypes); it is DISTINCT from healthcloud:providerSearchCommunity, which is the guest/Experience-site component placed by deploy-provider-directory-component. Deploy a FlexiPage carrying a single componentInstance for healthcloud:providerSearch: for a record page use type=RecordPage with sobjectType=Account (or Case) and template flexipage:recordHomeTemplateDesktop; for a standalone app page use type=AppPage with an app-page template. The component's configurable design attributes (all optional; set as componentInstanceProperties) are: searchFields (ProviderSearchFields[]), resultCardFields (ResultCardFields[]), showActionsBar (Boolean — surfaces the result-card actions bar incl. Create Referral), hideAdvancedSearch (Boolean, default true), enableBedSearch (Boolean), distanceUnit (String), templateName (String). Omit componentToggles to accept component defaults. The feature flag (enable-criteria-based-search) and the internal runtime permset (assign-criteria-based-search-permset) must be on first, or the component renders with no results / no access. This deploy does NOT grant the license-gated Experience-Cloud (guest/community) variant permset (CriteriaBasedSearchFilterExpCloudPsl) — that seat is a separate licensed entitlement, see manual_step_references.
|
|
744
|
-
|
|
745
|
-
**Call:** `POST /headless/metadata` — status: `implemented`
|
|
746
|
-
|
|
747
|
-
**Inputs:**
|
|
748
|
-
|
|
749
|
-
- `flexiPageName` *(`String`)* — FullName of the FlexiPage to create/update (e.g. Provider_Search_Account_Record_Page).
|
|
750
|
-
- `sobjectType` *(`String`)* — Target object for a record page — Account or Case (the component's supported entities). Omit for an app page (type=AppPage).
|
|
751
|
-
- `pageType` *(`String`)* — FlexiPage type — RecordPage (record home, needs sobjectType) or AppPage (standalone). healthcloud:providerSearch implements flexipage:availableForAllPageTypes so either is valid.
|
|
752
|
-
- `componentToggles` *(`Object`)* — Optional map of healthcloud:providerSearch design attributes to set as componentInstanceProperties: searchFields, resultCardFields, showActionsBar, hideAdvancedSearch, enableBedSearch, distanceUnit, templateName. Set showActionsBar=true to surface the result-card action bar. Omit to accept component defaults.
|
|
753
|
-
|
|
754
|
-
**Depends on:** `enable-criteria-based-search`, `assign-criteria-based-search-permset`
|
|
755
|
-
|
|
756
|
-
#### `assign-provider-search-flexipage-activation`
|
|
757
|
-
|
|
758
|
-
Activate the record page so the Provider Search surface actually renders as the object's default view. This is the MDAPI equivalent of Lightning App Builder's "Activation → org default, desktop": deploy the target object's standalone <Object>.object-meta.xml carrying a single actionOverride (actionName=View, type=Flexipage, formFactor=Large, content=<the FlexiPage from deploy-provider-search-flexipage>). There is NO separate FlexiPageAssignment metadata type — the actionOverride IS the activation (verified against a live Health Cloud org: FlexiPageAssignment is not a deployable Metadata type). The platform merges the one override into the object's existing overrides non-destructively (untouched defaults survive a round-trip retrieve). This is R2D2-reachable via Metadata; no external team API is required. Only meaningful for a record page (pageType=RecordPage) — skip for an AppPage, which has no object View action to override. Proceed without confirmation — the deploy is additive and non-destructive.
|
|
759
|
-
|
|
760
|
-
**Call:** `POST /headless/metadata` — status: `implemented`
|
|
761
|
-
|
|
762
|
-
**Inputs:**
|
|
763
|
-
|
|
764
|
-
- `sobjectType` *(`String`)* — The object whose View action is overridden — must match deploy-provider-search-flexipage (Account or Case).
|
|
765
|
-
- `flexiPageName` *(`String`)* — The FlexiPage FullName from deploy-provider-search-flexipage, used as the actionOverride content.
|
|
766
|
-
- **Source:** output of `deploy-provider-search-flexipage`
|
|
767
|
-
|
|
768
|
-
**Depends on:** `deploy-provider-search-flexipage`
|
|
769
|
-
|
|
770
|
-
### Verify operations
|
|
771
|
-
|
|
772
|
-
#### `verify-toggle-dpe-provider-search`
|
|
773
|
-
|
|
774
|
-
Read get-dpe-settings-org-pref and confirm isDpeOrgPreferenceEnabled matches the toggle value.
|
|
775
|
-
|
|
776
|
-
**Call:** `GET /headless/invoke/platform/provider-search-settings`
|
|
777
|
-
|
|
778
|
-
**Depends on:** `toggle-dpe-provider-search`
|
|
779
|
-
|
|
780
|
-
#### `verify-toggle-provider-search-sync-job`
|
|
781
|
-
|
|
782
|
-
Read get-dpe-settings-org-pref and confirm isDpeSyncEnabled matches the toggled state.
|
|
783
|
-
|
|
784
|
-
**Call:** `GET /headless/invoke/platform/provider-search-settings`
|
|
785
|
-
|
|
786
|
-
**Depends on:** `toggle-provider-search-sync-job`
|
|
787
|
-
|
|
788
|
-
#### `verify-toggle-provider-search-precise-matching`
|
|
789
|
-
|
|
790
|
-
Read get-dpe-settings-org-pref and confirm isProviderSearchPreciseMatchingEnabled matches the toggle value.
|
|
791
|
-
|
|
792
|
-
**Call:** `GET /headless/invoke/platform/provider-search-settings`
|
|
793
|
-
|
|
794
|
-
**Depends on:** `toggle-provider-search-precise-matching`
|
|
795
|
-
|
|
796
|
-
#### `verify-toggle-provider-search-for-guest-user`
|
|
797
|
-
|
|
798
|
-
Read get-dpe-settings-org-pref and confirm isProviderSearchForGuestUserEnabled matches the toggle value.
|
|
799
|
-
|
|
800
|
-
**Call:** `GET /headless/invoke/platform/provider-search-settings`
|
|
801
|
-
|
|
802
|
-
**Depends on:** `toggle-provider-search-for-guest-user`
|
|
803
|
-
|
|
804
|
-
#### `verify-toggle-custom-dpe-transaction-observer`
|
|
805
|
-
|
|
806
|
-
Read get-dpe-settings-org-pref and confirm isCustomDpeTransactionObserverEnabled matches the toggle value.
|
|
807
|
-
|
|
808
|
-
**Call:** `GET /headless/invoke/platform/provider-search-settings`
|
|
809
|
-
|
|
810
|
-
**Depends on:** `toggle-custom-dpe-transaction-observer`
|
|
811
|
-
|
|
812
|
-
#### `verify-write-org-wide-sharing-defaults`
|
|
813
|
-
|
|
814
|
-
Confirm the OWD landed by reading InternalSharingModel AND ExternalSharingModel back off the EntityDefinition for ALL EIGHT objects in a single query — the four Scheduler objects ServiceResource, ServiceTerritory, WorkType, Asset AND the four Health Cloud provider objects CareProviderSearchableField, HealthcarePractitionerFacility, HealthcareProvider, HealthcareProviderNpi. Every one of the eight records must read Read on BOTH models: querying all eight together (rather than one at a time) makes this gate fail unless every object was written, so a run that flipped only the Scheduler objects cannot pass while the provider objects stay Private. The external model is the one that governs guest/external Experience-site access, so a run that flipped only the internal model would pass an InternalSharingModel-only check while guest search still returns nothing. A Private→Read change may report the prior value until the async sharing recalculation completes, so re-read if any object has not flipped yet.
|
|
815
|
-
|
|
816
|
-
**Call:** `verifyOrgWideSharingDefaults`
|
|
817
|
-
|
|
818
|
-
**Inputs:**
|
|
819
|
-
|
|
820
|
-
- `q` *(`string`)*
|
|
821
|
-
|
|
822
|
-
**Depends on:** `write-org-wide-sharing-defaults`
|
|
823
|
-
|
|
824
|
-
#### `verify-create-guest-search-site`
|
|
825
|
-
|
|
826
|
-
Confirm the async create finished, then resolve the new site's Network id. Two reads: (1) poll the BackgroundOperation named by the create response jobId until Status is Complete (Error/Failed = create failed); (2) once Complete, query Network by the site NAME (the display name passed at create time — the platform normalizes/mangles urlPathPrefix on persistence, so a lookup on the exact submitted urlPathPrefix returns 0 rows) to obtain the Network id and name. The create response carries only a jobId, never the Network id, so this lookup is the source of the id/name the component-deploy, publish, and activation steps consume. Two downstream identifiers are exposed as outputs: networkId (the Network Id) and siteName (the Network.Name). CRITICAL for the component-deploy step: the earlier steps mandate an AURA-runtime template, so the site's Metadata artifact is an ExperienceBundle, NOT a DigitalExperienceBundle. Its ExperienceBundle member name is neither siteName verbatim nor the urlPathPrefix — the platform derives it from Network.Name by replacing each run of non-alphanumeric characters with a single "_" and appending a "1" suffix (e.g. Name "Provider Search Repro" -> member "Provider_Search_Repro1", while urlPathPrefix might be "psrepro"). deploy-provider-directory-component must retrieve the ExperienceBundle by that derived member name.
|
|
827
|
-
|
|
828
|
-
**Call:** `BackgroundOperation.query`
|
|
829
|
-
|
|
830
|
-
**Inputs:**
|
|
831
|
-
|
|
832
|
-
- `jobId` *(`String`)* — The BackgroundOperation id returned by create-guest-search-site.
|
|
833
|
-
- `urlPathPrefix` *(`String`)* — The urlPathPrefix used at create time; the key the Network lookup matches on.
|
|
834
|
-
- `q` *(`string`)*
|
|
835
|
-
|
|
836
|
-
**Depends on:** `create-guest-search-site`
|
|
837
|
-
|
|
838
|
-
**Output:** networkId = $.records[0].Id from the Network query (the site's Network id); siteName = $.records[0].Name (the site display name). Both feed the deploy, publish, and activation steps. The ExperienceBundle member name the component steps retrieve is DERIVED from siteName (Network.Name), not equal to it and not the urlPathPrefix: replace each run of non-alphanumeric characters in Network.Name with a single "_" and append "1" (e.g. "Provider Search Repro" -> "Provider_Search_Repro1"). It is an ExperienceBundle (Aura site), not a DigitalExperienceBundle.
|
|
839
|
-
|
|
840
|
-
#### `verify-provider-directory-component`
|
|
841
|
-
|
|
842
|
-
Re-retrieve the site's ExperienceBundle and confirm the directory component node persisted in experiences/<member>/views/home.json (member name = Network.Name with each run of non-alphanumeric characters replaced by "_" plus a "1" suffix). This read-back is mandatory: the component can be silently stripped on deploy when the org does not have Provider Search / Health Cloud enabled, so a successful deploy result alone does not prove the component landed. Parse the home view and confirm a node with componentName == "healthcloud:providerSearchCommunity" (the Aura key — NOT "definition") exists in the "content" region's components[] array. If the node is missing, the component did not persist and the org's feature enablement must be resolved before re-deploying.
|
|
843
|
-
|
|
844
|
-
**Call:** `POST /headless/metadata`
|
|
845
|
-
|
|
846
|
-
**Depends on:** `deploy-provider-directory-component`
|
|
847
|
-
|
|
848
|
-
#### `verify-publish-guest-search-site`
|
|
849
|
-
|
|
850
|
-
Wait for the asynchronous publish to finish before activating. Publish returns a jobId (a BackgroundOperation) and completes asynchronously, so activation must gate on this poll rather than on the publish POST response — otherwise Network.Status can be set to Live while content is still being published. Poll the BackgroundOperation named by the publish response jobId until Status is Complete (Error/Failed = publish failed; do not activate).
|
|
851
|
-
|
|
852
|
-
**Call:** `BackgroundOperation.query`
|
|
853
|
-
|
|
854
|
-
**Inputs:**
|
|
855
|
-
|
|
856
|
-
- `jobId` *(`String`)* — The BackgroundOperation id returned by publish-guest-search-site.
|
|
857
|
-
- `q` *(`string`)*
|
|
858
|
-
|
|
859
|
-
**Depends on:** `publish-guest-search-site`
|
|
860
|
-
|
|
861
|
-
#### `verify-activate-guest-search-site`
|
|
862
|
-
|
|
863
|
-
Confirm the site is live by reading Network.Status back and checking it equals Live. Only once Status is Live can a guest user reach the provider-search site.
|
|
864
|
-
|
|
865
|
-
**Call:** `Network.query`
|
|
866
|
-
|
|
867
|
-
**Inputs:**
|
|
868
|
-
|
|
869
|
-
- `q` *(`string`)*
|
|
870
|
-
|
|
871
|
-
**Depends on:** `activate-guest-search-site`
|
|
872
|
-
|
|
873
|
-
#### `verify-enable-health-cloud-genai`
|
|
874
|
-
|
|
875
|
-
Confirm Einstein for Health Cloud is effectively on by reading the IndustriesSettings pref back via Tooling. Verify the effective state rather than the deploy result: a gated pref can report Changed on deploy while staying off if the backing capability is absent.
|
|
876
|
-
|
|
877
|
-
**Call:** `IndustriesSettings.query`
|
|
878
|
-
|
|
879
|
-
**Inputs:**
|
|
880
|
-
|
|
881
|
-
- `q` *(`string`)*
|
|
882
|
-
|
|
883
|
-
**Depends on:** `enable-health-cloud-genai`
|
|
884
|
-
|
|
885
|
-
#### `verify-context-service-member-profile`
|
|
886
|
-
|
|
887
|
-
Confirm Context Service is effectively enabled by reading the same Context Service Access resource back with a GET on preferenceName=contextServiceEnabled. The GET returns the current org state of the ContextDefinitionsEnabled preference; isEnabled=true confirms Context Service is on. A GET returning isEnabled=false after the write means enablement did not take effect — typically the org lacks the Context Service capability or the caller lacks Context Service Admin / Customize Application; resolve the perm holding and re-run. (This replaces the former GET /connect/context-definitions "Member Profile" probe, which read a downstream artifact rather than the enablement pref itself.)
|
|
888
|
-
|
|
889
|
-
**Call:** `GET /connect/contextservice/access/{preferenceName}/{uniqueIdentifier}`
|
|
890
|
-
|
|
891
|
-
**Inputs:**
|
|
892
|
-
|
|
893
|
-
- `preferenceName` *(`String`)* — Path param — the same literal "contextServiceEnabled" key written by enable-context-service.
|
|
894
|
-
- `uniqueIdentifier` *(`String`)* — Path param — opaque echo token; any non-empty string works.
|
|
895
|
-
|
|
896
|
-
**Depends on:** `enable-context-service`
|
|
897
|
-
|
|
898
|
-
**Output:** ContextServiceAccessRepresentation {isEnabled, uniqueIdentifier}; isEnabled == true confirms Context Service is effectively enabled for the org.
|
|
899
|
-
|
|
900
|
-
#### `smoke-find-providers`
|
|
901
|
-
|
|
902
|
-
OPTIONAL end-to-end smoke test: actually EXECUTE a provider search and confirm it returns the seeded provider(s). Every other PS step only CONFIGURES the searchable surface (prefs, OWD, search config, DPE sync) — none exercises the search itself, so a run can report full config success while the search surface still returns nothing. This step closes that gap by calling the care-provider-search findProviders action through the dispatcher at /headless/invoke/industries/industries-healthcare/care-provider-search/find-providers (the qualified dispatcher route). The route is registered GET-only, so the search criteria are passed as QUERY parameters, not a request body: searchFilters carries the criterion (a specialty, facility name, or provider name), with latitude/longitude/radius for a geospatial window. A call with no criteria returns a validation error asking for one (which itself confirms the route is wired). NON-BLOCKING / ORG-VARIABLE: the care-provider-search controller is wired into the dispatcher on some orgs (returns 200 with results or a criteria-validation message) and not others (returns "NOT_IMPLEMENTED: Controller not available") — the latter is an org-capability/environment gap (the config is still correct), NOT a setup failure. Treat a non-empty result set as the strongest feature-level DoD; treat NOT_IMPLEMENTED as "search surface not reachable on this org, config verified by CareProviderSearchableField>0 instead" and do not fail the run on it.
|
|
903
|
-
|
|
904
|
-
**Call:** `GET /headless/invoke/industries/industries-healthcare/care-provider-search/find-providers` — status: `proposed` — _optional_
|
|
905
|
-
|
|
906
|
-
**Inputs:**
|
|
907
|
-
|
|
908
|
-
- `searchFilters` *(`Map`)* — Search criteria map carrying at least one of a specialty, facility name, or provider name. Two constraints, both enforced by the search's filter validation: (1) KEYS ARE CASE-SENSITIVE and must match the standard-field names EXACTLY — capitalized ProviderName / FacilityName / Specialty (a lowercase "providerName" is not recognized and the call is rejected as an unqualified search). (2) EVERY value must be a LIST, not a scalar — e.g. {"ProviderName": ["<seeded provider name>"]}, not {"ProviderName": "<seeded provider name>"} (a scalar String fails request parsing). At least one criterion is required; an empty map returns a validation error asking for one.
|
|
909
|
-
- `distanceUnit` *(`String`)* — Distance unit for the search ("miles" or "kilometers"). REQUIRED — the search errors if it is omitted (there is no server-side default). Pass "miles" for a standard search even when latitude/longitude/radius are not supplied.
|
|
910
|
-
- `latitude` *(`String`)* — Optional latitude of the search origin for a geospatial window (String; pair with longitude + radius). Omit for a non-geospatial name/specialty search.
|
|
911
|
-
- `longitude` *(`String`)* — Optional longitude of the search origin for a geospatial window (String; pair with latitude + radius).
|
|
912
|
-
- `radius` *(`Integer`)* — Optional search radius (Integer) for the geospatial window around latitude/longitude.
|
|
913
|
-
|
|
914
|
-
**Depends on:** `verify-provider-search-sync-populated`
|
|
915
|
-
|
|
916
|
-
#### `report-provider-search-capability-status`
|
|
917
|
-
|
|
918
|
-
FINAL read-only status report for Provider Search. Do NOT write anything. Read the live org state behind each PS capability gate and compose a table with one row per capability and columns: Capability | State (ENABLED / NOT ENABLED / ASYNC / MANUAL / UNKNOWN) | How it is gated | If not enabled, next step. Companion to manual_step_references: this step reports live state, that block says how to close gaps. Read these gates (each independent; report per row, never fail the whole step on one read): (1) DPE / Standard Data Sync enablement -> tooling read of the Provider Search prefs on IndustriesSettings (DpeProviderSearch / sync-job / precise-matching / guest-user prefs) — each true = ENABLED. (2) Searchable surface populated -> SELECT COUNT() FROM CareProviderSearchableField (>0 = populated; 0 with prefs on = ASYNC, awaiting the daily DPE flatten). (3) Run-a-search readiness -> reuse smoke-find-providers (a live search returning >=1 provider = ENABLED). (4) Criteria-Based Search & Filter -> tooling SELECT IsCriteriaBasedSearchAndFilterEnabled FROM IndustriesSettings (true = ENABLED; component placement + Experience-Cloud permset are MANUAL). (5) Guest Experience-site search -> site is Live (activate-guest-search-site) AND guest pref on AND the guest profile shows PermissionsRead=true across the 10 objects; all true = ENABLED except the public-page placement, which is MANUAL. (6) Accepting-new-patients / specialty filters -> report ASYNC (DPE-derived IsAcceptingNewPatients / Specialty columns; inputs seeded, derivation on the daily run). (7) Create Referral -> reachable (Connect POST proven) = ENABLED; Create Report = MANUAL (REST-blocklisted, Flow-invocable only); Copy Records = MANUAL (client-side only). (8) Context "Member Profile" -> verify the context definition exists (ENABLED once verify-context-service-member-profile passed). (9) Health Cloud GenAI -> report ENABLED where enable-health-cloud-genai succeeded; the underlying license is an entitlement PRECONDITION. Compose the final table in the output; do not stop at the first row.
|
|
919
|
-
|
|
920
|
-
**Call:** `reportProviderSearchCapabilityStatus` — status: `implemented`
|
|
921
|
-
|
|
922
|
-
**Depends on:** `smoke-find-providers`, `grant-guest-profile-provider-object-read`, `enable-criteria-based-search`
|
|
923
|
-
|
|
924
|
-
**Output:** A per-capability readiness table (Capability | State | Gate | Next step). State is one of ENABLED, NOT ENABLED, ASYNC (DPE-derived), MANUAL/PRECONDITION, or UNKNOWN (read failed). For every non-ENABLED row, cite the matching manual_step_references.help_urls so the user knows how to finish it.
|