@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,630 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: communications-initial-setup-configure
|
|
3
|
-
description: "Perform the initial setup for Communications Cloud on a Salesforce org that already has Revenue Cloud base setup in place. Trigger when users mention \"set up Communications Cloud\", \"Comms Cloud initial setup\", \"provision Comms Cloud for a new org\", \"assign Comms Cloud permission sets\", \"deploy the Comms Product Discovery context definition\", or \"create the Comms discovery pricing procedure\". Assumes Communications Cloud add-on licenses are provisioned. Runs step-by-step against small-payload Connect APIs. Three outcomes: (1) assigns the three required permission sets on a target user; (2) builds `customcommsproductdiscovery` by extending `CommsProductDiscoveryContext__stdctx` via POST `/connect/context-definitions`, applies the small hardcoded delta through POST `/connect/context-node-mappings/{id}/context-attribute-mappings`, promotes a default mapping, then activates with PATCH `{isActive: true}`; (3) authors the `Comms_Product_Discovery_Pricing_Procedure` ExpressionSetDefinition (bound to the CD from outcome 2) in a single POST to `/connect/business-rules/expression-set` carrying the full V1 version body — 2 steps (`ListPrice`, `PricingSetting`) plus 1 Constant variable — since the Connect API accepts inline `versions[].steps[].customElement.parameters` on the create call and PATCH of that version content is not supported."
|
|
4
|
-
metadata:
|
|
5
|
-
version: "1.0"
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
# Communications Cloud — Initial Setup
|
|
9
|
-
|
|
10
|
-
## When to Use This Skill
|
|
11
|
-
|
|
12
|
-
Perform the initial setup for Communications Cloud on a Salesforce org that
|
|
13
|
-
already has Revenue Cloud base/initial setup complete and the Communications
|
|
14
|
-
Cloud add-on licenses provisioned. Three outcomes, all dispatched through
|
|
15
|
-
`/services/data/v67.0/*` REST — no multipart, no CLI shell-out:
|
|
16
|
-
|
|
17
|
-
1. Assign (or confirm) the three Comms Cloud sales permission sets on the
|
|
18
|
-
target user: `CMESalesStandardPermissionSet` (label "CME Sales Features"),
|
|
19
|
-
`CommsCloudSalesFeatures` (label "Revenue Cloud for Communications
|
|
20
|
-
Features"), and `SimpleCsvDataImport` (label "Basic CSV Data Import"). The
|
|
21
|
-
assignments are idempotent — every write is preceded by a "check what's
|
|
22
|
-
already assigned" SOQL and only missing rows are created.
|
|
23
|
-
|
|
24
|
-
2. Build `customcommsproductdiscovery` — an ACTIVE extension of
|
|
25
|
-
`CommsProductDiscoveryContext__stdctx` — through a fixed script of Connect
|
|
26
|
-
API calls. Extend via POST `/connect/context-definitions`, apply the one
|
|
27
|
-
hardcoded delta below (3 new attribute-mappings on shared base-inherited
|
|
28
|
-
mappings, hydrating `Account.id` from `Account.Id`; 0 new attributes, 0
|
|
29
|
-
new context-mappings, 0 new node-mappings, 0 new tags, 0 new nodes), then
|
|
30
|
-
flip `isActive=true` after PATCHing one mapping to `isDefault=true`. Each
|
|
31
|
-
POST is a JSON body under a few KB.
|
|
32
|
-
|
|
33
|
-
3. Author `Comms_Product_Discovery_Pricing_Procedure` — a
|
|
34
|
-
`usageType=DefaultPricing`, `interfaceSourceType=PricingProcedure`
|
|
35
|
-
ExpressionSetDefinition bound to `customcommsproductdiscovery` — in a
|
|
36
|
-
SINGLE `POST /connect/business-rules/expression-set` carrying the full V1
|
|
37
|
-
version content inline (`versions[0].steps[]` + `versions[0].variables[]`)
|
|
38
|
-
with `versions[0].enabled=true` so V1 is ACTIVE on the 201 response. The
|
|
39
|
-
body ships 2 hardcoded steps in this order: `PricingSetting`
|
|
40
|
-
(`sequenceNumber=1`, `actionType=PricingSettings`) then `ListPrice`
|
|
41
|
-
(`sequenceNumber=2`, `actionType=ListPrice`), plus 1 Constant variable
|
|
42
|
-
(`Constant_UnitPrice_Price_Book_Entry_Decision_Table_v2_LP`). Each step's
|
|
43
|
-
parameter list is fully specified in Step 8 below. Payload is a few KB.
|
|
44
|
-
|
|
45
|
-
Naming: "Communications Cloud" (or "Comms Cloud" for short). The three
|
|
46
|
-
permission-set Names above are the identifiers to write; the human labels are
|
|
47
|
-
for operator-facing messages only. `customcommsproductdiscovery` is the
|
|
48
|
-
developer name AND the label — they match on this extension. On the Connect
|
|
49
|
-
API input rep the label field is `name`, and the parent-CD pointer is
|
|
50
|
-
`baseReference`; the metadata-flavored `masterLabel` /
|
|
51
|
-
`inheritedFromDeveloperName` names do NOT apply here.
|
|
52
|
-
|
|
53
|
-
**Out of scope for this version:** promotions
|
|
54
|
-
(`promotionMappingwithcustom` mapping and any promotion-only attributes such
|
|
55
|
-
as `SalesTransaction.Channel__c`), channel attributes
|
|
56
|
-
(`Account.channelFinal__c`), the `ConsumerSalesExtended266` CD, the
|
|
57
|
-
Location-Based Pricing surface, and Rate Management enablement. Rank
|
|
58
|
-
promotion or multi-version selection for the pricing procedure is also out
|
|
59
|
-
of scope — the recipe writes exactly one active V1 (`rank=1`,
|
|
60
|
-
`enabled=true`). If the user asks for any of those, say so explicitly.
|
|
61
|
-
|
|
62
|
-
## Workflow
|
|
63
|
-
|
|
64
|
-
Eight steps against a single org. Steps 1–5 are plain sObject/REST (SOQL +
|
|
65
|
-
PermissionSetAssignment writes). Steps 6–7 build and verify the
|
|
66
|
-
`customcommsproductdiscovery` CD via the Connect API extend-then-augment
|
|
67
|
-
loop. Step 8 authors the `Comms_Product_Discovery_Pricing_Procedure`
|
|
68
|
-
ExpressionSetDefinition against that CD in one shot on the BRE Connect API.
|
|
69
|
-
All writes route through native `/services/data/v67.0/*` endpoints.
|
|
70
|
-
|
|
71
|
-
── Steps 1–5 — permission-set assignment (idempotent) ─────────────────────
|
|
72
|
-
|
|
73
|
-
`sor_input: target_user_id` — 18-char User Id who should receive the
|
|
74
|
-
permission sets. When omitted, the skill resolves the running (authenticated)
|
|
75
|
-
user's Id and assigns to them. Either `dispatch_readonly` on
|
|
76
|
-
`GET /services/data/v67.0/` (returns the identity URL for the current user)
|
|
77
|
-
or `SELECT Id FROM User WHERE Username='<running username>'` is an acceptable
|
|
78
|
-
resolver.
|
|
79
|
-
|
|
80
|
-
1. **Resolve the three Comms permission set Names to Ids** —
|
|
81
|
-
`SELECT Id, Name FROM PermissionSet WHERE Name IN ('CMESalesStandardPermissionSet','CommsCloudSalesFeatures','SimpleCsvDataImport')`.
|
|
82
|
-
Any Name that does NOT resolve means the backing add-on license isn't
|
|
83
|
-
provisioned on this org — record it as a **partial-success gap** and
|
|
84
|
-
continue with the ones that do resolve.
|
|
85
|
-
|
|
86
|
-
2. **Resolve the assignee** — either the caller-supplied `target_user_id` or
|
|
87
|
-
the running user's Id.
|
|
88
|
-
|
|
89
|
-
3. **Check existing assignments (idempotency gate)** —
|
|
90
|
-
`SELECT PermissionSetId, PermissionSet.Name FROM PermissionSetAssignment WHERE AssigneeId = <assignee_id> AND PermissionSet.Name IN (…the same three…)`.
|
|
91
|
-
The to-assign list for Step 4 is `(Step 1 Ids) − (Step 3 Ids already assigned)`.
|
|
92
|
-
|
|
93
|
-
4. **Assign the missing permission sets** —
|
|
94
|
-
`POST /services/data/v67.0/sobjects/PermissionSetAssignment` with body
|
|
95
|
-
`{"AssigneeId": "<assignee_id>", "PermissionSetId": "<perm_set_id>"}`. One
|
|
96
|
-
call per missing permission set.
|
|
97
|
-
|
|
98
|
-
5. **Verify** — re-run the Step 3 SOQL and confirm every Name that resolved
|
|
99
|
-
in Step 1 appears in the assignee's rows.
|
|
100
|
-
|
|
101
|
-
── Steps 6–7 — build `customcommsproductdiscovery` via Connect APIs ──────
|
|
102
|
-
|
|
103
|
-
The delta from base `CommsProductDiscoveryContext__stdctx` to the target
|
|
104
|
-
extension `customcommsproductdiscovery` is baked into Step 6e below — the
|
|
105
|
-
skill does NOT re-diff at runtime. Step 6 is a fixed sequence: extend →
|
|
106
|
-
resolve draft Ids from the extend response → apply the one hardcoded delta →
|
|
107
|
-
activate. The target shape is exactly:
|
|
108
|
-
|
|
109
|
-
- **0 new context-attributes**
|
|
110
|
-
- **0 new context-tags**
|
|
111
|
-
- **0 new top-level mappings**
|
|
112
|
-
- **3 new attribute-mappings on shared base-inherited mappings** (all on
|
|
113
|
-
their `Account` node-mapping, all `id` hydrated from `Account.Id`, on
|
|
114
|
-
`QuoteProductDiscoveryMapping`, `OrderProductDiscoveryMapping`, and
|
|
115
|
-
`ProductDiscoveryMapping`)
|
|
116
|
-
- **0 new context-nodes**
|
|
117
|
-
|
|
118
|
-
Idempotency: Step 6b (skip-if-present) short-circuits when the extension
|
|
119
|
-
already exists and is active. If it exists inactive with some deltas already
|
|
120
|
-
applied, running Step 6e will re-POST each hardcoded delta; each POST
|
|
121
|
-
endpoint returns 400 on duplicate name / Id — treat 400 with a "duplicate"
|
|
122
|
-
or "already exists" body as a no-op signal and continue.
|
|
123
|
-
|
|
124
|
-
6. **Build `customcommsproductdiscovery` (extend + augment).**
|
|
125
|
-
|
|
126
|
-
6a. **Discover base CD id.** `GET /services/data/v67.0/connect/context-definitions`
|
|
127
|
-
and read out the record for
|
|
128
|
-
`developerName=CommsProductDiscoveryContext__stdctx`. Capture
|
|
129
|
-
`contextDefinitionId` — for a stock CD this is the developer name
|
|
130
|
-
itself (`CommsProductDiscoveryContext__stdctx`), NOT an `11ODX…`
|
|
131
|
-
key-prefix id. The `11ODX…` shape applies only to custom / extension
|
|
132
|
-
CDs (Step 6c's response and Step 6b when the extension already exists).
|
|
133
|
-
|
|
134
|
-
6b. **Skip-if-present gate.** `GET /services/data/v67.0/connect/context-definitions`
|
|
135
|
-
filtered by `developerName=customcommsproductdiscovery`. If it already
|
|
136
|
-
exists and `isActive=true`, jump to Step 7 (idempotent short-circuit).
|
|
137
|
-
Otherwise, if it exists inactive, capture its id and skip the extend
|
|
138
|
-
in 6c — proceed directly to 6d.
|
|
139
|
-
|
|
140
|
-
6c. **Extend the base CD.** `POST /services/data/v67.0/connect/context-definitions`
|
|
141
|
-
with body
|
|
142
|
-
```json
|
|
143
|
-
{
|
|
144
|
-
"developerName": "customcommsproductdiscovery",
|
|
145
|
-
"name": "customcommsproductdiscovery",
|
|
146
|
-
"baseReference": "CommsProductDiscoveryContext__stdctx"
|
|
147
|
-
}
|
|
148
|
-
```
|
|
149
|
-
Response echoes the new `contextDefinitionId` (`11ODX…`) and
|
|
150
|
-
`activeVersionId` (`11pDX…`) for the draft. The draft is inactive by
|
|
151
|
-
default — do NOT send `isActive`. The input rep field is
|
|
152
|
-
`baseReference` (not `inheritedFromDeveloperName`), and the label
|
|
153
|
-
field is `name` (not `masterLabel`); sending
|
|
154
|
-
`masterLabel` / `inheritedFromDeveloperName` / `isActive` returns
|
|
155
|
-
`Unrecognized field` 400s from the input rep on v67.
|
|
156
|
-
|
|
157
|
-
6d. **Fetch the draft to resolve org-specific Ids.**
|
|
158
|
-
`GET /services/data/v67.0/connect/context-definitions/{draftId}` —
|
|
159
|
-
returns the full nested tree under
|
|
160
|
-
`contextDefinitionVersionList[0]`. The draft's `contextNodes[]` and
|
|
161
|
-
`contextMappings[]` are copied from the base, so before posting the
|
|
162
|
-
hardcoded delta below resolve these org-specific Ids from the draft
|
|
163
|
-
response:
|
|
164
|
-
- Base attribute Id on the draft's `Account` node needed by the
|
|
165
|
-
shared-mapping loop:
|
|
166
|
-
- `id` on the draft's `Account` node → attribute Id (`11nDX…`).
|
|
167
|
-
(Look this up by `name` on `contextNodes[*].attributes[*]`.)
|
|
168
|
-
- The three shared-mapping node-mapping Ids (`11bDX…`) on the draft —
|
|
169
|
-
needed to POST the shared-mapping attribute-mappings:
|
|
170
|
-
- `QuoteProductDiscoveryMapping / Account` node-mapping Id
|
|
171
|
-
- `OrderProductDiscoveryMapping / Account` node-mapping Id
|
|
172
|
-
- `ProductDiscoveryMapping / Account` node-mapping Id
|
|
173
|
-
(Walk `contextMappings[*].contextNodeMappings[*]`, filter by mapping
|
|
174
|
-
`name` + node-mapping `contextNodeName=Account`, read out
|
|
175
|
-
`contextNodeMappingId`.)
|
|
176
|
-
|
|
177
|
-
6e. **Apply the one hardcoded delta** — 3 attribute-mapping POSTs under
|
|
178
|
-
the shared base-inherited mappings' `Account` node-mappings. Every
|
|
179
|
-
Connect POST endpoint takes a LIST-wrapper input rep. Halt the whole
|
|
180
|
-
step on any 4xx that is not a "duplicate" / "already exists" body.
|
|
181
|
-
|
|
182
|
-
**6e-i. Create the 3 shared-mapping attribute-mappings on the
|
|
183
|
-
`Account` node-mapping of each shared base-inherited mapping.**
|
|
184
|
-
|
|
185
|
-
Parents are the draft's `Account` node-mapping Ids under
|
|
186
|
-
`QuoteProductDiscoveryMapping` / `OrderProductDiscoveryMapping` /
|
|
187
|
-
`ProductDiscoveryMapping` (resolved in 6d). The attribute Id is the
|
|
188
|
-
draft's `Account.id` (base attribute — every org has it).
|
|
189
|
-
|
|
190
|
-
**`ProductDiscoveryMapping / Account`** — 1 attribute-mapping:
|
|
191
|
-
```json
|
|
192
|
-
{ "contextAttributeMappings": [{"contextAttributeId": "<Account.id.attrId>", "contextInputAttributeName": "id", "hydrationDetails": {"contextAttrContextHydrationDetails": [], "contextAttrHydrationDetails": [{"queryAttribute": "Id", "sObjectDomain": "Account"}]}}], "deleteExistingHydrationDetails": false }
|
|
193
|
-
```
|
|
194
|
-
|
|
195
|
-
**`QuoteProductDiscoveryMapping / Account`** — 1 attribute-mapping:
|
|
196
|
-
```json
|
|
197
|
-
{ "contextAttributeMappings": [{"contextAttributeId": "<Account.id.attrId>", "contextInputAttributeName": "id", "hydrationDetails": {"contextAttrContextHydrationDetails": [], "contextAttrHydrationDetails": [{"queryAttribute": "Id", "sObjectDomain": "Account"}]}}], "deleteExistingHydrationDetails": false }
|
|
198
|
-
```
|
|
199
|
-
|
|
200
|
-
**`OrderProductDiscoveryMapping / Account`** — 1 attribute-mapping:
|
|
201
|
-
```json
|
|
202
|
-
{ "contextAttributeMappings": [{"contextAttributeId": "<Account.id.attrId>", "contextInputAttributeName": "id", "hydrationDetails": {"contextAttrContextHydrationDetails": [], "contextAttrHydrationDetails": [{"queryAttribute": "Id", "sObjectDomain": "Account"}]}}], "deleteExistingHydrationDetails": false }
|
|
203
|
-
```
|
|
204
|
-
|
|
205
|
-
All three `id` attribute-mappings hydrate from `Account.Id`, which
|
|
206
|
-
every org has.
|
|
207
|
-
|
|
208
|
-
6f. **Ensure a default mapping exists, then activate.** Activation enforces
|
|
209
|
-
a hard gate — a version with zero mappings flagged `isDefault=true`
|
|
210
|
-
returns `DATA_MAPPING_NOT_FOUND: Cannot activate a definition without
|
|
211
|
-
default mapping` on the PATCH below. The Connect extend copies the
|
|
212
|
-
base's mappings but does NOT preserve the base version's `isDefault`
|
|
213
|
-
flag — every mapping on the draft comes back `isDefault=false`.
|
|
214
|
-
|
|
215
|
-
6f-i. **Promote one mapping to default** — for
|
|
216
|
-
`customcommsproductdiscovery` the default mapping is
|
|
217
|
-
`QuoteProductDiscoveryMapping`. Resolve its `contextMappingId` on the
|
|
218
|
-
draft. Then
|
|
219
|
-
`PATCH /services/data/v67.0/connect/context-definitions/{draftId}/context-mappings`
|
|
220
|
-
with body
|
|
221
|
-
`{"contextMappings": [{"contextMappingId": "<11jDX…>", "isDefault": true}]}`.
|
|
222
|
-
Skip 6f-i if the draft already has a mapping with `isDefault=true`.
|
|
223
|
-
|
|
224
|
-
6f-ii. **Activate** —
|
|
225
|
-
`PATCH /services/data/v67.0/connect/context-definitions/{draftId}`
|
|
226
|
-
with `{"isActive": true}`. Expect 200 with `isActive=true` in the
|
|
227
|
-
response body.
|
|
228
|
-
|
|
229
|
-
7. **Verify `customcommsproductdiscovery`** —
|
|
230
|
-
`GET /services/data/v67.0/connect/context-definitions/{draftId}`. Confirm
|
|
231
|
-
`isActive=true`, `definition=customcommsproductdiscovery`,
|
|
232
|
-
`baseReference=CommsProductDiscoveryContext__stdctx`. Spot-check the
|
|
233
|
-
target shape: 4 top-level mappings (the base-inherited set —
|
|
234
|
-
`ProductDiscoveryPromoMapping`, `ProductDiscoveryMapping`,
|
|
235
|
-
`QuoteProductDiscoveryMapping`, `OrderProductDiscoveryMapping` — with
|
|
236
|
-
`QuoteProductDiscoveryMapping.isDefault=true`); no new context-attributes
|
|
237
|
-
on any node; the three shared mappings (`QuoteProductDiscoveryMapping`,
|
|
238
|
-
`OrderProductDiscoveryMapping`, `ProductDiscoveryMapping`) each have an
|
|
239
|
-
extra `Account`-scoped `id` attribute-mapping hydrated from `Account.Id`.
|
|
240
|
-
No `promotionMappingwithcustom` mapping should be present. No
|
|
241
|
-
`channelFinal__c` attribute or attribute-mapping should be present.
|
|
242
|
-
|
|
243
|
-
── Step 8 — author `Comms_Product_Discovery_Pricing_Procedure` ────────────────
|
|
244
|
-
|
|
245
|
-
Author the discovery-flow pricing procedure as a Business Rules Engine
|
|
246
|
-
ExpressionSetDefinition bound to `customcommsproductdiscovery` from Step 6.
|
|
247
|
-
Both the shell AND the full V1 version content (steps + variables +
|
|
248
|
-
customElement parameters) go in a SINGLE
|
|
249
|
-
`POST /connect/business-rules/expression-set` — the Connect API's
|
|
250
|
-
`postExpressionSetCreate` accepts nested `versions[]` on create. PATCH of
|
|
251
|
-
version content on this API is not supported (returns `INTERNAL_ERROR`), so
|
|
252
|
-
the create is the only successful write path.
|
|
253
|
-
|
|
254
|
-
8. **Author `Comms_Product_Discovery_Pricing_Procedure`.**
|
|
255
|
-
|
|
256
|
-
8a. **Skip-if-present gate.**
|
|
257
|
-
`GET /services/data/v67.0/query?q=SELECT+Id,DeveloperName,MasterLabel+FROM+ExpressionSetDefinition+WHERE+DeveloperName='Comms_Product_Discovery_Pricing_Procedure'`.
|
|
258
|
-
(The Connect collection `/connect/business-rules/expression-set` is
|
|
259
|
-
`POST`-only — a `GET` returns `405 METHOD_NOT_ALLOWED`, so the
|
|
260
|
-
skip-if-present gate goes through SOQL.) If `totalSize=1`, capture
|
|
261
|
-
`records[0].Id` (`9QLDX…`) and skip 8b–8c — the procedure already
|
|
262
|
-
exists. Skip-if-present treats an existing record as terminal
|
|
263
|
-
regardless of its `enabled` state; do NOT attempt to reactivate an
|
|
264
|
-
existing procedure from this step. If `totalSize=0`, proceed.
|
|
265
|
-
|
|
266
|
-
8b. **Resolve the bound CD id.** From the Step 7 GET body, capture the
|
|
267
|
-
`contextDefinitionId` (`11ODX…`) for `customcommsproductdiscovery` —
|
|
268
|
-
needed for the `contextDefinitions[]` entry in the POST below. Both
|
|
269
|
-
`id` and `name` are required on the array element; supplying just
|
|
270
|
-
one returns `INVALID_INPUT: Specify a value for name parameter`.
|
|
271
|
-
|
|
272
|
-
8c. **POST the full V1 body — active on create.**
|
|
273
|
-
`POST /services/data/v67.0/connect/business-rules/expression-set`
|
|
274
|
-
with the body below. `usageType=DefaultPricing` implies
|
|
275
|
-
`usageSubtype=RevenueCloud` server-side (do NOT send `usageSubtype`;
|
|
276
|
-
the server sets it). `interfaceSourceType=PricingProcedure` classifies
|
|
277
|
-
the ESD as a pricing procedure on the runtime index. The two steps'
|
|
278
|
-
`sequenceNumber` values fix execution order: `PricingSetting=1`,
|
|
279
|
-
`ListPrice=2`. `versions[0].enabled` is `true` so V1 is active on
|
|
280
|
-
the 201 response — a single POST, no follow-up activation call.
|
|
281
|
-
|
|
282
|
-
```json
|
|
283
|
-
{
|
|
284
|
-
"name": "Comms Product Discovery Pricing Procedure",
|
|
285
|
-
"apiName": "Comms_Product_Discovery_Pricing_Procedure",
|
|
286
|
-
"usageType": "DefaultPricing",
|
|
287
|
-
"interfaceSourceType": "PricingProcedure",
|
|
288
|
-
"contextDefinitions": [
|
|
289
|
-
{"id": "<customcommsproductdiscovery.contextDefinitionId>", "name": "customcommsproductdiscovery"}
|
|
290
|
-
],
|
|
291
|
-
"versions": [{
|
|
292
|
-
"apiName": "Comms_Product_Discovery_Pricing_Procedure_V1",
|
|
293
|
-
"name": "Comms Product Discovery Pricing Procedure V1",
|
|
294
|
-
"decimalScale": 2,
|
|
295
|
-
"enabled": true,
|
|
296
|
-
"rank": 1,
|
|
297
|
-
"showExplExternally": false,
|
|
298
|
-
"versionNumber": 1,
|
|
299
|
-
"variables": [{
|
|
300
|
-
"name": "Constant_UnitPrice_Price_Book_Entry_Decision_Table_v2_LP",
|
|
301
|
-
"description": "Constant_UnitPrice_Price_Book_Entry_Decision_Table_v2_LP",
|
|
302
|
-
"type": "Constant",
|
|
303
|
-
"dataType": "Text",
|
|
304
|
-
"collection": false,
|
|
305
|
-
"decimalPlaces": 2,
|
|
306
|
-
"input": false,
|
|
307
|
-
"output": false,
|
|
308
|
-
"value": "UnitPrice"
|
|
309
|
-
}],
|
|
310
|
-
"steps": [
|
|
311
|
-
{
|
|
312
|
-
"name": "PricingSetting",
|
|
313
|
-
"description": "Pricing Setting",
|
|
314
|
-
"stepType": "BusinessKnowledgeModel",
|
|
315
|
-
"actionType": "PricingSettings",
|
|
316
|
-
"sequenceNumber": 1,
|
|
317
|
-
"resultIncluded": false,
|
|
318
|
-
"shouldExposeExecPathMsgOnly": true,
|
|
319
|
-
"shouldExposeConditionDetails": false,
|
|
320
|
-
"shouldShowExplExternally": false,
|
|
321
|
-
"customElement": {
|
|
322
|
-
"parameters": [
|
|
323
|
-
{"name": "LineItemId", "type": "Parameter", "value": "PricingId", "input": true, "output": false},
|
|
324
|
-
{"name": "IsDerived", "type": "Parameter", "value": "IsDerived", "input": true, "output": false},
|
|
325
|
-
{"name": "sectionCount", "type": "Literal", "value": "0", "input": true, "output": false},
|
|
326
|
-
{"name": "Subtotal", "type": "Parameter", "value": "SubTotal", "input": false, "output": true},
|
|
327
|
-
{"name": "selectedFunction", "type": "Literal", "value": "Get", "input": true, "output": false},
|
|
328
|
-
{"name": "IsRealTime", "type": "Literal", "value": "false", "input": true, "output": false},
|
|
329
|
-
{"name": "IsPropagationEnabled", "type": "Literal", "value": "false", "input": true, "output": false},
|
|
330
|
-
{"name": "PriceWaterfall", "type": "Parameter", "value": "price_water_fall","input": false, "output": true},
|
|
331
|
-
{"name": "NetUnitPrice", "type": "Parameter", "value": "NetUnitPrice", "input": false, "output": true}
|
|
332
|
-
]
|
|
333
|
-
}
|
|
334
|
-
},
|
|
335
|
-
{
|
|
336
|
-
"name": "ListPrice",
|
|
337
|
-
"description": "List Price",
|
|
338
|
-
"stepType": "BusinessKnowledgeModel",
|
|
339
|
-
"actionType": "ListPrice",
|
|
340
|
-
"sequenceNumber": 2,
|
|
341
|
-
"resultIncluded": false,
|
|
342
|
-
"shouldExposeExecPathMsgOnly": true,
|
|
343
|
-
"shouldExposeConditionDetails": false,
|
|
344
|
-
"shouldShowExplExternally": false,
|
|
345
|
-
"customElement": {
|
|
346
|
-
"parameters": [
|
|
347
|
-
{"name": "ListPriceField", "type": "Parameter", "value": "Constant_UnitPrice_Price_Book_Entry_Decision_Table_v2_LP", "input": true, "output": false},
|
|
348
|
-
{"name": "LookUpName", "type": "Literal", "value": "Price Book Entries V2", "input": true, "output": false},
|
|
349
|
-
{"name": "LookUpId", "type": "Literal", "value": "0lDDX00000000WW2AY", "input": true, "output": false},
|
|
350
|
-
{"name": "Product2Id", "type": "Parameter", "value": "PricingProductId", "input": true, "output": false},
|
|
351
|
-
{"name": "Pricebook2Id", "type": "Parameter", "value": "PricebookId", "input": true, "output": false},
|
|
352
|
-
{"name": "ProductSellingModelId", "type": "Parameter", "value": "ProductSellingModelId", "input": true, "output": false},
|
|
353
|
-
{"name": "Quantity", "type": "Parameter", "value": "ProductQuantity", "input": true, "output": false},
|
|
354
|
-
{"name": "LookUpApiName", "type": "Literal", "value": "Price_Book_Entry_Decision_Table_v2", "input": true, "output": false},
|
|
355
|
-
{"name": "IsContractEnabled", "type": "Literal", "value": "false", "input": true, "output": false},
|
|
356
|
-
{"name": "HideWaterfall", "type": "Literal", "value": "false", "input": true, "output": false},
|
|
357
|
-
{"name": "IsOutputResolutionEnabled", "type": "Literal", "value": "false", "input": true, "output": false},
|
|
358
|
-
{"name": "sectionCount", "type": "Literal", "value": "0", "input": true, "output": false},
|
|
359
|
-
{"name": "selectedFunction", "type": "Literal", "value": "Get", "input": true, "output": false},
|
|
360
|
-
{"name": "IsRealTime", "type": "Literal", "value": "false", "input": true, "output": false},
|
|
361
|
-
{"name": "Id", "type": "Parameter", "value": "PriceBookEntryId", "input": false, "output": true},
|
|
362
|
-
{"name": "IsDerived", "type": "Parameter", "value": "IsDerived", "input": false, "output": true},
|
|
363
|
-
{"name": "ListPrice", "type": "Parameter", "value": "UnitPrice", "input": false, "output": true},
|
|
364
|
-
{"name": "Subtotal", "type": "Parameter", "value": "SubTotal", "input": false, "output": true}
|
|
365
|
-
]
|
|
366
|
-
}
|
|
367
|
-
}
|
|
368
|
-
]
|
|
369
|
-
}]
|
|
370
|
-
}
|
|
371
|
-
```
|
|
372
|
-
|
|
373
|
-
Expect 201 with `id` (`9QLDX…`), `versions[0].id` (`9QMDX…`),
|
|
374
|
-
`versions[0].steps` echoing both steps, `versions[0].variables`
|
|
375
|
-
echoing the single Constant, `contextDefinitions[0]` echoing the
|
|
376
|
-
bound CD. The server auto-remaps the `LookUpId` literal value to
|
|
377
|
-
whatever `Id` the target `Price_Book_Entry_Decision_Table_v2`
|
|
378
|
-
decision table holds on THIS org — the literal `0lDDX00000000WW2AY`
|
|
379
|
-
posted in the body is the source-org id from the reference
|
|
380
|
-
procedure; the server's response body carries the org-local id.
|
|
381
|
-
Both are `0lDDX…` prefix. Do NOT try to preserve the source id.
|
|
382
|
-
|
|
383
|
-
8d. **Verify.** `GET /services/data/v67.0/connect/business-rules/expression-set/{id}`
|
|
384
|
-
(using the id from 8c's 201 response). Confirm:
|
|
385
|
-
- `apiName=Comms_Product_Discovery_Pricing_Procedure`
|
|
386
|
-
- `usageType=DefaultPricing`, `usageSubtype=RevenueCloud`,
|
|
387
|
-
`interfaceSourceType=PricingProcedure`
|
|
388
|
-
- `contextDefinitions[0].name=customcommsproductdiscovery`
|
|
389
|
-
- `versions` length 1, `versions[0].versionNumber=1`,
|
|
390
|
-
`versions[0].enabled=true` (active on create)
|
|
391
|
-
- `versions[0].steps` length 2 with a `PricingSetting`
|
|
392
|
-
(`sequenceNumber=1`, `actionType=PricingSettings`) and a
|
|
393
|
-
`ListPrice` (`sequenceNumber=2`, `actionType=ListPrice`)
|
|
394
|
-
- `versions[0].variables` length 1 with
|
|
395
|
-
`name=Constant_UnitPrice_Price_Book_Entry_Decision_Table_v2_LP`,
|
|
396
|
-
`type=Constant`, `dataType=Text`, `value=UnitPrice`
|
|
397
|
-
|
|
398
|
-
## Critical Constraints
|
|
399
|
-
|
|
400
|
-
- **Idempotency at Step 3.** Do NOT rely on caller-side "have I run this
|
|
401
|
-
before?" flags. The three permission-set writes MUST be preceded by the
|
|
402
|
-
Step 3 SOQL every run; assigning an already-assigned permission set errors
|
|
403
|
-
with `DUPLICATE_VALUE`.
|
|
404
|
-
|
|
405
|
-
- **Steps 1–5 and Steps 6–7 are independent.** If Context Service isn't
|
|
406
|
-
enabled or the base CD is missing, Step 6 fails while Steps 1–5 succeed.
|
|
407
|
-
Report Step 6 as a **gap** and keep the Steps 1–5 result. Do NOT abort the
|
|
408
|
-
whole run on a Step 6 failure.
|
|
409
|
-
|
|
410
|
-
- **Do NOT try to POST a full active-extension CD in one Connect call.** A
|
|
411
|
-
single POST to `/connect/context-definitions` carrying `developerName`,
|
|
412
|
-
`isActive=true`, and the entire mapping bundle in one body returns
|
|
413
|
-
`DATA_MAPPING_NOT_FOUND`. The working shape is the Step 6 sequence:
|
|
414
|
-
extend inactive → resolve draft Ids → augment via the granular child
|
|
415
|
-
endpoints → PATCH `isDefault=true` on one mapping → PATCH `isActive=true`.
|
|
416
|
-
|
|
417
|
-
- **Do NOT try to POST the whole CD xmlRep to `/headless/metadata`.** The
|
|
418
|
-
extension CD xmlRep is large (~178 KB) and prone to request-size / gateway
|
|
419
|
-
errors on that transport. The Connect-API extend-then-augment loop is the
|
|
420
|
-
supported path.
|
|
421
|
-
|
|
422
|
-
- **Diff by name, never by Id.** Every `contextNodeId`, `contextMappingId`,
|
|
423
|
-
`contextNodeMappingId`, `contextAttributeId`, and `contextTagId` is
|
|
424
|
-
org-specific (`11o…`, `11j…`, `11b…`, `11n…`, `11T…`). Match records
|
|
425
|
-
across base and draft by `name` / `developerName` and walk `childNodes`
|
|
426
|
-
recursively; use Ids only to address the correct parent when POSTing a
|
|
427
|
-
delta.
|
|
428
|
-
|
|
429
|
-
- **Verify by developer name.** Step 7 filters
|
|
430
|
-
`GET /connect/context-definitions` by `developerName`. A generated record
|
|
431
|
-
Id (`11ODX…`, custom CDs only) is not stable across orgs; developer name
|
|
432
|
-
is.
|
|
433
|
-
|
|
434
|
-
- **`CommsProductDiscoveryContext__stdctx` must exist on the org before
|
|
435
|
-
Step 6.** It ships with Revenue Cloud Comms. If absent, the Step-6c
|
|
436
|
-
extend call fails — the `baseReference` FK is invalid.
|
|
437
|
-
|
|
438
|
-
- **All child POST endpoints take LIST-wrapper input reps.** POST
|
|
439
|
-
`{contextMappings: [...]}`, `{contextNodeMappings: [...]}`,
|
|
440
|
-
`{contextAttributes: [...]}`, and
|
|
441
|
-
`{contextAttributeMappings: [...], deleteExistingHydrationDetails: false}`
|
|
442
|
-
— never a bare object.
|
|
443
|
-
|
|
444
|
-
- **Attribute-mapping POST uses `contextAttributeId`, not
|
|
445
|
-
`contextAttributeName`.** Resolve the Id from the draft first via the
|
|
446
|
-
6d GET response.
|
|
447
|
-
|
|
448
|
-
- **`hydrationDetails` on the attribute-mapping POST is an OBJECT wrapper**
|
|
449
|
-
with two typed lists (`contextAttrContextHydrationDetails` and
|
|
450
|
-
`contextAttrHydrationDetails`), NOT the bare-array shape the output tree
|
|
451
|
-
returns as `contextAttrHydrationDetailList`. Posting a bare array returns
|
|
452
|
-
`Can not deserialize: unexpected array`.
|
|
453
|
-
|
|
454
|
-
- **Activation gate — a mapping must have `isDefault=true` first.** The
|
|
455
|
-
Connect extend copies base mappings but each comes back `isDefault=false`;
|
|
456
|
-
activating without promoting one first returns `DATA_MAPPING_NOT_FOUND:
|
|
457
|
-
Cannot activate a definition without default mapping`. Step 6f-i handles
|
|
458
|
-
this.
|
|
459
|
-
|
|
460
|
-
- **Hydration-detail portability.** Every
|
|
461
|
-
`hydrationDetails.contextAttrHydrationDetails[*].queryAttribute` value is
|
|
462
|
-
either an sObject field name paired with `sObjectDomain` (used by 6e-i's
|
|
463
|
-
three `Account.id` mappings — hydrated from `Account.Id`, which every org
|
|
464
|
-
has), OR the name of a tag on some other CD referenced by
|
|
465
|
-
`mappedContextDefinitionName`. This version only ships the first shape,
|
|
466
|
-
so no runtime portability failure is expected here. If a future extension
|
|
467
|
-
re-introduces cross-CD hydration and the target CD is absent, the POST
|
|
468
|
-
fails with either `UNKNOWN_EXCEPTION: Context Attr Context Details Write
|
|
469
|
-
error` or `REQUIRED_FIELD_MISSING: [ObjectName]`. Fallback: retry the
|
|
470
|
-
same POST without the `hydrationDetails` key — the attribute-mapping
|
|
471
|
-
lands with an empty `contextAttrHydrationDetailList` and its runtime
|
|
472
|
-
hydration silently no-ops. Do NOT try to satisfy the `[ObjectName]` error
|
|
473
|
-
by adding an `objectName` / `ObjectName` / `sObjectName` field at the
|
|
474
|
-
attribute-mapping item level — those are rejected as `Unrecognized field`
|
|
475
|
-
by the input rep.
|
|
476
|
-
|
|
477
|
-
- **Steps 6 and 8 are chained.** Step 8's POST body carries
|
|
478
|
-
`contextDefinitions[0].id = <customcommsproductdiscovery.contextDefinitionId>`
|
|
479
|
-
resolved from the Step 7 verify. If Step 6 gaps out, Step 8 CANNOT run —
|
|
480
|
-
the ESD's `contextDefinitions` binding is required at create time (the
|
|
481
|
-
server rejects a subsequent PATCH that adds it with `INTERNAL_ERROR`), so
|
|
482
|
-
a null CD means no valid POST body. Report Step 8 as blocked-by-Step-6 in
|
|
483
|
-
that case.
|
|
484
|
-
|
|
485
|
-
- **Step 8 uses `POST`-with-full-body, NOT `POST`-then-`PATCH`.** The BRE
|
|
486
|
-
Connect API's `postExpressionSetCreate` accepts `versions[].steps[]` and
|
|
487
|
-
`versions[].variables[]` inline. `patchExpressionSet` on the same shell
|
|
488
|
-
with version content returns `INTERNAL_ERROR`; do NOT split the write.
|
|
489
|
-
Similarly, `contextDefinitions` MUST be set on the POST — a subsequent
|
|
490
|
-
PATCH to add / change the CD binding on an existing shell also returns
|
|
491
|
-
`INTERNAL_ERROR`.
|
|
492
|
-
|
|
493
|
-
- **Step 8 activates on create in one POST.** The POST body carries
|
|
494
|
-
`versions[0].enabled=true`; `postExpressionSetCreate` accepts an active
|
|
495
|
-
version on create as long as the body carries at least one step, and
|
|
496
|
-
the 201 response echoes `versions[0].enabled=true`. Do NOT split into
|
|
497
|
-
POST-inactive-then-PATCH-active. Rank promotion (multi-version
|
|
498
|
-
selection) and effective-date windows are out of scope.
|
|
499
|
-
|
|
500
|
-
- **Step 8 skip-if-present is `developerName`-based.** The ESD's
|
|
501
|
-
`developerName` (`apiName` on the Connect API is the same identity) is
|
|
502
|
-
globally unique on the org; a duplicate POST returns 400. Guard with
|
|
503
|
-
the 8a SOQL first — the recipe treats any existing record as terminal
|
|
504
|
-
regardless of `enabled`.
|
|
505
|
-
|
|
506
|
-
- **`LookUpId` on `ListPrice` is an sObject Id and is not portable
|
|
507
|
-
cross-org.** The literal `0lDDX00000000WW2AY` in the reference body maps
|
|
508
|
-
to the source org's `Price_Book_Entry_Decision_Table_v2` decision table.
|
|
509
|
-
The server auto-remaps it on-write to the target org's decision-table Id
|
|
510
|
-
(both are `0lDDX…` prefix; the response body carries the org-local
|
|
511
|
-
value). If the decision table is missing on the target org, the POST
|
|
512
|
-
still returns 201 but the runtime `ListPrice` step fails on first
|
|
513
|
-
execution — verify the decision table exists as a precondition (see
|
|
514
|
-
below).
|
|
515
|
-
|
|
516
|
-
- **No Setup UI walks, no CLI shell-outs.** Every step routes through a
|
|
517
|
-
dispatched REST call — Steps 1–5 through sObject/REST, Steps 6–7 through
|
|
518
|
-
`/services/data/v67.0/connect/*`, Step 8 through
|
|
519
|
-
`/services/data/v67.0/connect/business-rules/expression-set`. If a
|
|
520
|
-
precondition is not satisfied, halt with a gap; do NOT attempt a
|
|
521
|
-
shell-out or multipart deploy.
|
|
522
|
-
|
|
523
|
-
## Preconditions
|
|
524
|
-
|
|
525
|
-
Before Step 1, confirm:
|
|
526
|
-
|
|
527
|
-
1. **Comms Cloud add-on licenses are provisioned.** Step 1's SOQL is the
|
|
528
|
-
canonical check.
|
|
529
|
-
2. **Revenue Cloud base/initial setup is complete.**
|
|
530
|
-
3. **Context Service is enabled and the base CD is present.**
|
|
531
|
-
`CommsProductDiscoveryContext__stdctx` ships with Revenue Cloud Comms;
|
|
532
|
-
Step 6 extends it.
|
|
533
|
-
4. **Business Rules Engine (BRE) is enabled and the
|
|
534
|
-
`Price_Book_Entry_Decision_Table_v2` decision table exists on the org.**
|
|
535
|
-
Step 8's `ListPrice` step references it by API name; the server
|
|
536
|
-
auto-resolves the target-org `0lDDX…` id at write time. If the decision
|
|
537
|
-
table is absent, the POST still succeeds structurally but the pricing
|
|
538
|
-
procedure will fail at first-invocation. Sanity check with
|
|
539
|
-
`GET /services/data/v67.0/connect/business-rules/decision-tables?apiName=Price_Book_Entry_Decision_Table_v2`
|
|
540
|
-
(or SOQL against the corresponding sObject).
|
|
541
|
-
|
|
542
|
-
If precondition 3 is missing, Steps 6–7 gap out; Steps 1–5 still complete.
|
|
543
|
-
If precondition 4 is missing, Step 8 structurally succeeds but is flagged
|
|
544
|
-
as a runtime gap; earlier steps are unaffected.
|
|
545
|
-
|
|
546
|
-
## Verification Checklist
|
|
547
|
-
|
|
548
|
-
- Step 3 SOQL returns 0–3 rows and the "already assigned" set is computed
|
|
549
|
-
correctly against Step 1's resolved Ids.
|
|
550
|
-
- Step 4 posts one `PermissionSetAssignment` per missing permission set and
|
|
551
|
-
each returns `201` with a generated Id (`0Pa…`).
|
|
552
|
-
- Step 5 SOQL returns one row per resolved permission-set Name.
|
|
553
|
-
- Step 6a resolves the `CommsProductDiscoveryContext__stdctx` base
|
|
554
|
-
`contextDefinitionId`. For stock CDs the returned id equals the developer
|
|
555
|
-
name; the `11ODX…` key-prefix shape only applies to custom / extension CDs.
|
|
556
|
-
- Step 6c `POST /connect/context-definitions` (extend) returns 201 with a
|
|
557
|
-
new `contextDefinitionId` for the draft; `developerName` echoes
|
|
558
|
-
`customcommsproductdiscovery`, `isActive=false`.
|
|
559
|
-
- Step 6e writes: 3 context-attribute-mappings on shared base-inherited
|
|
560
|
-
mappings' `Account` node-mappings (`id` on `ProductDiscoveryMapping`,
|
|
561
|
-
`QuoteProductDiscoveryMapping`, and `OrderProductDiscoveryMapping` — each
|
|
562
|
-
hydrated from `Account.Id`). Every response body is 200/201 with the
|
|
563
|
-
created child Id, or a duplicate-name 400 treated as a no-op.
|
|
564
|
-
- Step 6f-i default-mapping PATCH: 200 and response body shows the chosen
|
|
565
|
-
mapping with `isDefault=true`.
|
|
566
|
-
- Step 6f-ii activate: PATCH returns 200 and the response body shows
|
|
567
|
-
`isActive=true`.
|
|
568
|
-
- Step 7 `GET /connect/context-definitions?developerName=customcommsproductdiscovery`
|
|
569
|
-
returns 1 row with `isActive=true`, label = `customcommsproductdiscovery`,
|
|
570
|
-
and `baseReference=CommsProductDiscoveryContext__stdctx`.
|
|
571
|
-
- Step 8a skip-if-present SOQL returns 0 rows (fresh org) or 1 row
|
|
572
|
-
matching `DeveloperName=Comms_Product_Discovery_Pricing_Procedure`
|
|
573
|
-
(idempotent re-run).
|
|
574
|
-
- Step 8c POST returns 201 with `id` (`9QLDX…`), `versions[0].id` (`9QMDX…`),
|
|
575
|
-
server-set `usageSubtype=RevenueCloud`, `contextDefinitions` echoing the
|
|
576
|
-
bound `customcommsproductdiscovery`. Response `versions[0].steps` length
|
|
577
|
-
is 2; `versions[0].variables` length is 1.
|
|
578
|
-
- Step 8d verify GET returns the shape asserted in 8d: 2 steps with correct
|
|
579
|
-
`sequenceNumber` + `actionType`, 1 Constant variable, and each step's
|
|
580
|
-
`customElement.parameters` list length matches the POST body (9 for
|
|
581
|
-
`PricingSetting`, 18 for `ListPrice`).
|
|
582
|
-
|
|
583
|
-
## Operations Reference
|
|
584
|
-
|
|
585
|
-
| Step | Verb + Path | Op / body | Kind |
|
|
586
|
-
|------|-------------------------------------------------------------------|----------------------------------------------------------------------------------|---------|
|
|
587
|
-
| 1 | `GET /services/data/v67.0/query` | `q = SELECT Id, Name FROM PermissionSet WHERE Name IN (…3 names…)` | read |
|
|
588
|
-
| 2 | `GET /services/data/v67.0/` (or `SELECT Id FROM User …`) | resolve running user | read |
|
|
589
|
-
| 3 | `GET /services/data/v67.0/query` | `q = SELECT PermissionSetId, PermissionSet.Name FROM PermissionSetAssignment …` | read |
|
|
590
|
-
| 4 | `POST /services/data/v67.0/sobjects/PermissionSetAssignment` | `{AssigneeId, PermissionSetId}` per missing set | write |
|
|
591
|
-
| 5 | `GET /services/data/v67.0/query` | re-run Step 3 SOQL | verify |
|
|
592
|
-
| 6a | `GET /services/data/v67.0/connect/context-definitions` | resolve `CommsProductDiscoveryContext__stdctx` id | read |
|
|
593
|
-
| 6b | `GET /services/data/v67.0/connect/context-definitions` | skip-if-present gate on `customcommsproductdiscovery` | read |
|
|
594
|
-
| 6c | `POST /services/data/v67.0/connect/context-definitions` | extend body: `{developerName, name, baseReference}` (no `isActive`) | write |
|
|
595
|
-
| 6d | `GET /services/data/v67.0/connect/context-definitions/{draftId}` | resolve org-specific Ids on draft (shared-mapping Account node-mapping Ids; base `Account.id` attr Id) | read |
|
|
596
|
-
| 6e-i | `POST /services/data/v67.0/connect/context-node-mappings/{sharedMapping.Account.nodeMappingId}/context-attribute-mappings` × 3 | shared-mapping attrs: `id` on Product / Quote / Order Discovery (each hydrated from `Account.Id`) | write |
|
|
597
|
-
| 6f-i | `PATCH /services/data/v67.0/connect/context-definitions/{draftId}/context-mappings` | `{contextMappings: [{contextMappingId, isDefault: true}]}` — required before activation | write |
|
|
598
|
-
| 6f-ii| `PATCH /services/data/v67.0/connect/context-definitions/{draftId}`| `{isActive: true}` | write |
|
|
599
|
-
| 7 | `GET /services/data/v67.0/connect/context-definitions?developerName=customcommsproductdiscovery` | verify active | verify |
|
|
600
|
-
| 8a | `GET /services/data/v67.0/query?q=SELECT+Id,DeveloperName,MasterLabel+FROM+ExpressionSetDefinition+WHERE+DeveloperName='Comms_Product_Discovery_Pricing_Procedure'` | skip-if-present gate (Connect collection is `POST`-only — a `GET` returns 405, so this gate is SOQL) | read |
|
|
601
|
-
| 8b | (in-memory) | resolve `customcommsproductdiscovery.contextDefinitionId` from Step 7 | derive |
|
|
602
|
-
| 8c | `POST /services/data/v67.0/connect/business-rules/expression-set` | full V1 body: shell + `contextDefinitions[]` + inline `versions[]` (steps, variables, customElement.parameters) | write |
|
|
603
|
-
| 8d | `GET /services/data/v67.0/connect/business-rules/expression-set/{id}` | verify shape (2 steps, 1 Constant, correct sequenceNumbers, bound CD) | verify |
|
|
604
|
-
|
|
605
|
-
<!-- skill-validate: ignore-start -->
|
|
606
|
-
<!-- codey:operations start -->
|
|
607
|
-
## Operations Reference
|
|
608
|
-
|
|
609
|
-
Operations this skill uses — routing and dependency reference.
|
|
610
|
-
|
|
611
|
-
| Operation | Purpose | Status | Call | Depends on |
|
|
612
|
-
|-----------|---------|--------|------|------------|
|
|
613
|
-
| `resolve-permission-set-ids` | read | — | `GET /services/data/v67.0/query` | — |
|
|
614
|
-
| `resolve-target-user` | read | — | `GET /services/data/v67.0/` | — |
|
|
615
|
-
| `check-existing-assignments` | read | — | `GET /services/data/v67.0/query` | `resolve-permission-set-ids`, `resolve-target-user` |
|
|
616
|
-
| `assign-permission-set` | write | — | `POST /services/data/v67.0/sobjects/PermissionSetAssignment` | `check-existing-assignments` |
|
|
617
|
-
| `verify-assignments` | verify | — | `GET /services/data/v67.0/query` | `assign-permission-set` |
|
|
618
|
-
| `confirm-base-cd-active` | read | — | `GET /services/data/v67.0/connect/context-definitions` | — |
|
|
619
|
-
| `skip-if-present-cd` | read | — | `GET /services/data/v67.0/connect/context-definitions` | `confirm-base-cd-active` |
|
|
620
|
-
| `extend-context-definition` | write | — | `POST /services/data/v67.0/connect/context-definitions` | `skip-if-present-cd` |
|
|
621
|
-
| `fetch-draft-node-mappings` | read | — | `GET /services/data/v67.0/connect/context-definitions/{contextDefinitionId}` | `extend-context-definition` |
|
|
622
|
-
| `augment-shared-attribute-mappings` | write | — | `POST /services/data/v67.0/connect/context-node-mappings/{parentNodeMappingId}/context-attribute-mappings` | `fetch-draft-node-mappings` |
|
|
623
|
-
| `promote-default-mapping` | write | — | `PATCH /services/data/v67.0/connect/context-mappings/{contextMappingId}` | `augment-shared-attribute-mappings` |
|
|
624
|
-
| `activate-context-definition` | write | — | `PATCH /services/data/v67.0/connect/context-definitions/{contextDefinitionId}` | `promote-default-mapping` |
|
|
625
|
-
| `verify-context-definition-active` | verify | — | `GET /services/data/v67.0/connect/context-definitions` | `activate-context-definition` |
|
|
626
|
-
| `skip-if-present-esd` | read | — | `GET /services/data/v67.0/query` | `verify-context-definition-active` |
|
|
627
|
-
| `author-pricing-procedure` | write | — | `POST /services/data/v67.0/connect/business-rules/expression-set` | `skip-if-present-esd` |
|
|
628
|
-
| `verify-pricing-procedure` | verify | — | `GET /services/data/v67.0/connect/business-rules/expression-set/{expressionSetId}` | `author-pricing-procedure` |
|
|
629
|
-
<!-- codey:operations end -->
|
|
630
|
-
<!-- skill-validate: ignore-end -->
|