@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,497 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: flow-element-wait
|
|
3
|
-
license: LICENSE.txt has complete terms
|
|
4
|
-
description: "Use this skill when the user asks about the Wait or Pause element in a flow, including resume conditions (time-based, date-based, duration-based, platform event, or wait-until-event), scheduled pause behavior, or any question about pausing a flow and resuming it later. TRIGGER when: user asks to pause a flow, wait for a time or event, or configure a Wait element. DO NOT TRIGGER when the user needs a scheduled trigger on the Start element (use flow-element-start)."
|
|
5
|
-
metadata:
|
|
6
|
-
version: "1.0"
|
|
7
|
-
related-skills: flow-conditions
|
|
8
|
-
---
|
|
9
|
-
|
|
10
|
-
# Wait / Pause Element
|
|
11
|
-
|
|
12
|
-
## Overview
|
|
13
|
-
|
|
14
|
-
The Wait element pauses a flow interview and resumes it later when one or more resume conditions are met. It is only available in flows that support asynchronous execution (primarily autolaunched flows and record-triggered flows). The element stores outputs from whichever condition fires and routes execution down the corresponding path.
|
|
15
|
-
|
|
16
|
-
## When to Use
|
|
17
|
-
|
|
18
|
-
Use a Wait element when the flow needs to:
|
|
19
|
-
- Pause until a specific date/time in the future
|
|
20
|
-
- Pause for a fixed number of minutes, hours, days, weeks, or months
|
|
21
|
-
- Pause until a platform event is received
|
|
22
|
-
- Pause until a customer interaction event occurs (email open/click, SMS response, WhatsApp response, etc.)
|
|
23
|
-
- Implement a multi-step timed sequence inside an autolaunched or record-triggered flow
|
|
24
|
-
|
|
25
|
-
Wait elements are NOT available in screen flows or other synchronous flow types. To check programmatically, call `dispatch_readonly(method: "GET", url: "/services/data/vXX.0/flowbuilder/schema/flow-capabilities", queryParams: { processType, triggerType })` and confirm `Wait` appears in `.elements` — that list is filtered by the full `(processType, triggerType)` pair, so it is the authoritative availability signal. Do **not** rely on `GET /services/data/vXX.0/flowbuilder/schema/trigger-types` detail-mode `.isPauseSupported`: that field is computed from `triggerType` alone (a different signal from the `(processType, triggerType)` pause check).
|
|
26
|
-
|
|
27
|
-
## Do NOT emit the base (classic) `Wait` — use a subtype
|
|
28
|
-
|
|
29
|
-
The general palette-authorable rule is `shared/anti-patterns.md` item 29 (never
|
|
30
|
-
emit an element with no `configComponent`). Below is how it applies to the Wait
|
|
31
|
-
family.
|
|
32
|
-
|
|
33
|
-
**Do not generate a Wait element without an `elementSubtype` by default** (see the
|
|
34
|
-
narrow exception below for explicitly-requested classic Waits). The base `Wait`
|
|
35
|
-
type (the multi-branch "classic" Wait with `defaultConnector` + `faultConnector`
|
|
36
|
-
+ `eventType`-based `waitEvents` such as `AlarmEvent`/`DateRefAlarmEvent`/platform
|
|
37
|
-
events) is **metadata-valid but not authorable in the canvas palette**. It passes
|
|
38
|
-
API save-time validation, so a raw metadata save succeeds, but Flow Builder never
|
|
39
|
-
offers a palette tile for it — the saved element renders as an orphaned/odd node
|
|
40
|
-
the user cannot recreate or cleanly edit in the UI.
|
|
41
|
-
|
|
42
|
-
How to tell the difference from `GET /services/data/vXX.0/flowbuilder/schema/flow-capabilities` (read `.elements`): the base `Wait` entry
|
|
43
|
-
has `"isElementSubtype": false`, `"attributes": null`, and **no `configComponent`,
|
|
44
|
-
`icon`, or `label`**. Only entries that carry a `configComponent` (an editor
|
|
45
|
-
component) are palette-authorable. For the Wait family those are the three
|
|
46
|
-
subtypes below.
|
|
47
|
-
|
|
48
|
-
**Default to one of the three canvas-authorable subtypes** (`WaitDuration`,
|
|
49
|
-
`WaitDate`, `WaitUntilEvent`). There is no fourth, canvas-authorable classic Wait
|
|
50
|
-
variant — do not present "classic Wait" as a distinct option to the user, and do
|
|
51
|
-
not proactively construct it via metadata even though the org will accept it.
|
|
52
|
-
|
|
53
|
-
**Narrow exception — an explicitly requested classic Wait.** The prohibition is a
|
|
54
|
-
default, not an absolute. Author a classic Wait (no `elementSubtype`) ONLY when the
|
|
55
|
-
user explicitly asks for behavior that no canvas subtype can express — namely
|
|
56
|
-
multi-branch **"by Criteria"** resumption (variant 01) or a **date relative to a
|
|
57
|
-
record field** (`DateRefAlarmEvent`, variant 04). In that case, build it per the
|
|
58
|
-
worked, activatable examples in the "Classic Wait Events REQUIRE `inputParameters`"
|
|
59
|
-
section below (every time-based branch needs its full five `inputParameters`), and
|
|
60
|
-
tell the user it will render as a non-palette node in the canvas. Do NOT reach for
|
|
61
|
-
a classic Wait for any request a subtype already covers (a fixed delay → duration,
|
|
62
|
-
an absolute date → date, an engagement event → until-event).
|
|
63
|
-
|
|
64
|
-
## Wait Subtypes
|
|
65
|
-
|
|
66
|
-
The element uses an `elementSubtype` field to distinguish between the simplified and classic variants:
|
|
67
|
-
|
|
68
|
-
| Subtype | UI Name | Notes |
|
|
69
|
-
|---|---|---|
|
|
70
|
-
| (none) | Classic Wait | **DO NOT AUTHOR by default** (see "Do NOT emit" section above for the rule + narrow exception). Multiple resume conditions (branches), supports platform events and time events; includes a default path and a fault path |
|
|
71
|
-
| `WaitDuration` | Duration | Single branch; offset 1-365 in minutes, hours, days, weeks, or months; no fault connector |
|
|
72
|
-
| `WaitDate` | Specific Date | Single branch; absolute date + time; no fault connector |
|
|
73
|
-
| `WaitAttribute` | Attribute (internal) | **DO NOT AUTHOR** — internal/platform-only, no palette tile (like classic Wait). Documented for reading existing flows. Pauses until `$Record.LastModifiedDate`; simplified; no fault connector |
|
|
74
|
-
| `WaitUntilEvent` | Wait Until Event | Exactly two branches: one "Event Received" path and one "Timeout" path; no fault connector |
|
|
75
|
-
|
|
76
|
-
**`elementSubtype` takes exactly these values: `WaitDuration`, `WaitDate`, `WaitAttribute`, `WaitUntilEvent`.** Never write an upper-case form such as `WAIT_DURATION`, `WAIT_DATE` or `WAIT_UNTIL_EVENT`: the org rejects the flow with `Error parsing file: 'WAIT_DURATION' is not a valid value for the enum 'ElementSubtypeEnumProxy'`.
|
|
77
|
-
|
|
78
|
-
Simplified subtypes (`WaitDuration`, `WaitDate`, `WaitAttribute`, `WaitUntilEvent`) do NOT have a fault connector or a *configurable* default connector in the UI.
|
|
79
|
-
|
|
80
|
-
**But `defaultConnectorLabel` is still REQUIRED on the metadata for simplified subtypes.** Even though the UI exposes no default-connector option for them, the server rejects the save with `Required field is missing: defaultConnectorLabel` if the field is absent. Always emit `"defaultConnectorLabel": "Default"` on every `WaitDuration` / `WaitDate` / `WaitUntilEvent` element. This is a metadata-only requirement; you still do not emit a `defaultConnector` for these subtypes.
|
|
81
|
-
|
|
82
|
-
## Required Properties
|
|
83
|
-
|
|
84
|
-
| Property | Description | Constraints |
|
|
85
|
-
|---|---|---|
|
|
86
|
-
| Label | Display name for the Wait element | Required; any text |
|
|
87
|
-
| API Name | Developer name used in formulas and Apex | Required; alphanumeric + underscores; must be unique in the flow |
|
|
88
|
-
| Resume condition (at least one) | At least one wait event must be defined | Required unless using a simplified subtype that auto-creates its events |
|
|
89
|
-
|
|
90
|
-
## Optional Properties
|
|
91
|
-
|
|
92
|
-
| Property | Description | Default |
|
|
93
|
-
|---|---|---|
|
|
94
|
-
| Description | Internal notes about the element | Empty |
|
|
95
|
-
| Default Path label | Label for the default connector (classic Wait only) | "All Other Conditions" |
|
|
96
|
-
| Time Zone | Time zone for absolute-time resume conditions (inherited from the Start element's time zone) | Inherited from Start element |
|
|
97
|
-
| Max Batch Size (org perm required) | Maximum number of interviews to resume in a single batch | None (org default applies) |
|
|
98
|
-
|
|
99
|
-
## Resume Condition Types
|
|
100
|
-
|
|
101
|
-
### Absolute Time (`AlarmEvent`) — the default for "resume at a datetime"
|
|
102
|
-
|
|
103
|
-
Resumes at a specific date and time, optionally offset from a base time. **This is the correct event type whenever you already have a datetime value** — a flow variable, a formula, a literal, or a single `$Record` **DateTime** field (e.g. `$Record.SLA_Deadline__c`). The bound field/resource must be `DateTime`, not `Date`: `AlarmTime` requires a datetime, so a Date-only field like `Opportunity.CloseDate` is rejected. To resume relative to a Date-only field, use the `WaitDate` pattern instead (see below).
|
|
104
|
-
|
|
105
|
-
- The base datetime is bound through a **single `AlarmTime` inputParameter** whose value is an `elementReference` (or a datetime literal) — NOT a set of separate SObject / RecordId / Date-field fields. Do not split it into `TimeField` + `SObject` + `RecordId`; that is the `DateRefAlarmEvent` shape and the server rejects it on an `AlarmEvent` wait event.
|
|
106
|
-
- **Offset Number**: Integer; how many units before or after the base time. Offset unit must be `Hours` or `Days` only (not weeks or months).
|
|
107
|
-
- **Offset Unit**: `Hours` or `Days`. Blank means "exactly at the base time".
|
|
108
|
-
- If no offset is specified the flow resumes exactly at the base datetime value.
|
|
109
|
-
|
|
110
|
-
Worked example: `examples/alarmEvent-absolute-time.json` — a single `AlarmEvent` wait event binding the base datetime through one `AlarmTime` inputParameter (elementReference to a DateTime field, `$Record.SLA_Deadline__c`), no split TimeField/SObject/RecordId.
|
|
111
|
-
|
|
112
|
-
### Direct Record Time (`DateRefAlarmEvent`) — only when you must resolve a field on a *different* record
|
|
113
|
-
|
|
114
|
-
Resumes relative to a datetime field on a specific record identified by ID. Use this ONLY when the datetime lives on a record you must look up by ID (not the triggering `$Record`, and not a value you already hold). For a datetime you already have or that sits on `$Record`, use `AlarmEvent` above instead. This is variant 04 ("Wait Until Date–Record"). It is a **classic** Wait event (no `elementSubtype`), so it carries five required `inputParameters` — see the copy-pasteable worked example in the Metadata Shape section below.
|
|
115
|
-
|
|
116
|
-
- **SObject** (Salesforce Object): Required — `inputParameters` name `TimeTableColumnEnumOrId` (stringValue).
|
|
117
|
-
- **Date/Time Field**: Required — `TimeFieldColumnEnumOrId` (stringValue).
|
|
118
|
-
- **Record ID**: Required — `EntityObjectId` (elementReference to the record Id).
|
|
119
|
-
- **Offset**: `TimeOffset` (numberValue) + `TimeOffsetUnit` (stringValue, Hours or Days).
|
|
120
|
-
|
|
121
|
-
Omitting `TimeTableColumnEnumOrId` (Object Type) is what makes a classic Wait
|
|
122
|
-
draft-save but refuse to activate (`WARNING_BLOCK_ACTIVATION`). Always emit all five.
|
|
123
|
-
|
|
124
|
-
### Platform Event
|
|
125
|
-
|
|
126
|
-
Resumes when a specific platform event is received.
|
|
127
|
-
|
|
128
|
-
- **Event Type**: Required. The API name of the platform event object.
|
|
129
|
-
- **Filter conditions**: Optional conditions on event fields to narrow which event instances trigger resumption.
|
|
130
|
-
- **Output parameters**: Optional. Captures field values from the received event.
|
|
131
|
-
|
|
132
|
-
### Duration (`WaitDuration` subtype)
|
|
133
|
-
|
|
134
|
-
A simplified single-branch wait for a fixed duration.
|
|
135
|
-
|
|
136
|
-
- **Offset**: Integer between 1 and 365 (inclusive). Required. **Zero is rejected** — a `WaitDuration` event with `offset: 0` saves but blocks activation with `WAITEVENT_INVALID_VALUE`: *"The offset field can't be '0'. Enter a number between 1 and 365."* There is no zero-duration `WaitDuration`.
|
|
137
|
-
- **Offset Unit**: `Days`, `Hours`, `Weeks`, `Minutes`, or `Months`. Required. (`Minutes` is valid — e.g. "wait 5 minutes" → `offset: 5, offsetUnit: "Minutes"`. The `FlowScheduledPathOffsetUnit` enum in `metadata/metadata.wsdl` is the source of truth: `Hours`, `Days`, `Minutes`, `Months`, `Weeks`.)
|
|
138
|
-
- No time zone, no conditions, no fault path.
|
|
139
|
-
- **The outgoing connector goes on the single `waitEvents` entry** (`waitEvents[0].connector`).
|
|
140
|
-
The Wait itself has no `connector` field. In a `.flow-meta.xml`, a `<connector>` directly under
|
|
141
|
-
`<waits>` fails the deploy with `Error parsing file: Element
|
|
142
|
-
{http://soap.sforce.com/2006/04/metadata}connector invalid at this location in type FlowWait`.
|
|
143
|
-
|
|
144
|
-
#### Resume-at-time-of-day option (`resumeTime` on a `WaitDuration` event)
|
|
145
|
-
|
|
146
|
-
Set `resumeTime` (an `xsd:time`, e.g. `"12:00:00.000"`) on the wait event to gate resumption to a time of day. Semantics: wait at least `offset` `offsetUnit`, then resume at the next `resumeTime` — "resume at noon" → `offset: 1, offsetUnit: "Days", resumeTime: "12:00:00.000"`, **not** a same-instant next-noon.
|
|
147
|
-
|
|
148
|
-
- The `offset ≥ 1` rule above **still applies** — you cannot express "the very next noon" with `offset: 0`. The minimum wait is 1 unit; pick the `offsetUnit` that fits the intent (`Days` for a daily noon).
|
|
149
|
-
- `resumeTime` uses the flow's time zone (`metadata.timeZoneSidKey`, inherited via the Wait's `timeZoneId`). Emit `timeZoneSidKey` by **trigger type**, not `processType`:
|
|
150
|
-
- **Plain `AutoLaunchedFlow` (no trigger): `timeZoneSidKey` is NOT settable** — the server rejects it with `PROCESSTYPE_ELEMENT_CONFIG_NOT_SUPPORTED`: *"Because this flow has a processType of AutoLaunchedFlow, elements and resources in this flow can't reference the TimeZoneSidKey field."* The time zone is implicit (org/running-user default); omit `metadata.timeZoneSidKey` entirely.
|
|
151
|
-
- **Segment-triggered flow (`processType: AutoLaunchedFlow` with `triggerType: Segment` — see `../start/segment-triggered.md`): `timeZoneSidKey` is REQUIRED.** Omitting it blocks activation with `INVALID_TIME_ZONE`: *"You must specify a value for the timeZoneSidKey parameter with the Segment flow trigger type."* When the user hasn't named a timezone, do NOT ask — set it to the **org default** (e.g. `America/Los_Angeles` on SDB105; confirm by reading an existing active flow in the org).
|
|
152
|
-
- A record-triggered flow *can* also carry it.
|
|
153
|
-
- Net: the same `resumeTime: "12:00:00.000"` ("noon") payload is correct in all cases; only whether you emit `timeZoneSidKey` alongside it changes with trigger type.
|
|
154
|
-
- `resumeDate` is NOT set on a `WaitDuration` event — an absolute calendar date is the `WaitDate` subtype instead.
|
|
155
|
-
|
|
156
|
-
### Specific Date (`WaitDate` subtype)
|
|
157
|
-
|
|
158
|
-
A simplified single-branch wait until a date. The resume date is supplied one of **two mutually exclusive ways** — an explicit literal date, or a reference to a date field ("Get from Attribute"):
|
|
159
|
-
|
|
160
|
-
- **Explicit date** — set `resumeDate` (ISO date only, e.g. `"2027-05-28"`) **and** `resumeTime` (an `xsd:time` **string**, e.g. `"00:00:00.000"`). Both are required in this mode.
|
|
161
|
-
- **Date attribute reference** (FEROV) — set `resumeDateReference` to any FEROV that resolves to a **Date** field. When set, `resumeDateReference` **supersedes** `resumeDate`/`resumeTime`, and **`resumeTime` is optional — omit it** (the "Date value required" validator is satisfied by the reference alone). This is the "Get from Attribute" option in the Wait Until Date editor.
|
|
162
|
-
- The reference is **not restricted to a direct `$Record.<field>`.** Any FEROV that lands on a Date field is accepted, including a **traversed lookup** — e.g. in an audience/List-triggered flow the member's source-record fields are reached through `$Input.ReferenceRecord.<field>`, so `resumeDateReference: "$Input.ReferenceRecord.Birthdate"` is valid (LookupTraversal must be an available `flowFeature`). Confirm the referenced field is `dataType: "Date"` via `list_fields_for_entity` — a non-Date field trips the "Invalid date field" activation error.
|
|
163
|
-
- **Offset** (optional) — `offset` (integer) + `offsetUnit` shift the resume relative to the resolved date. **For the `WaitDate` subtype the offset unit is NOT limited to Hours/Days** — `Days` and `Weeks` are both confirmed accepted on save (e.g. "32 weeks after the contact's birthdate" → `resumeDateReference: "$Input.ReferenceRecord.Birthdate"`, `offset: 32`, `offsetUnit: "Weeks"`, no `resumeTime`). Do **not** convert weeks to days to satisfy an Hours/Days rule — that restriction (validators.md "Offset unit must be Hours or Days") applies to the **classic** `AlarmEvent`/`DateRefAlarmEvent` event offsets, not to this simplified subtype.
|
|
164
|
-
|
|
165
|
-
**On SAVE, `resumeTime` must be a JSON time string and `resumeDate` a `"YYYY-MM-DD"` date string — NOT the server's read-back forms.** When you *retrieve* an existing flow, the server hands these back in read-back shape: `resumeTime` as a `{ "timeInMillis": N }` object (e.g. `{ "timeInMillis": 43200000 }`) and `resumeDate` as a bare **epoch-millis integer** (e.g. `1811462400000`) — the *same* shape as the Start element's `schedule.startDate`/`schedule.endDate`, since `resumeDate` and the schedule dates are the identical `xsd:date` type. That is the **read-back form only**. Echoing `resumeTime`'s object straight back on save is rejected (observed: `No suitable constructor found for type [...] com.sforce.ws.types.Time: can not instantiate from JSON object`); echoing `resumeDate`'s integer is likewise rejected. Convert first: `{timeInMillis:43200000}` → `"12:00:00.000"`, `{timeInMillis:0}` → `"00:00:00.000"`, and the epoch-millis `resumeDate` → its **UTC** date-only string via `floor(epochMillis / 86400000)` (`1811462400000` → `"2027-05-28"`) — never local-time formatting, which can silently land a day early. This is the same failure class as the Start element's Scheduled-trigger `schedule.startTime`/`schedule.endTime`/`schedule.startDate`/`schedule.endDate` (`../start/start.md`) — see the canonical writeup, full field list, and date-math in `shared/anti-patterns.md` item 39.
|
|
166
|
-
|
|
167
|
-
### Wait Until Event (`WaitUntilEvent` subtype)
|
|
168
|
-
|
|
169
|
-
Pauses until a customer engagement event occurs, with a required timeout path.
|
|
170
|
-
|
|
171
|
-
> **Always use this subtype for engagement/automation events — never a classic Wait.** To wait on an email event (open/link-click/bounce), an SMS event (response/link-click/delivery-failure), or a Journey Builder contact event (entered/exited/met-goal), the element MUST have `elementSubtype: "WaitUntilEvent"`. Do NOT approximate it with a classic Wait whose timeout branch is an `AlarmEvent`/`DateRefAlarmEvent` — engagement events are not platform events, carry no `eventType`, and cannot be bound on a classic wait event, so such a flow never resumes on the engagement. If you find yourself reaching for `AlarmEvent` to satisfy an "event" request, stop and switch to `WaitUntilEvent`.
|
|
172
|
-
|
|
173
|
-
> **Adding this subtype to an *existing* flow is a breaking change — Stop-and-Ask first.** Hosting a WaitUntilEvent forces the start trigger to `IndivRelatedRecord`/`Segment` (see `../start/start.md`), so retrofitting one onto a trigger-less flow silently breaks its current Apex/API/subflow invokers. Confirm the trigger change with the user; never rewrite the start element on your own.
|
|
174
|
-
|
|
175
|
-
**Always has exactly two branches:**
|
|
176
|
-
1. **Event Received path** – fires when the engagement event occurs.
|
|
177
|
-
2. **Timeout path** – fires if the event does not occur within the specified window.
|
|
178
|
-
|
|
179
|
-
**Timeout path configuration:**
|
|
180
|
-
- **Offset**: Integer between 1 and 365. Required.
|
|
181
|
-
- **Offset Unit**: `Days`, `Hours`, or `Weeks`. Required.
|
|
182
|
-
|
|
183
|
-
**Event types supported on the Event Received path (requires `WaitForAutomationEvents` org permission):**
|
|
184
|
-
|
|
185
|
-
The event is bound via **two paired fields** on the WaitUntilEvent `waitEvent`: `automationEventType` (the event's type) and `automationEventName` (its qualified name). Two distinct layers govern which values are legal, and they do **not** agree — know which one applies:
|
|
186
|
-
|
|
187
|
-
1. **Save-validation layer (the type enum).** `automationEventType` must be a member of the `InvocableActionType` enum — the authoritative list is the `InvocableActionType` simpleType in `metadata/metadata.wsdl` / `designerApi.wsdl` (the `trgrOn*` members). A value not in that enum fails on save with `not one of the declared Enum instance names`. This enum is a **superset** and includes email-response, all three WhatsApp events, and RCS response:
|
|
188
|
-
|
|
189
|
-
| Event | `automationEventType` value |
|
|
190
|
-
|---|---|
|
|
191
|
-
| Email opened | `trgrOnEmailOpenEngagement` |
|
|
192
|
-
| Email link clicked | `trgrOnEmailLinkClickEngagement` |
|
|
193
|
-
| Email bounced | `trgrOnEmailBounceEngagement` |
|
|
194
|
-
| Email response (reply) | `trgrOnEmailResponseEngagement` |
|
|
195
|
-
| SMS link clicked | `trgrOnSmsLinkClickEngagement` |
|
|
196
|
-
| SMS delivery failure | `trgrOnSmsDeliveryFailureEngagement` |
|
|
197
|
-
| SMS response | `trgrOnSmsResponseEngagement` |
|
|
198
|
-
| WhatsApp link clicked | `trgrOnWhatsAppLinkClickEngmt` |
|
|
199
|
-
| WhatsApp delivery failure | `trgrOnWhatsAppDlvrFailureEngmt` |
|
|
200
|
-
| WhatsApp response | `trgrOnWhatsAppResponseEngmt` |
|
|
201
|
-
| RCS response | `trgrOnRcsResponseEngagement` |
|
|
202
|
-
|
|
203
|
-
2. **Runtime-availability layer (the org's provisioned Event Library).** An `automationEventType` that passes the enum check still resumes only if the **org has that event provisioned**. The Event Library actually offered by an org is a subset of the enum, discovered at runtime — do **not** assume the full enum is available. Query the org's actual subset with **`GET /services/data/vXX.0/flowbuilder/action/invocable-events`**. Call it with **`processType: "AutoLaunchedFlow"` and `triggerType: "Segment"`** (the Connect OAS param names — NOT `flowProcessType`/`flowTriggerType`). Read rows from `invocableActions[]`; each descriptor's `type` is the value for `automationEventType`. Do NOT copy the descriptor's bare `name` into `automationEventName` — build it from the type per the table below (`default__` + `automationEventType`, except SMS Response). The response also carries `pagination.totalSize` and `pagination.hasMore` when an explicit `limit` truncates the list. A 403 means the caller cannot view Flow or Journey Builder; an absent SMS event means the org or user lacks that event's provisioning or permission.
|
|
204
|
-
|
|
205
|
-
> **Discovery vs. start trigger — keep these distinct.** The tool's `triggerType` here selects only *which catalog the tool returns*; it is NOT the flow's own trigger. For **event discovery**, use `Segment` (or omit `triggerType`) to get the engagement-only list — not `IndivRelatedRecord`, which returns the same events plus ~130 unrelated SObject entities that are not valid Wait Until Event sources. Separately, the flow you author still needs `triggerType: IndivRelatedRecord` (or `Segment`) as its **start** trigger to host the WaitUntilEvent element — see `../start/start.md`. The provisioned set is org-dependent; the table below is one org's baseline, not the enum.
|
|
206
|
-
|
|
207
|
-
| UI label | `automationEventType` | `automationEventName` |
|
|
208
|
-
|---|---|---|
|
|
209
|
-
| Email Open | `trgrOnEmailOpenEngagement` | `default__trgrOnEmailOpenEngagement` |
|
|
210
|
-
| Email Link Click | `trgrOnEmailLinkClickEngagement` | `default__trgrOnEmailLinkClickEngagement` |
|
|
211
|
-
| Email Bounce | `trgrOnEmailBounceEngagement` | `default__trgrOnEmailBounceEngagement` |
|
|
212
|
-
| SMS Response | `trgrOnSmsResponseEngagement` | `trgrOnSmsResponseEngagement` |
|
|
213
|
-
| SMS Link Click | `trgrOnSmsLinkClickEngagement` | `default__trgrOnSmsLinkClickEngagement` |
|
|
214
|
-
| SMS Delivery Failure | `trgrOnSmsDeliveryFailureEngagement` | `default__trgrOnSmsDeliveryFailureEngagement` |
|
|
215
|
-
| Journey Builder Contact Entered | `enteredJourneyBuilder` | `default__enteredJourneyBuilder` |
|
|
216
|
-
| Journey Builder Contact Exited | `exitedJourneyBuilder` | `default__exitedJourneyBuilder` |
|
|
217
|
-
| Journey Builder Contact Met Goal | `metJourneyBuilderGoal` | `default__metJourneyBuilderGoal` |
|
|
218
|
-
|
|
219
|
-
- `automationEventName` is `default__` + `automationEventType`, **except SMS Response**, whose name equals its type with no `default__` prefix.
|
|
220
|
-
- The engagement id does NOT go in `eventType` (that field is for classic platform-event waits). Do not emit the old `…InvocableEvent` PascalCase constants — they are not valid enum values.
|
|
221
|
-
- **Do not promise SMS reply data.** Core 264 describes `trgrOnSmsResponseEngagement` with no output parameters, and its event-field resolver currently returns no fields. Emit `outputParameters: []`. Use the event only to resume a branch when a response arrives.
|
|
222
|
-
|
|
223
|
-
**Input parameters for Wait Until Event:**
|
|
224
|
-
- The Journey Builder events take an `mceJourneyInput` input parameter whose `stringValue` is the target MCE Journey's id.
|
|
225
|
-
- The **messaging engagement and response events** — every email, SMS, WhatsApp, and RCS event (open, link-click, bounce, delivery-failure, and response) — **require an `associatedContent` input parameter**. It is a required STRING input; a missing or empty value blocks activation with `Required parameter 'associatedContent' is missing or empty`. `automationEventType`/`automationEventName` alone are NOT sufficient for these events. (The three Journey Builder events do NOT require `associatedContent`.)
|
|
226
|
-
- **`associatedContent` must reference the upstream send/message action element in the same flow** — the actionCall that sent the email/SMS/WhatsApp/RCS you are waiting on (e.g. `Send_Marketing_Email`, `Send_SMS_Message`). Bind it by `elementReference` to that action element, NOT to a String variable holding a content/template id: `"inputParameters": [{ "name": "associatedContent", "value": { "elementReference": "Send_SMS_Message" } }]`. The wait monitors engagements *against that specific send*, so the reference must resolve to the send-action element — which is why the flow must FIRST contain the send step and the wait must come after it. (A raw content-id String may satisfy the not-empty activation gate, but it does not correctly bind the wait to the send being monitored and is wrong.)
|
|
227
|
-
- **This is the Wait Until Event shape only.** An event-triggered **exit rule** on the same event takes the email's ManagedContent Id (`20Y…`) as a `stringValue` instead; an element reference fails activation there (`../exit-rule/exit-rule.md` § Event-Triggered Variant).
|
|
228
|
-
- The **link-click events** (`trgrOnEmailLinkClickEngagement`, `trgrOnSmsLinkClickEngagement`, `trgrOnWhatsAppLinkClickEngmt`) require a **second** STRING input, **`specificLink`** — the link to monitor — *in addition to* `associatedContent`. Omitting it saves fine but blocks activation with `ACTIONCALL_MISSING_REQUIRED_PARAM` ("Enter a value for the specificLink input parameter"). Two ways to set it:
|
|
229
|
-
- **Any link** → the literal sentinel `{ "stringValue": "ANY" }`. This is the "Any Link" option (source: `messagingEventEditor.ts` `const ANY_LINK = { value: 'ANY' }`). Prefer it whenever the email's links are **dynamic or contain merge fields** — Salesforce docs state specific-link matching is unsupported for those.
|
|
230
|
-
- **A specific link** → the exact link URL/value as it appears in the content, `{ "stringValue": "<link>" }`.
|
|
231
|
-
- **Do not try to enumerate the links headlessly.** `GET /services/data/vXX.0/flowbuilder/action/invocable-action-parameter-enum-values` returns `{ "parameters": [] }` for `specificLink` outside the live builder (the picklist is resolved from the content's tracked links at runtime). Use `dispatch_readonly(method: "GET", url: "/services/data/vXX.0/flowbuilder/action/invocable-action-details", queryParams: { actionType, actionName })` to confirm the required params, then bind `"ANY"` (or a known URL) directly.
|
|
232
|
-
|
|
233
|
-
**Output parameters for Wait Until Event:**
|
|
234
|
-
- Call `dispatch_readonly(method: "GET", url: "/services/data/vXX.0/flowbuilder/action/invocable-action-details")` with the selected event descriptor's `type` as `actionType` and `name` as `actionName`, then read its outputs before emitting any mapping. For the SMS Response event in Core 264, emit `outputParameters: []`; no reply-text output is declared.
|
|
235
|
-
- If the user asks to capture SMS reply text, explain that this event can branch on receipt but the current Flow event contract does not expose the text. Do not invent an output name or variable mapping.
|
|
236
|
-
|
|
237
|
-
## Validation Rules and Constraints
|
|
238
|
-
|
|
239
|
-
- **A Wait element must define at least one wait event** — an empty Wait element (classic type with no resume conditions) is an activation error.
|
|
240
|
-
- **Each wait event must specify its event type** — a wait event with a blank or missing event type is an activation error.
|
|
241
|
-
- **Relative date/time wait events** must reference a valid Date or DateTime field on a valid SObject. The offset value must be between 1 and 365 (inclusive).
|
|
242
|
-
- **Resume date must not be in the past** at the time of evaluation — the server emits a warning (not a hard error) when a scheduled resume time has already passed.
|
|
243
|
-
- The wait element's API name must be unique among all element names and wait event names in the same flow.
|
|
244
|
-
- Wait event API names are also validated for uniqueness against each other and the parent wait element.
|
|
245
|
-
- `defaultConnectorLabel` must not be blank — required on **both** classic Wait and every simplified subtype (`WaitDuration`/`WaitDate`/`WaitUntilEvent`); a missing label fails the save with `Required field is missing: defaultConnectorLabel`.
|
|
246
|
-
- Duration subtype: offset must be a number between 1 and 365 (inclusive). Offset unit must not be blank.
|
|
247
|
-
- Date subtype: `resumeDate` must be a valid date; `resumeTime` must be provided.
|
|
248
|
-
- Wait Until Event timeout path: offset must be a number between 1 and 365. Offset unit must not be blank.
|
|
249
|
-
- **Connect BOTH Wait Until Event branches.** Each of the two wait events (the event branch and the timeout branch) needs its own `connector.targetReference`. A timeout branch with no connector is a silent dead end — the flow reaches the timeout and simply stops, which is almost never intended. Route the timeout branch to a real "no response / gave up" path.
|
|
250
|
-
- Wait Until Event on a messaging engagement/response event (email, SMS, WhatsApp, RCS): the `associatedContent` input parameter is **required** — see "Input parameters for Wait Until Event" above for the rule and activation error.
|
|
251
|
-
- Wait Until Event on a **link-click** event (email/SMS/WhatsApp link click): the `specificLink` input parameter is **also required** (in addition to `associatedContent`); missing it blocks activation with `ACTIONCALL_MISSING_REQUIRED_PARAM`. Use `{"stringValue":"ANY"}` for "any link". See "Input parameters for Wait Until Event".
|
|
252
|
-
- Absolute time: the base time input parameter is required. Offset unit, if provided, must be `Hours` or `Days` (weeks and months are not valid for this event type).
|
|
253
|
-
- Direct Record Time: SObject and date/time field are required. Record ID is required.
|
|
254
|
-
- Platform event: event type must be non-blank and must resolve to a valid platform event API name.
|
|
255
|
-
- Filter conditions: when condition logic is not "No Conditions", all three properties (field, operator, value) of each condition must be filled.
|
|
256
|
-
- **DO NOT author `maxBatchSize` on a Wait element or its wait events in an `AutoLaunchedFlow`.** The server rejects the save with `ERROR_BLOCK_SAVE`: *"AutoLaunchedFlow can't have maxBatchSize attributes on the Wait element."* Omit the field entirely. (It is only accepted when the org has the `FlowResumeCustomBatchSize` permission enabled.) When you *retrieve* a saved WaitUntilEvent flow the server may hand `maxBatchSize` back on the wait events as a read-back artifact (often `0`) — that is the read-back form only; **do not echo it back on save**, or the save fails. This mirrors the `resumeTime`/`resumeDate` object round-trip caveat above.
|
|
257
|
-
- Time zone is nulled out automatically for `WaitUntilEvent` subtypes — those use a different timing mechanism.
|
|
258
|
-
- The time zone is inherited from the Start element's `timeZoneSidKey` if not explicitly set on the Wait element.
|
|
259
|
-
- Offset values entered with locale-specific decimal separators (e.g., French "2,0") are normalized to integers automatically.
|
|
260
|
-
- **Zero-duration offset as a transaction boundary — NOT a `WaitDuration`.** This applies to the Start element's *scheduled path* `offsetNumber` (a `FlowScheduledPath` field), NOT to a Wait event's `offset`. A scheduled path with `offsetNumber = 0` acts as a transaction boundary in autolaunched flows, committing open DML and resetting governor limits between iterations (the autolaunched-flow equivalent of the CommitTransaction Local Action in screen flows). It carries a performance cost due to async re-entry — only use it when governor limits are actually being hit, not as a default pattern. Do NOT confuse this with a `WaitDuration` event: **a `WaitDuration` `offset` of `0` is rejected** and blocks activation (`WAITEVENT_INVALID_VALUE`) — see the Duration subtype section above (offset must be 1–365). There is no zero-duration `WaitDuration`.
|
|
261
|
-
|
|
262
|
-
## Common Patterns
|
|
263
|
-
|
|
264
|
-
**Timed delay in a record-triggered flow**: Use `WaitDuration` (e.g., 3 days) after an update to send a follow-up notification without building date math.
|
|
265
|
-
|
|
266
|
-
**Pause until a future date stored on a record**: Use `WaitDate` with `resumeDateReference` pointing to any Date-typed FEROV — a field on `$Record` (e.g., `$Record.CloseDate`) or a traversed lookup (e.g., `$Input.ReferenceRecord.Birthdate`). `resumeTime` is optional here (omit it unless explicitly required); add an optional `offset`/`offsetUnit` (`Minutes`, `Hours`, `Days`, `Weeks`, or `Months`) to resume a fixed span after that date — e.g., `offset: 4, offsetUnit: "Hours"` for "4 hours after". A negative offset indicates an offset in the past.
|
|
267
|
-
|
|
268
|
-
**Email engagement tracking**: Use `WaitUntilEvent` with an email click or open event type. Connect the Event Received path to the success branch and the Timeout path to a "no response" branch.
|
|
269
|
-
|
|
270
|
-
**Multiple resume conditions in classic Wait**: Each wait event becomes a separate output branch. Add conditions to narrow which event instance triggers each branch (e.g., wait for platform event where `Order__c = {!recordId}`).
|
|
271
|
-
|
|
272
|
-
**Chaining waits**: Connect the output of one Wait element to another Wait element to create a multi-step timed sequence.
|
|
273
|
-
|
|
274
|
-
## Aura/Server Functions
|
|
275
|
-
|
|
276
|
-
- `getIsPauseSupported` — checks whether the Pause/Wait element is available for the current flow process type and trigger type
|
|
277
|
-
- `getFlowEntries` — retrieves available flow type entries (used to determine if Wait is applicable for the current context)
|
|
278
|
-
|
|
279
|
-
---
|
|
280
|
-
|
|
281
|
-
## Metadata Shape
|
|
282
|
-
|
|
283
|
-
### Top-Level Wait Fields
|
|
284
|
-
|
|
285
|
-
| Key | Type | Required | Notes |
|
|
286
|
-
|---|---|---|---|
|
|
287
|
-
| `name` | string | yes | dev-name |
|
|
288
|
-
| `label` | string | yes | display label |
|
|
289
|
-
| `defaultConnectorLabel` | string | yes | label for the "no event matched" / timeout branch. **Required on ALL waits incl. simplified subtypes** — emit `"Default"` even on `WaitDuration`/`WaitDate`/`WaitUntilEvent` or the save is rejected (`Required field is missing: defaultConnectorLabel`). |
|
|
290
|
-
| `defaultConnector` | Connector | classic only | the no-event-matched outgoing path on classic Wait — do NOT emit for simplified subtypes. For `WaitUntilEvent` the timeout path is a `waitEvents` entry, not a default connector |
|
|
291
|
-
| `faultConnector` | Connector | classic only | waits can throw at runtime; classic Wait only — NOT present on any simplified subtype, including `WaitUntilEvent` |
|
|
292
|
-
| `waitEvents` | array | yes | one per resumption condition; for `WaitUntilEvent` there are exactly two (the event branch and the timeout branch) |
|
|
293
|
-
| `timeZoneId` | string | no | nullable; inherited from Start element if not set. Nulled out for `WaitUntilEvent` |
|
|
294
|
-
| `elementSubtype` | string | conditional | `WaitDuration`, `WaitDate`, `WaitAttribute`, or `WaitUntilEvent` |
|
|
295
|
-
|
|
296
|
-
Note: there is **no top-level `connector`** on Wait — every resumption path is via `waitEvents[i].connector`.
|
|
297
|
-
|
|
298
|
-
### waitEvents Structure
|
|
299
|
-
|
|
300
|
-
Each entry in `waitEvents[]`:
|
|
301
|
-
|
|
302
|
-
| Key | Type | Required | Notes |
|
|
303
|
-
|---|---|---|---|
|
|
304
|
-
| `name` | string | yes | unique within the wait element |
|
|
305
|
-
| `label` | string | yes | |
|
|
306
|
-
| `connector` | Connector | yes | where this resumption path leads |
|
|
307
|
-
| `conditions` | array | yes | `Condition[]`; `[]` when `conditionLogic === "no_conditions"` |
|
|
308
|
-
| `conditionLogic` | string | conditional | omitted (not `"no_conditions"`) when no conditions |
|
|
309
|
-
| `eventType` | string | conditional | classic wait events only (platform-event API name). NOT used by `WaitUntilEvent` — that binds via `automationEventType`/`automationEventName` instead |
|
|
310
|
-
| `automationEventType` / `automationEventName` | string | conditional | `WaitUntilEvent` event branch only; see event table above |
|
|
311
|
-
| `offset` / `offsetUnit` | number / string | conditional | on simplified-subtype branches (`WaitUntilEvent` timeout branch: 1–365 + `Days`/`Hours`/`Weeks`; event branch `offset: 0`) |
|
|
312
|
-
| `inputParameters` | array | conditional | Use the selected invocable event's live contract. Messaging events require `associatedContent`; Journey Builder events require `mceJourneyInput`. |
|
|
313
|
-
| `outputParameters` | array | conditional | captures event payload field values on resumption |
|
|
314
|
-
|
|
315
|
-
### Subtype-Specific Extras
|
|
316
|
-
|
|
317
|
-
| `elementSubtype` | Extra Event Fields | Notes |
|
|
318
|
-
|---|---|---|
|
|
319
|
-
| `WaitDuration` | `offset`, `offsetUnit` (`Minutes`/`Hours`/`Days`/`Weeks`/`Months`) | `inputParameters` and `outputParameters` forced to `[]` |
|
|
320
|
-
| `WaitDate` | Either `resumeDate` + `resumeTime` (literal) **or** `resumeDateReference` (FEROV to a Date field; `resumeTime` optional and normally omitted with it — any Date-typed reference incl. a traversed lookup like `$Input.ReferenceRecord.Birthdate`). Optional `offset` + `offsetUnit` (`Minutes`/`Hours`/`Days`/`Weeks`/`Months` confirmed accepted — **not** limited to Hours/Days). | `inputParameters` and `outputParameters` forced to `[]` |
|
|
321
|
-
| `WaitAttribute` | `resumeDateReference` (e.g., `"$Record.LastModifiedDate"`) | `inputParameters` and `outputParameters` forced to `[]` |
|
|
322
|
-
| `WaitUntilEvent` | Two `waitEvents`. **Event branch:** `automationEventType`, `automationEventName` (see event table above), `offset: 0`, and — **Journey Builder contact events only** — `recordTriggerType` (`"Create"`/`"Update"`/…). `recordTriggerType` is NOT required for messaging engagement events; omitting it on an Email Link Click event saved clean with no warnings. **Timeout branch:** `offset` (1–365), `offsetUnit` (`Days`/`Hours`/`Weeks`), and NO event fields. | Event branch uses normal `inputParameters`: `mceJourneyInput` for Journey Builder events; `associatedContent` for messaging events, **plus `specificLink` for the link-click events** (`{"stringValue":"ANY"}` for any link — see "Input parameters" above). Emit `outputParameters: []` for SMS Response because Core 264 declares no event outputs. Timeout branch has empty `inputParameters`/`outputParameters`. |
|
|
323
|
-
|
|
324
|
-
For the non-`WaitUntilEvent` simplified subtypes (`WaitDuration`, `WaitDate`, `WaitAttribute`), `inputParameters` and `outputParameters` must be emitted as `[]`.
|
|
325
|
-
|
|
326
|
-
**WaitUntilEvent two-branch example:** `examples/waitUntilEvent-two-branch.json` — a real configured flow whose event branch waits on Journey Builder Contact Entered and whose timeout branch uses a 1-week offset. It applies the subtype-table and validation rules above (two connected branches, `elementSubtype`/`defaultConnectorLabel`, no `maxBatchSize`); use the JSON as the shape anchor.
|
|
327
|
-
|
|
328
|
-
### conditionLogic Sentinel Rule
|
|
329
|
-
|
|
330
|
-
When condition logic is "No Conditions": emit `conditions: []` and **omit** `conditionLogic` entirely. Never pass `"no_conditions"` to the server.
|
|
331
|
-
|
|
332
|
-
### Required-on-Save Rules
|
|
333
|
-
|
|
334
|
-
- Classic Wait only: `defaultConnector.targetReference` and `faultConnector.targetReference` must resolve.
|
|
335
|
-
- Per event: `connector.targetReference` must resolve.
|
|
336
|
-
- `defaultConnectorLabel` must not be blank — on classic Wait **and** every simplified subtype incl. `WaitUntilEvent` (see Required Properties above).
|
|
337
|
-
- At least one `waitEvents` entry is required (empty Wait is an activation error). `WaitUntilEvent` requires exactly two (event + timeout).
|
|
338
|
-
- Wait Until Event on a messaging engagement/response event (email, SMS, WhatsApp, RCS): `associatedContent` input parameter is required (see the Wait Until Event section).
|
|
339
|
-
|
|
340
|
-
### Save-Time Rejections
|
|
341
|
-
|
|
342
|
-
- `Element type Wait is not allowed in trigger type RecordBeforeSave`
|
|
343
|
-
- `WaitEvent '<name>' has no connector`
|
|
344
|
-
- `Event type '<eventType>' not found`
|
|
345
|
-
- `Error parsing file: '<VALUE>' is not a valid value for the enum 'ElementSubtypeEnumProxy'` → an upper-case `elementSubtype` such as `WAIT_DURATION`; write `WaitDuration` / `WaitDate` / `WaitUntilEvent`
|
|
346
|
-
|
|
347
|
-
### Fault Connector Mandate
|
|
348
|
-
|
|
349
|
-
Waits can throw at runtime. Always emit a `faultConnector`. (Simplified subtypes like `WaitDuration`, `WaitDate`, `WaitAttribute`, and `WaitUntilEvent` do NOT have a fault connector — only the classic multi-event Wait does.) **Marketing flows are the exception:** in a marketing flow, emit a classic Wait's `faultConnector` only if the user asks for error handling (the marketing trigger types are listed in `shared/fault-paths/fault-paths.md` § Marketing Flows — Fault Paths Only When Asked).
|
|
350
|
-
|
|
351
|
-
---
|
|
352
|
-
|
|
353
|
-
## Classic Wait Events REQUIRE `inputParameters` (activation gate)
|
|
354
|
-
|
|
355
|
-
> **Classic Wait is default-prohibited** — author it only in the narrow
|
|
356
|
-
> exception (multi-branch "by Criteria" or record-relative `DateRefAlarmEvent`),
|
|
357
|
-
> per the "Do NOT emit the base (classic) `Wait`" section near the top. The shapes
|
|
358
|
-
> below apply when reading an existing classic Wait OR building that exception:
|
|
359
|
-
> emit every required `inputParameter` or the flow saves but never activates.
|
|
360
|
-
>
|
|
361
|
-
> **This is the #1 cause of a classic Wait saving but refusing to activate.**
|
|
362
|
-
|
|
363
|
-
A classic (no-subtype) time-based `waitEvent` is NOT complete just because it has a
|
|
364
|
-
`connector` and an `eventType`. Each time-based event carries **required `inputParameters`**,
|
|
365
|
-
and if you omit them the flow **draft-saves fine but throws one `WARNING_BLOCK_ACTIVATION`
|
|
366
|
-
per branch** — `"Enter a value for the Object Type input parameter"` — so it can never
|
|
367
|
-
activate. Emitting the full `inputParameters` block below is what makes a classic Wait
|
|
368
|
-
*activatable*, not just *saveable*.
|
|
369
|
-
|
|
370
|
-
Fetch the authoritative parameter list for a classic platform event with
|
|
371
|
-
`dispatch_readonly(method: "GET", url: "/services/data/vXX.0/flowbuilder/platform/event-types/<EventApiName>/parameters")`. Discover its API name
|
|
372
|
-
with `dispatch_readonly(method: "GET", url: "/services/data/vXX.0/flowbuilder/platform/event-types", queryParams: { eventType: "Runtime" })`; if its category is unknown, repeat
|
|
373
|
-
the discovery call with `eventType: "Setup"` and `eventType: "ManagedSetup"`. The two
|
|
374
|
-
common time-based shapes are fixed and given below verbatim. Do NOT loop on reads/greps —
|
|
375
|
-
construct the payload directly from these.
|
|
376
|
-
|
|
377
|
-
### `DateRefAlarmEvent` — resume relative to a date field on a record (variant 04, "Date–Record")
|
|
378
|
-
|
|
379
|
-
Five `inputParameters`, all required. This exact shape is confirmed against active core
|
|
380
|
-
metadata (`LsFinclAsst/CheckAppealStsAndTkActn`):
|
|
381
|
-
|
|
382
|
-
| `name` | value kind | Meaning | Example |
|
|
383
|
-
|---|---|---|---|
|
|
384
|
-
| `TimeTableColumnEnumOrId` | `stringValue` | **Object Type** — the SObject API name whose record supplies the base date. *(This is the parameter whose absence produces the activation warning.)* | `"Case"` |
|
|
385
|
-
| `TimeFieldColumnEnumOrId` | `stringValue` | **Time Field** — the Date/DateTime field on that object | `"ClosedDate"` |
|
|
386
|
-
| `EntityObjectId` | `elementReference` | **Record Id** — a reference to the Id of the specific record | `"Get_Case.Id"` |
|
|
387
|
-
| `TimeOffset` | `numberValue` | Offset amount (may be `0`; negative = before the base date) | `30` |
|
|
388
|
-
| `TimeOffsetUnit` | `stringValue` | `Days` or `Hours` | `"Days"` |
|
|
389
|
-
|
|
390
|
-
Copy-pasteable single-branch classic Wait (Date–Record):
|
|
391
|
-
|
|
392
|
-
```json
|
|
393
|
-
{
|
|
394
|
-
"name": "Wait_Until_30_Days_After_Close",
|
|
395
|
-
"label": "Wait Until 30 Days After Close",
|
|
396
|
-
"locationX": 350,
|
|
397
|
-
"locationY": 400,
|
|
398
|
-
"defaultConnectorLabel": "Other (Default)",
|
|
399
|
-
"defaultConnector": { "targetReference": "End_No_Event" },
|
|
400
|
-
"faultConnector": { "targetReference": "Handle_Fault" },
|
|
401
|
-
"waitEvents": [
|
|
402
|
-
{
|
|
403
|
-
"name": "Resume_After_Close",
|
|
404
|
-
"label": "Resume After Close",
|
|
405
|
-
"conditionLogic": "and",
|
|
406
|
-
"conditions": [],
|
|
407
|
-
"connector": { "targetReference": "Send_Followup" },
|
|
408
|
-
"eventType": "DateRefAlarmEvent",
|
|
409
|
-
"inputParameters": [
|
|
410
|
-
{ "name": "TimeTableColumnEnumOrId", "value": { "stringValue": "Case" } },
|
|
411
|
-
{ "name": "TimeFieldColumnEnumOrId", "value": { "stringValue": "ClosedDate" } },
|
|
412
|
-
{ "name": "EntityObjectId", "value": { "elementReference": "Get_Case.Id" } },
|
|
413
|
-
{ "name": "TimeOffset", "value": { "numberValue": 30 } },
|
|
414
|
-
{ "name": "TimeOffsetUnit", "value": { "stringValue": "Days" } }
|
|
415
|
-
],
|
|
416
|
-
"outputParameters": []
|
|
417
|
-
}
|
|
418
|
-
]
|
|
419
|
-
}
|
|
420
|
-
```
|
|
421
|
-
|
|
422
|
-
### `AlarmEvent` — resume at a base datetime value (absolute time)
|
|
423
|
-
|
|
424
|
-
One required `inputParameter`. The base time comes from `AlarmTime`; the optional
|
|
425
|
-
`TimeOffset`/`TimeOffsetUnit` (Hours/Days only) shift it.
|
|
426
|
-
|
|
427
|
-
| `name` | value kind | Meaning |
|
|
428
|
-
|---|---|---|
|
|
429
|
-
| `AlarmTime` | `elementReference` | base datetime (a DateTime field or variable), e.g. `"Get_Case.ClosedDate"` |
|
|
430
|
-
| `TimeOffset` | `numberValue` | optional offset amount |
|
|
431
|
-
| `TimeOffsetUnit` | `stringValue` | optional; `Hours` or `Days` only |
|
|
432
|
-
|
|
433
|
-
### Multi-branch classic Wait "by Criteria" (variant 01)
|
|
434
|
-
|
|
435
|
-
The "Criteria" variant is a classic Wait with **two or more `waitEvents`**, each with its own
|
|
436
|
-
`conditionLogic` + `conditions` (resume conditions), `eventType`, and the same required
|
|
437
|
-
`inputParameters` as above. Every time-based branch still needs its `inputParameters` block —
|
|
438
|
-
missing the Object Type on any branch blocks activation for the whole flow.
|
|
439
|
-
|
|
440
|
-
```json
|
|
441
|
-
{
|
|
442
|
-
"name": "Wait_For_Case_Milestones",
|
|
443
|
-
"label": "Wait For Case Milestones",
|
|
444
|
-
"locationX": 350,
|
|
445
|
-
"locationY": 400,
|
|
446
|
-
"defaultConnectorLabel": "All Other Conditions",
|
|
447
|
-
"defaultConnector": { "targetReference": "End_No_Event" },
|
|
448
|
-
"faultConnector": { "targetReference": "Handle_Fault" },
|
|
449
|
-
"waitEvents": [
|
|
450
|
-
{
|
|
451
|
-
"name": "One_Day_Before_Close",
|
|
452
|
-
"label": "1 Day Before Close",
|
|
453
|
-
"conditionLogic": "and",
|
|
454
|
-
"conditions": [
|
|
455
|
-
{
|
|
456
|
-
"leftValueReference": "Get_Case.Status",
|
|
457
|
-
"operator": "EqualTo",
|
|
458
|
-
"rightValue": { "stringValue": "Escalated" }
|
|
459
|
-
}
|
|
460
|
-
],
|
|
461
|
-
"connector": { "targetReference": "Send_Reminder" },
|
|
462
|
-
"eventType": "DateRefAlarmEvent",
|
|
463
|
-
"inputParameters": [
|
|
464
|
-
{ "name": "TimeTableColumnEnumOrId", "value": { "stringValue": "Case" } },
|
|
465
|
-
{ "name": "TimeFieldColumnEnumOrId", "value": { "stringValue": "ClosedDate" } },
|
|
466
|
-
{ "name": "EntityObjectId", "value": { "elementReference": "Get_Case.Id" } },
|
|
467
|
-
{ "name": "TimeOffset", "value": { "numberValue": -1 } },
|
|
468
|
-
{ "name": "TimeOffsetUnit", "value": { "stringValue": "Days" } }
|
|
469
|
-
],
|
|
470
|
-
"outputParameters": []
|
|
471
|
-
},
|
|
472
|
-
{
|
|
473
|
-
"name": "One_Day_After_Close",
|
|
474
|
-
"label": "1 Day After Close",
|
|
475
|
-
"conditionLogic": "and",
|
|
476
|
-
"conditions": [],
|
|
477
|
-
"connector": { "targetReference": "Send_Survey" },
|
|
478
|
-
"eventType": "DateRefAlarmEvent",
|
|
479
|
-
"inputParameters": [
|
|
480
|
-
{ "name": "TimeTableColumnEnumOrId", "value": { "stringValue": "Case" } },
|
|
481
|
-
{ "name": "TimeFieldColumnEnumOrId", "value": { "stringValue": "ClosedDate" } },
|
|
482
|
-
{ "name": "EntityObjectId", "value": { "elementReference": "Get_Case.Id" } },
|
|
483
|
-
{ "name": "TimeOffset", "value": { "numberValue": 1 } },
|
|
484
|
-
{ "name": "TimeOffsetUnit", "value": { "stringValue": "Days" } }
|
|
485
|
-
],
|
|
486
|
-
"outputParameters": []
|
|
487
|
-
}
|
|
488
|
-
]
|
|
489
|
-
}
|
|
490
|
-
```
|
|
491
|
-
|
|
492
|
-
Notes that keep a classic Wait activatable:
|
|
493
|
-
- **Every time-based branch needs its full `inputParameters` block** (esp. `TimeTableColumnEnumOrId`). This is the fix for the `WARNING_BLOCK_ACTIVATION` regression.
|
|
494
|
-
- `defaultConnectorLabel` must be non-blank; both `defaultConnector` and `faultConnector` targets must resolve.
|
|
495
|
-
- Branches with no resume condition emit `conditions: []` and keep `conditionLogic: "and"` (or omit `conditionLogic` — never send `"no_conditions"`).
|
|
496
|
-
- `outputParameters: []` unless you are capturing event payload fields.
|
|
497
|
-
- A Wait is async-only: use an **Autolaunched** (or record-triggered) flow, never a screen flow or a `RecordBeforeSave` trigger.
|