@salesforce/afv-skills 1.8.0 → 1.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/skills/activating-datacloud/CREDITS.md +5 -0
- package/skills/activating-datacloud/README.md +39 -0
- package/skills/activating-datacloud/SKILL.md +118 -0
- package/skills/analyzing-omnistudio-dependencies/CREDITS.md +5 -0
- package/skills/analyzing-omnistudio-dependencies/SKILL.md +477 -0
- package/skills/analyzing-omnistudio-dependencies/references/dependency-patterns.md +508 -0
- package/skills/analyzing-omnistudio-dependencies/references/namespace-guide.md +300 -0
- package/skills/building-omnistudio-callable-apex/CREDITS.md +9 -0
- package/skills/building-omnistudio-callable-apex/README.md +80 -0
- package/skills/building-omnistudio-callable-apex/SKILL.md +276 -0
- package/skills/building-omnistudio-callable-apex/assets/pattern_callable_openinterface.cls +40 -0
- package/skills/building-omnistudio-callable-apex/assets/pattern_callable_vanilla.cls +32 -0
- package/skills/building-omnistudio-callable-apex/assets/pattern_migration.cls +54 -0
- package/skills/building-omnistudio-callable-apex/assets/pattern_openinterface.cls +45 -0
- package/skills/building-omnistudio-callable-apex/assets/pattern_test_class.cls +65 -0
- package/skills/building-omnistudio-callable-apex/examples/Test_QuoteByProductCallable/IndustriesCallableException.cls +7 -0
- package/skills/building-omnistudio-callable-apex/examples/Test_QuoteByProductCallable/Industries_QuoteByProductCallable.cls +115 -0
- package/skills/building-omnistudio-callable-apex/examples/Test_QuoteByProductCallable/Industries_QuoteByProductCallableTest.cls +189 -0
- package/skills/building-omnistudio-callable-apex/examples/Test_QuoteByProductCallable/TRANSCRIPT.md +115 -0
- package/skills/building-omnistudio-callable-apex/examples/Test_VlocityOpenInterface2Conversion/IndustriesCallableException.cls +7 -0
- package/skills/building-omnistudio-callable-apex/examples/Test_VlocityOpenInterface2Conversion/MyCustomCallable.cls +74 -0
- package/skills/building-omnistudio-callable-apex/examples/Test_VlocityOpenInterface2Conversion/MyCustomCallableTest.cls +146 -0
- package/skills/building-omnistudio-callable-apex/examples/Test_VlocityOpenInterface2Conversion/MyCustomRemoteClass.cls +16 -0
- package/skills/building-omnistudio-callable-apex/examples/Test_VlocityOpenInterface2Conversion/TRANSCRIPT.md +120 -0
- package/skills/building-omnistudio-callable-apex/examples/Test_VlocityOpenInterfaceConversion/IndustriesCallableException.cls +7 -0
- package/skills/building-omnistudio-callable-apex/examples/Test_VlocityOpenInterfaceConversion/MyCustomCallable.cls +73 -0
- package/skills/building-omnistudio-callable-apex/examples/Test_VlocityOpenInterfaceConversion/MyCustomCallableTest.cls +128 -0
- package/skills/building-omnistudio-callable-apex/examples/Test_VlocityOpenInterfaceConversion/MyCustomVlocityOpenInterface2.cls +23 -0
- package/skills/building-omnistudio-callable-apex/examples/Test_VlocityOpenInterfaceConversion/TRANSCRIPT.md +75 -0
- package/skills/building-omnistudio-datamapper/CREDITS.md +5 -0
- package/skills/building-omnistudio-datamapper/SKILL.md +270 -0
- package/skills/building-omnistudio-datamapper/assets/completion-summary-template.md +28 -0
- package/skills/building-omnistudio-datamapper/assets/omni-data-transform-extract.json +6 -0
- package/skills/building-omnistudio-datamapper/assets/omni-data-transform-item.json +12 -0
- package/skills/building-omnistudio-datamapper/assets/omni-data-transform-load.json +6 -0
- package/skills/building-omnistudio-datamapper/assets/omni-data-transform-transform.json +6 -0
- package/skills/building-omnistudio-datamapper/references/best-practices.md +277 -0
- package/skills/building-omnistudio-datamapper/references/naming-conventions.md +145 -0
- package/skills/building-omnistudio-flexcard/CREDITS.md +5 -0
- package/skills/building-omnistudio-flexcard/SKILL.md +325 -0
- package/skills/building-omnistudio-flexcard/assets/omni-ui-card.json +10 -0
- package/skills/building-omnistudio-flexcard/references/best-practices.md +291 -0
- package/skills/building-omnistudio-flexcard/references/data-binding-guide.md +311 -0
- package/skills/building-omnistudio-flexcard/references/scoring-rubric.md +66 -0
- package/skills/building-omnistudio-flexcard/scripts/flexcard-commands.sh +24 -0
- package/skills/building-omnistudio-integration-procedure/CREDITS.md +5 -0
- package/skills/building-omnistudio-integration-procedure/SKILL.md +275 -0
- package/skills/building-omnistudio-integration-procedure/assets/omni-process-element-dr-extract.json +10 -0
- package/skills/building-omnistudio-integration-procedure/assets/omni-process-element-set-values.json +10 -0
- package/skills/building-omnistudio-integration-procedure/assets/omni-process-ip.json +12 -0
- package/skills/building-omnistudio-integration-procedure/assets/scoring-report-format.txt +14 -0
- package/skills/building-omnistudio-integration-procedure/references/best-practices.md +388 -0
- package/skills/building-omnistudio-integration-procedure/references/element-types.md +588 -0
- package/skills/building-omnistudio-integration-procedure/scripts/cli-commands.sh +18 -0
- package/skills/building-omnistudio-omniscript/CREDITS.md +5 -0
- package/skills/building-omnistudio-omniscript/SKILL.md +367 -0
- package/skills/building-omnistudio-omniscript/assets/omni-process-element-step.json +10 -0
- package/skills/building-omnistudio-omniscript/assets/omni-process-element-text-block.json +11 -0
- package/skills/building-omnistudio-omniscript/assets/omni-process-omniscript.json +12 -0
- package/skills/building-omnistudio-omniscript/references/best-practices.md +480 -0
- package/skills/building-omnistudio-omniscript/references/element-types.md +1172 -0
- package/skills/building-omnistudio-omniscript/scripts/check-duplicate-omniscript.sh +13 -0
- package/skills/building-omnistudio-omniscript/scripts/cli-reference.sh +21 -0
- package/skills/building-omnistudio-omniscript/scripts/deploy-omniscript.sh +29 -0
- package/skills/building-sf-integrations/CREDITS.md +5 -0
- package/skills/building-sf-integrations/README.md +95 -0
- package/skills/building-sf-integrations/SKILL.md +192 -0
- package/skills/building-sf-integrations/assets/callouts/callout-retry-handler.cls +167 -0
- package/skills/building-sf-integrations/assets/callouts/http-response-handler.cls +257 -0
- package/skills/building-sf-integrations/assets/callouts/rest-queueable-callout.cls +262 -0
- package/skills/building-sf-integrations/assets/callouts/rest-sync-callout.cls +211 -0
- package/skills/building-sf-integrations/assets/cdc/cdc-handler.cls +246 -0
- package/skills/building-sf-integrations/assets/cdc/cdc-subscriber-trigger.trigger +139 -0
- package/skills/building-sf-integrations/assets/endpoint-security/example.cspTrustedSite-meta.xml +58 -0
- package/skills/building-sf-integrations/assets/endpoint-security/example.remoteSite-meta.xml +39 -0
- package/skills/building-sf-integrations/assets/external-credentials/jwt-external-credential.externalCredential-meta.xml +90 -0
- package/skills/building-sf-integrations/assets/external-credentials/oauth-external-credential.externalCredential-meta.xml +87 -0
- package/skills/building-sf-integrations/assets/external-services/external-service-operations.md +221 -0
- package/skills/building-sf-integrations/assets/external-services/openapi-registration.externalServiceRegistration-meta.xml +193 -0
- package/skills/building-sf-integrations/assets/named-credentials/certificate-auth.namedCredential-meta.xml +62 -0
- package/skills/building-sf-integrations/assets/named-credentials/custom-auth.namedCredential-meta.xml +71 -0
- package/skills/building-sf-integrations/assets/named-credentials/oauth-client-credentials.namedCredential-meta.xml +51 -0
- package/skills/building-sf-integrations/assets/named-credentials/oauth-jwt-bearer.namedCredential-meta.xml +67 -0
- package/skills/building-sf-integrations/assets/platform-events/event-publisher.cls +191 -0
- package/skills/building-sf-integrations/assets/platform-events/event-subscriber-action.cls +295 -0
- package/skills/building-sf-integrations/assets/platform-events/event-subscriber-trigger.trigger +108 -0
- package/skills/building-sf-integrations/assets/platform-events/platform-event-definition.object-meta.xml +124 -0
- package/skills/building-sf-integrations/assets/soap/soap-callout-service.cls +186 -0
- package/skills/building-sf-integrations/assets/soap/wsdl2apex-guide.md +213 -0
- package/skills/building-sf-integrations/hooks/scripts/suggest_credential_setup.py +271 -0
- package/skills/building-sf-integrations/hooks/scripts/validate_integration.py +363 -0
- package/skills/building-sf-integrations/references/callout-patterns.md +719 -0
- package/skills/building-sf-integrations/references/cdc-guide.md +288 -0
- package/skills/building-sf-integrations/references/cli-reference.md +94 -0
- package/skills/building-sf-integrations/references/event-driven-architecture-guide.md +266 -0
- package/skills/building-sf-integrations/references/event-patterns.md +838 -0
- package/skills/building-sf-integrations/references/external-services-guide.md +303 -0
- package/skills/building-sf-integrations/references/messaging-api-v2.md +609 -0
- package/skills/building-sf-integrations/references/named-credentials-automation.md +201 -0
- package/skills/building-sf-integrations/references/named-credentials-guide.md +173 -0
- package/skills/building-sf-integrations/references/platform-events-guide.md +288 -0
- package/skills/building-sf-integrations/references/rest-callout-patterns.md +288 -0
- package/skills/building-sf-integrations/references/scoring-rubric.md +59 -0
- package/skills/building-sf-integrations/references/security-best-practices.md +248 -0
- package/skills/building-sf-integrations/scripts/README.md +100 -0
- package/skills/building-sf-integrations/scripts/configure-named-credential.sh +236 -0
- package/skills/building-sf-integrations/scripts/set-api-credential.sh +146 -0
- package/skills/building-sf-integrations/scripts/templates/setup-credentials-with-csp.sh +158 -0
- package/skills/configuring-connected-apps/CREDITS.md +3 -0
- package/skills/configuring-connected-apps/README.md +99 -0
- package/skills/configuring-connected-apps/SKILL.md +224 -0
- package/skills/configuring-connected-apps/assets/connected-app-basic.xml +29 -0
- package/skills/configuring-connected-apps/assets/connected-app-canvas.xml +62 -0
- package/skills/configuring-connected-apps/assets/connected-app-jwt.xml +49 -0
- package/skills/configuring-connected-apps/assets/connected-app-oauth.xml +65 -0
- package/skills/configuring-connected-apps/assets/eca-global-oauth.xml +36 -0
- package/skills/configuring-connected-apps/assets/eca-oauth-settings.xml +36 -0
- package/skills/configuring-connected-apps/assets/eca-policies.xml +36 -0
- package/skills/configuring-connected-apps/assets/external-client-app.xml +35 -0
- package/skills/configuring-connected-apps/references/example-usage.md +256 -0
- package/skills/configuring-connected-apps/references/migration-guide.md +328 -0
- package/skills/configuring-connected-apps/references/oauth-flows-reference.md +660 -0
- package/skills/configuring-connected-apps/references/security-checklist.md +209 -0
- package/skills/configuring-connected-apps/references/testing-validation-guide.md +275 -0
- package/skills/connecting-datacloud/CREDITS.md +5 -0
- package/skills/connecting-datacloud/README.md +59 -0
- package/skills/connecting-datacloud/SKILL.md +155 -0
- package/skills/connecting-datacloud/examples/connections/heroku-postgres.json +15 -0
- package/skills/connecting-datacloud/examples/connections/ingest-api-connection.json +5 -0
- package/skills/connecting-datacloud/examples/connections/ingest-api-schema.json +31 -0
- package/skills/connecting-datacloud/examples/connections/redshift.json +16 -0
- package/skills/connecting-datacloud/examples/connections/sharepoint-unstructured.json +20 -0
- package/skills/connecting-datacloud/examples/connections/snowflake-connection.json +42 -0
- package/skills/debugging-apex-logs/CREDITS.md +22 -0
- package/skills/debugging-apex-logs/README.md +74 -0
- package/skills/debugging-apex-logs/SKILL.md +172 -0
- package/skills/debugging-apex-logs/assets/benchmarking-template.cls +327 -0
- package/skills/debugging-apex-logs/assets/cpu-heap-optimization.cls +307 -0
- package/skills/debugging-apex-logs/assets/dml-in-loop-fix.cls +219 -0
- package/skills/debugging-apex-logs/assets/null-pointer-fix.cls +252 -0
- package/skills/debugging-apex-logs/assets/soql-in-loop-fix.cls +157 -0
- package/skills/debugging-apex-logs/references/analysis-playbook.md +53 -0
- package/skills/debugging-apex-logs/references/benchmarking-guide.md +287 -0
- package/skills/debugging-apex-logs/references/cli-commands.md +368 -0
- package/skills/debugging-apex-logs/references/common-issues.md +68 -0
- package/skills/debugging-apex-logs/references/debug-log-reference.md +328 -0
- package/skills/debugging-apex-logs/references/log-analysis-tools.md +248 -0
- package/skills/debugging-apex-logs/references/scoring-rubric.md +21 -0
- package/skills/deploying-metadata/CREDITS.md +25 -0
- package/skills/deploying-metadata/README.md +104 -0
- package/skills/deploying-metadata/SKILL.md +214 -0
- package/skills/deploying-metadata/assets/destructiveChanges.xml +143 -0
- package/skills/deploying-metadata/assets/package.xml +121 -0
- package/skills/deploying-metadata/references/agent-deployment-guide.md +628 -0
- package/skills/deploying-metadata/references/deploy.sh +73 -0
- package/skills/deploying-metadata/references/deployment-report-template.md +89 -0
- package/skills/deploying-metadata/references/deployment-workflows.md +395 -0
- package/skills/deploying-metadata/references/orchestration.md +183 -0
- package/skills/deploying-metadata/references/trigger-deployment-safety.md +376 -0
- package/skills/deploying-omnistudio-datapacks/CREDITS.md +5 -0
- package/skills/deploying-omnistudio-datapacks/README.md +88 -0
- package/skills/deploying-omnistudio-datapacks/SKILL.md +174 -0
- package/skills/deploying-omnistudio-datapacks/examples/business-internet-plus-bundle/TRANSCRIPT.md +124 -0
- package/skills/deploying-omnistudio-datapacks/examples/business-internet-plus-bundle/deploy-business-internet-plus-bundle.yaml +11 -0
- package/skills/deploying-omnistudio-datapacks/examples/business-internet-plus-bundle-deploy/TRANSCRIPT.md +142 -0
- package/skills/deploying-omnistudio-datapacks/examples/business-internet-plus-bundle-deploy/deploy-business-internet-plus-bundle.yaml +10 -0
- package/skills/deploying-omnistudio-datapacks/references/job-file-template.md +42 -0
- package/skills/deploying-omnistudio-datapacks/references/troubleshooting-matrix.md +24 -0
- package/skills/developing-agentforce/assets/metadata/http-callout-flow.flow-meta.xml +1 -1
- package/skills/developing-agentforce/references/actions-reference.md +8 -8
- package/skills/fetching-salesforce-docs/README.md +66 -0
- package/skills/fetching-salesforce-docs/SKILL.md +209 -0
- package/skills/fetching-salesforce-docs/requirements.txt +2 -0
- package/skills/fetching-salesforce-docs/scripts/extract_help_salesforce.py +497 -0
- package/skills/fetching-salesforce-docs/scripts/extract_salesforce_doc.py +357 -0
- package/skills/fetching-salesforce-docs/scripts/runtime_bootstrap.py +58 -0
- package/skills/generating-apex/CREDITS.md +1 -26
- package/skills/generating-apex-test/CREDITS.md +2 -27
- package/skills/generating-lwc-components/CREDITS.md +5 -0
- package/skills/generating-lwc-components/README.md +126 -0
- package/skills/generating-lwc-components/SKILL.md +191 -0
- package/skills/generating-lwc-components/assets/apex-controller/LwcController.cls +327 -0
- package/skills/generating-lwc-components/assets/basic-component/basicComponent.css +72 -0
- package/skills/generating-lwc-components/assets/basic-component/basicComponent.html +111 -0
- package/skills/generating-lwc-components/assets/basic-component/basicComponent.js +163 -0
- package/skills/generating-lwc-components/assets/basic-component/basicComponent.js-meta.xml +137 -0
- package/skills/generating-lwc-components/assets/datatable-component/datatableComponent.html +111 -0
- package/skills/generating-lwc-components/assets/datatable-component/datatableComponent.js +367 -0
- package/skills/generating-lwc-components/assets/flow-screen-component/flowScreenComponent.css +63 -0
- package/skills/generating-lwc-components/assets/flow-screen-component/flowScreenComponent.html +154 -0
- package/skills/generating-lwc-components/assets/flow-screen-component/flowScreenComponent.js +348 -0
- package/skills/generating-lwc-components/assets/flow-screen-component/flowScreenComponent.js-meta.xml +87 -0
- package/skills/generating-lwc-components/assets/form-component/formComponent.html +165 -0
- package/skills/generating-lwc-components/assets/form-component/formComponent.js +275 -0
- package/skills/generating-lwc-components/assets/graphql-component/graphqlComponent.html +100 -0
- package/skills/generating-lwc-components/assets/graphql-component/graphqlComponent.js +336 -0
- package/skills/generating-lwc-components/assets/jest-test/componentName.test.js.example +371 -0
- package/skills/generating-lwc-components/assets/message-channel/RecordSelected.messageChannel-meta.xml +71 -0
- package/skills/generating-lwc-components/assets/message-channel/lmsPublisher.js +103 -0
- package/skills/generating-lwc-components/assets/message-channel/lmsSubscriber.js +181 -0
- package/skills/generating-lwc-components/assets/modal-component/modalComponent.html +85 -0
- package/skills/generating-lwc-components/assets/modal-component/modalComponent.js +199 -0
- package/skills/generating-lwc-components/assets/record-picker/recordPicker.html +55 -0
- package/skills/generating-lwc-components/assets/record-picker/recordPicker.js +199 -0
- package/skills/generating-lwc-components/assets/state-store/store.js +282 -0
- package/skills/generating-lwc-components/assets/typescript-component/typescriptComponent.css +65 -0
- package/skills/generating-lwc-components/assets/typescript-component/typescriptComponent.html +95 -0
- package/skills/generating-lwc-components/assets/typescript-component/typescriptComponent.js-meta.xml +75 -0
- package/skills/generating-lwc-components/assets/typescript-component/typescriptComponent.test.ts.example +301 -0
- package/skills/generating-lwc-components/assets/typescript-component/typescriptComponent.ts +295 -0
- package/skills/generating-lwc-components/assets/workspace-api/workspaceComponent.html +71 -0
- package/skills/generating-lwc-components/assets/workspace-api/workspaceComponent.js +316 -0
- package/skills/generating-lwc-components/hooks/scripts/lwc-lsp-validate.py +295 -0
- package/skills/generating-lwc-components/hooks/scripts/post-tool-validate.py +347 -0
- package/skills/generating-lwc-components/hooks/scripts/slds_data/deprecated_patterns.json +74 -0
- package/skills/generating-lwc-components/hooks/scripts/slds_data/styling_hooks.json +111 -0
- package/skills/generating-lwc-components/hooks/scripts/slds_data/valid_slds_classes.json +127 -0
- package/skills/generating-lwc-components/hooks/scripts/slds_linter_wrapper.py +294 -0
- package/skills/generating-lwc-components/hooks/scripts/slds_rules/__init__.py +22 -0
- package/skills/generating-lwc-components/hooks/scripts/template_validator.py +332 -0
- package/skills/generating-lwc-components/hooks/scripts/validate_slds.py +595 -0
- package/skills/generating-lwc-components/references/accessibility-guide.md +843 -0
- package/skills/generating-lwc-components/references/advanced-features.md +108 -0
- package/skills/generating-lwc-components/references/async-notification-patterns.md +661 -0
- package/skills/generating-lwc-components/references/cli-commands.md +545 -0
- package/skills/generating-lwc-components/references/component-patterns.md +1476 -0
- package/skills/generating-lwc-components/references/flow-integration-guide.md +675 -0
- package/skills/generating-lwc-components/references/jest-testing.md +1011 -0
- package/skills/generating-lwc-components/references/lms-guide.md +860 -0
- package/skills/generating-lwc-components/references/lwc-best-practices.md +1310 -0
- package/skills/generating-lwc-components/references/performance-guide.md +861 -0
- package/skills/generating-lwc-components/references/scoring-and-testing.md +116 -0
- package/skills/generating-lwc-components/references/slds-blueprints.json +14389 -0
- package/skills/generating-lwc-components/references/slds-design-guide.md +166 -0
- package/skills/generating-lwc-components/references/state-management.md +642 -0
- package/skills/generating-lwc-components/references/template-anti-patterns.md +948 -0
- package/skills/generating-lwc-components/references/triangle-pattern.md +365 -0
- package/skills/generating-lwc-components/scripts/local-dev-preview.sh +34 -0
- package/skills/generating-mermaid-diagrams/CREDITS.md +46 -0
- package/skills/generating-mermaid-diagrams/README.md +114 -0
- package/skills/generating-mermaid-diagrams/SKILL.md +218 -0
- package/skills/generating-mermaid-diagrams/assets/agentforce/agent-flow.md +313 -0
- package/skills/generating-mermaid-diagrams/assets/architecture/system-landscape.md +351 -0
- package/skills/generating-mermaid-diagrams/assets/datamodel/b2b-commerce-erd.md +317 -0
- package/skills/generating-mermaid-diagrams/assets/datamodel/campaigns-erd.md +195 -0
- package/skills/generating-mermaid-diagrams/assets/datamodel/consent-erd.md +262 -0
- package/skills/generating-mermaid-diagrams/assets/datamodel/files-erd.md +266 -0
- package/skills/generating-mermaid-diagrams/assets/datamodel/forecasting-erd.md +261 -0
- package/skills/generating-mermaid-diagrams/assets/datamodel/fsl-erd.md +332 -0
- package/skills/generating-mermaid-diagrams/assets/datamodel/party-model-erd.md +237 -0
- package/skills/generating-mermaid-diagrams/assets/datamodel/quote-order-erd.md +277 -0
- package/skills/generating-mermaid-diagrams/assets/datamodel/revenue-cloud-erd.md +343 -0
- package/skills/generating-mermaid-diagrams/assets/datamodel/sales-cloud-erd.md +192 -0
- package/skills/generating-mermaid-diagrams/assets/datamodel/salesforce-erd.md +209 -0
- package/skills/generating-mermaid-diagrams/assets/datamodel/scheduler-erd.md +276 -0
- package/skills/generating-mermaid-diagrams/assets/datamodel/service-cloud-erd.md +217 -0
- package/skills/generating-mermaid-diagrams/assets/datamodel/territory-management-erd.md +241 -0
- package/skills/generating-mermaid-diagrams/assets/integration/api-sequence.md +387 -0
- package/skills/generating-mermaid-diagrams/assets/oauth/authorization-code-pkce.md +197 -0
- package/skills/generating-mermaid-diagrams/assets/oauth/authorization-code.md +152 -0
- package/skills/generating-mermaid-diagrams/assets/oauth/client-credentials.md +233 -0
- package/skills/generating-mermaid-diagrams/assets/oauth/device-authorization.md +295 -0
- package/skills/generating-mermaid-diagrams/assets/oauth/jwt-bearer.md +256 -0
- package/skills/generating-mermaid-diagrams/assets/oauth/refresh-token.md +281 -0
- package/skills/generating-mermaid-diagrams/assets/oauth/user-agent-social-sign-on.md +281 -0
- package/skills/generating-mermaid-diagrams/assets/role-hierarchy/user-hierarchy.md +322 -0
- package/skills/generating-mermaid-diagrams/references/color-palette.md +464 -0
- package/skills/generating-mermaid-diagrams/references/diagram-conventions.md +313 -0
- package/skills/generating-mermaid-diagrams/references/erd-conventions.md +320 -0
- package/skills/generating-mermaid-diagrams/references/mermaid-reference.md +434 -0
- package/skills/generating-mermaid-diagrams/references/mermaid-styling.md +81 -0
- package/skills/generating-mermaid-diagrams/references/preview-guide.md +49 -0
- package/skills/generating-mermaid-diagrams/references/usage-examples.md +340 -0
- package/skills/generating-mermaid-diagrams/scripts/README.md +160 -0
- package/skills/generating-mermaid-diagrams/scripts/mermaid_preview.py +654 -0
- package/skills/generating-mermaid-diagrams/scripts/query-org-metadata.py +293 -0
- package/skills/generating-visual-diagrams/CREDITS.md +80 -0
- package/skills/generating-visual-diagrams/README.md +83 -0
- package/skills/generating-visual-diagrams/SKILL.md +208 -0
- package/skills/generating-visual-diagrams/assets/architecture/integration-flow.md +55 -0
- package/skills/generating-visual-diagrams/assets/erd/core-objects.md +131 -0
- package/skills/generating-visual-diagrams/assets/erd/custom-objects.md +60 -0
- package/skills/generating-visual-diagrams/assets/lwc/dashboard-card.md +45 -0
- package/skills/generating-visual-diagrams/assets/lwc/data-table.md +57 -0
- package/skills/generating-visual-diagrams/assets/lwc/record-form.md +60 -0
- package/skills/generating-visual-diagrams/assets/review/apex-review.md +57 -0
- package/skills/generating-visual-diagrams/assets/review/lwc-review.md +48 -0
- package/skills/generating-visual-diagrams/references/architect-aesthetic-guide.md +257 -0
- package/skills/generating-visual-diagrams/references/examples-index.md +35 -0
- package/skills/generating-visual-diagrams/references/gemini-cli-setup.md +65 -0
- package/skills/generating-visual-diagrams/references/interview-questions.md +529 -0
- package/skills/generating-visual-diagrams/references/iteration-workflow.md +173 -0
- package/skills/generating-visual-diagrams/scripts/check-prerequisites.sh +101 -0
- package/skills/generating-visual-diagrams/scripts/generate_image.py +243 -0
- package/skills/handling-sf-data/CREDITS.md +5 -0
- package/skills/handling-sf-data/README.md +112 -0
- package/skills/handling-sf-data/SKILL.md +235 -0
- package/skills/handling-sf-data/assets/bulk/bulk-insert-10000.apex +293 -0
- package/skills/handling-sf-data/assets/bulk/bulk-insert-200.apex +208 -0
- package/skills/handling-sf-data/assets/bulk/bulk-insert-500.apex +219 -0
- package/skills/handling-sf-data/assets/bulk/bulk-upsert-external-id.apex +324 -0
- package/skills/handling-sf-data/assets/cleanup/delete-by-created-date.apex +319 -0
- package/skills/handling-sf-data/assets/cleanup/delete-by-name.apex +240 -0
- package/skills/handling-sf-data/assets/cleanup/delete-test-data.apex +311 -0
- package/skills/handling-sf-data/assets/cleanup/rollback-transaction.apex +266 -0
- package/skills/handling-sf-data/assets/csv/account-import.csv +11 -0
- package/skills/handling-sf-data/assets/csv/contact-import.csv +11 -0
- package/skills/handling-sf-data/assets/csv/custom-object-import.csv +11 -0
- package/skills/handling-sf-data/assets/csv/opportunity-import.csv +11 -0
- package/skills/handling-sf-data/assets/factories/account-factory.apex +165 -0
- package/skills/handling-sf-data/assets/factories/case-factory.apex +237 -0
- package/skills/handling-sf-data/assets/factories/contact-factory.apex +168 -0
- package/skills/handling-sf-data/assets/factories/custom-object-factory.apex +260 -0
- package/skills/handling-sf-data/assets/factories/event-factory.apex +275 -0
- package/skills/handling-sf-data/assets/factories/hierarchy-factory.apex +372 -0
- package/skills/handling-sf-data/assets/factories/lead-factory.apex +190 -0
- package/skills/handling-sf-data/assets/factories/opportunity-factory.apex +206 -0
- package/skills/handling-sf-data/assets/factories/task-factory.apex +246 -0
- package/skills/handling-sf-data/assets/factories/user-factory.apex +278 -0
- package/skills/handling-sf-data/assets/json/account-contact-tree.json +130 -0
- package/skills/handling-sf-data/assets/json/account-opportunity-tree.json +110 -0
- package/skills/handling-sf-data/assets/json/full-hierarchy-tree.json +188 -0
- package/skills/handling-sf-data/assets/soql/aggregate.soql +226 -0
- package/skills/handling-sf-data/assets/soql/child-to-parent.soql +162 -0
- package/skills/handling-sf-data/assets/soql/parent-to-child.soql +153 -0
- package/skills/handling-sf-data/assets/soql/polymorphic.soql +198 -0
- package/skills/handling-sf-data/assets/soql/subquery.soql +287 -0
- package/skills/handling-sf-data/references/anonymous-apex-guide.md +98 -0
- package/skills/handling-sf-data/references/bulk-operations-guide.md +94 -0
- package/skills/handling-sf-data/references/bulk-testing-example.md +194 -0
- package/skills/handling-sf-data/references/cleanup-rollback-example.md +322 -0
- package/skills/handling-sf-data/references/cleanup-rollback-guide.md +84 -0
- package/skills/handling-sf-data/references/crud-workflow-example.md +183 -0
- package/skills/handling-sf-data/references/governor-limits-reference.md +74 -0
- package/skills/handling-sf-data/references/orchestration.md +174 -0
- package/skills/handling-sf-data/references/relationship-query-examples.md +249 -0
- package/skills/handling-sf-data/references/sf-cli-data-commands.md +158 -0
- package/skills/handling-sf-data/references/soql-relationship-guide.md +84 -0
- package/skills/handling-sf-data/references/test-data-best-practices.md +104 -0
- package/skills/handling-sf-data/references/test-data-factory-usage.md +290 -0
- package/skills/handling-sf-data/references/test-data-patterns.md +98 -0
- package/skills/handling-sf-data/scripts/soql_validator.py +292 -0
- package/skills/handling-sf-data/scripts/validate_data_operation.py +379 -0
- package/skills/harmonizing-datacloud/CREDITS.md +3 -0
- package/skills/harmonizing-datacloud/README.md +31 -0
- package/skills/harmonizing-datacloud/SKILL.md +117 -0
- package/skills/modeling-omnistudio-epc-catalog/CREDITS.md +14 -0
- package/skills/modeling-omnistudio-epc-catalog/README.md +89 -0
- package/skills/modeling-omnistudio-epc-catalog/SKILL.md +395 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/attribute-assignment-template.json +402 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/compiled-attribute-overrides-template.json +43 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/completion-block-template.txt +8 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/decomposition-relationships-template.json +233 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-premium-fttc-simple-offer/Business-Internet-Premium-FTTC_AttributeAssignments.json +514 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-premium-fttc-simple-offer/Business-Internet-Premium-FTTC_CompiledAttributeOverrides.json +21 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-premium-fttc-simple-offer/Business-Internet-Premium-FTTC_DataPack.json +649 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-premium-fttc-simple-offer/Business-Internet-Premium-FTTC_DecompositionRelationships.json +200 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-premium-fttc-simple-offer/Business-Internet-Premium-FTTC_ObjectFieldAttributes.json +138 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-premium-fttc-simple-offer/Business-Internet-Premium-FTTC_OrchestrationScenarios.json +54 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-premium-fttc-simple-offer/Business-Internet-Premium-FTTC_OverrideDefinitions.json +266 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-premium-fttc-simple-offer/Business-Internet-Premium-FTTC_ParentKeys.json +23 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-premium-fttc-simple-offer/Business-Internet-Premium-FTTC_PriceListEntries.json +54 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-premium-fttc-simple-offer/Business-Internet-Premium-FTTC_PricebookEntries.json +35 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-premium-fttc-simple-offer/Business-Internet-Premium-FTTC_ProductChildItems.json +34 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-premium-fttc-simple-offer/Business-Internet-Premium-FTTC_RuleAssignments.json +21 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-pro-vpl-simple-offer/Business-Internet-Pro-VPL_AttributeAssignments.json +410 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-pro-vpl-simple-offer/Business-Internet-Pro-VPL_DataPack.json +535 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-pro-vpl-simple-offer/Business-Internet-Pro-VPL_DecompositionRelationships.json +35 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-pro-vpl-simple-offer/Business-Internet-Pro-VPL_ObjectFieldAttributes.json +138 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-pro-vpl-simple-offer/Business-Internet-Pro-VPL_OrchestrationScenarios.json +28 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-pro-vpl-simple-offer/Business-Internet-Pro-VPL_ParentKeys.json +23 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-pro-vpl-simple-offer/Business-Internet-Pro-VPL_PriceListEntries.json +220 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-pro-vpl-simple-offer/Business-Internet-Pro-VPL_PricebookEntries.json +35 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-pro-vpl-simple-offer/Business-Internet-Pro-VPL_ProductChildItems.json +414 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/examples/samsung-galaxy-s22-bundle/Samsung-Galaxy-S22-Bundle_AttributeAssignments.json +382 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/examples/samsung-galaxy-s22-bundle/Samsung-Galaxy-S22-Bundle_DataPack.json +565 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/examples/samsung-galaxy-s22-bundle/Samsung-Galaxy-S22-Bundle_DecompositionRelationships.json +35 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/examples/samsung-galaxy-s22-bundle/Samsung-Galaxy-S22-Bundle_ObjectFieldAttributes.json +104 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/examples/samsung-galaxy-s22-bundle/Samsung-Galaxy-S22-Bundle_OrchestrationScenarios.json +28 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/examples/samsung-galaxy-s22-bundle/Samsung-Galaxy-S22-Bundle_ParentKeys.json +13 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/examples/samsung-galaxy-s22-bundle/Samsung-Galaxy-S22-Bundle_PriceListEntries.json +106 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/examples/samsung-galaxy-s22-bundle/Samsung-Galaxy-S22-Bundle_PricebookEntries.json +35 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/examples/samsung-galaxy-s22-bundle/Samsung-Galaxy-S22-Bundle_ProductChildItems.json +72 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/examples/static-ip-simple-offer/Static-IP_AttributeAssignments.json +142 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/examples/static-ip-simple-offer/Static-IP_DataPack.json +377 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/examples/static-ip-simple-offer/Static-IP_DecompositionRelationships.json +35 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/examples/static-ip-simple-offer/Static-IP_ObjectFieldAttributes.json +36 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/examples/static-ip-simple-offer/Static-IP_ParentKeys.json +8 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/examples/static-ip-simple-offer/Static-IP_PriceListEntries.json +54 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/examples/static-ip-simple-offer/Static-IP_PricebookEntries.json +35 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/examples/static-ip-simple-offer/Static-IP_ProductChildItems.json +34 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/object-field-attributes-template.json +138 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/orchestration-scenarios-template.json +54 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/override-definitions-template.json +134 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/parent-keys-template.json +29 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/price-list-entries-template.json +158 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/pricebook-entries-template.json +35 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/product-child-item-template.json +338 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/product2-offer-template.json +527 -0
- package/skills/modeling-omnistudio-epc-catalog/examples/.gitkeep +1 -0
- package/skills/modeling-omnistudio-epc-catalog/examples/business-internet-plus-bundle/Business-Internet-Plus_AttributeAssignments.json +95 -0
- package/skills/modeling-omnistudio-epc-catalog/examples/business-internet-plus-bundle/Business-Internet-Plus_CompiledAttributeOverrides.json +1 -0
- package/skills/modeling-omnistudio-epc-catalog/examples/business-internet-plus-bundle/Business-Internet-Plus_DataPack.json +214 -0
- package/skills/modeling-omnistudio-epc-catalog/examples/business-internet-plus-bundle/Business-Internet-Plus_DecompositionRelationships.json +28 -0
- package/skills/modeling-omnistudio-epc-catalog/examples/business-internet-plus-bundle/Business-Internet-Plus_ObjectFieldAttributes.json +98 -0
- package/skills/modeling-omnistudio-epc-catalog/examples/business-internet-plus-bundle/Business-Internet-Plus_OrchestrationScenarios.json +22 -0
- package/skills/modeling-omnistudio-epc-catalog/examples/business-internet-plus-bundle/Business-Internet-Plus_OverrideDefinitions.json +1 -0
- package/skills/modeling-omnistudio-epc-catalog/examples/business-internet-plus-bundle/Business-Internet-Plus_ParentKeys.json +13 -0
- package/skills/modeling-omnistudio-epc-catalog/examples/business-internet-plus-bundle/Business-Internet-Plus_PriceListEntries.json +35 -0
- package/skills/modeling-omnistudio-epc-catalog/examples/business-internet-plus-bundle/Business-Internet-Plus_PricebookEntries.json +28 -0
- package/skills/modeling-omnistudio-epc-catalog/examples/business-internet-plus-bundle/Business-Internet-Plus_ProductChildItems.json +110 -0
- package/skills/modeling-omnistudio-epc-catalog/examples/business-internet-plus-bundle/TRANSCRIPT.md +58 -0
- package/skills/modeling-omnistudio-epc-catalog/references/epc-field-guide.md +90 -0
- package/skills/modeling-omnistudio-epc-catalog/references/naming-conventions.md +80 -0
- package/skills/modeling-omnistudio-epc-catalog/references/scoring-model.md +57 -0
- package/skills/modeling-omnistudio-epc-catalog/scripts/cli-validation-commands.sh +19 -0
- package/skills/modeling-omnistudio-epc-catalog/scripts/sample-invocations.sh +18 -0
- package/skills/orchestrating-datacloud/CREDITS.md +15 -0
- package/skills/orchestrating-datacloud/README.md +129 -0
- package/skills/orchestrating-datacloud/SKILL.md +236 -0
- package/skills/orchestrating-datacloud/UPSTREAM.md +45 -0
- package/skills/orchestrating-datacloud/assets/definitions/activation-target.template.json +5 -0
- package/skills/orchestrating-datacloud/assets/definitions/activation.template.json +7 -0
- package/skills/orchestrating-datacloud/assets/definitions/calculated-insight.template.json +7 -0
- package/skills/orchestrating-datacloud/assets/definitions/data-action-target.template.json +5 -0
- package/skills/orchestrating-datacloud/assets/definitions/data-action.template.json +5 -0
- package/skills/orchestrating-datacloud/assets/definitions/data-graph.template.json +21 -0
- package/skills/orchestrating-datacloud/assets/definitions/data-stream.template.json +55 -0
- package/skills/orchestrating-datacloud/assets/definitions/dmo.template.json +17 -0
- package/skills/orchestrating-datacloud/assets/definitions/identity-resolution.template.json +30 -0
- package/skills/orchestrating-datacloud/assets/definitions/mapping.template.json +14 -0
- package/skills/orchestrating-datacloud/assets/definitions/relationship.template.json +12 -0
- package/skills/orchestrating-datacloud/assets/definitions/search-index.template.json +9 -0
- package/skills/orchestrating-datacloud/assets/definitions/segment.template.json +16 -0
- package/skills/orchestrating-datacloud/references/feature-readiness.md +157 -0
- package/skills/orchestrating-datacloud/references/plugin-setup.md +140 -0
- package/skills/orchestrating-datacloud/scripts/bootstrap-plugin.sh +53 -0
- package/skills/orchestrating-datacloud/scripts/diagnose-org.mjs +511 -0
- package/skills/orchestrating-datacloud/scripts/generate-manifest.mjs +68 -0
- package/skills/orchestrating-datacloud/scripts/verify-plugin.sh +58 -0
- package/skills/preparing-datacloud/CREDITS.md +7 -0
- package/skills/preparing-datacloud/README.md +51 -0
- package/skills/preparing-datacloud/SKILL.md +191 -0
- package/skills/preparing-datacloud/examples/ingestion-api/.env.example +8 -0
- package/skills/preparing-datacloud/examples/ingestion-api/README.md +48 -0
- package/skills/preparing-datacloud/examples/ingestion-api/send-data.py +144 -0
- package/skills/querying-soql/CREDITS.md +21 -0
- package/skills/querying-soql/README.md +41 -0
- package/skills/querying-soql/SKILL.md +143 -0
- package/skills/querying-soql/assets/aggregate-queries.soql +242 -0
- package/skills/querying-soql/assets/basic-queries.soql +188 -0
- package/skills/querying-soql/assets/bulkified-query-pattern.cls +280 -0
- package/skills/querying-soql/assets/optimization-patterns.soql +259 -0
- package/skills/querying-soql/assets/relationship-queries.soql +203 -0
- package/skills/querying-soql/assets/selector-class.cls +219 -0
- package/skills/querying-soql/references/anti-patterns.md +348 -0
- package/skills/querying-soql/references/cli-commands.md +358 -0
- package/skills/querying-soql/references/field-coverage-rules.md +514 -0
- package/skills/querying-soql/references/query-optimization.md +142 -0
- package/skills/querying-soql/references/selector-patterns.md +479 -0
- package/skills/querying-soql/references/soql-reference.md +227 -0
- package/skills/querying-soql/references/soql-syntax-reference.md +208 -0
- package/skills/querying-soql/scripts/post-tool-validate.py +322 -0
- package/skills/retrieving-datacloud/CREDITS.md +7 -0
- package/skills/retrieving-datacloud/README.md +44 -0
- package/skills/retrieving-datacloud/SKILL.md +120 -0
- package/skills/retrieving-datacloud/examples/search-indexes/hybrid-structured.json +44 -0
- package/skills/retrieving-datacloud/examples/search-indexes/vector-knowledge.json +43 -0
- package/skills/running-apex-tests/CREDITS.md +22 -0
- package/skills/running-apex-tests/README.md +94 -0
- package/skills/running-apex-tests/SKILL.md +158 -0
- package/skills/running-apex-tests/assets/basic-test.cls +169 -0
- package/skills/running-apex-tests/assets/bulk-test.cls +255 -0
- package/skills/running-apex-tests/assets/dml-mock.cls +339 -0
- package/skills/running-apex-tests/assets/mock-callout-test.cls +353 -0
- package/skills/running-apex-tests/assets/stub-provider-example.cls +364 -0
- package/skills/running-apex-tests/assets/test-data-factory.cls +328 -0
- package/skills/running-apex-tests/hooks/scripts/parse-test-results.py +364 -0
- package/skills/running-apex-tests/references/cli-commands.md +289 -0
- package/skills/running-apex-tests/references/mocking-patterns.md +500 -0
- package/skills/running-apex-tests/references/performance-optimization.md +283 -0
- package/skills/running-apex-tests/references/test-fix-loop.md +49 -0
- package/skills/running-apex-tests/references/test-patterns.md +154 -0
- package/skills/running-apex-tests/references/testing-best-practices.md +509 -0
- package/skills/segmenting-datacloud/CREDITS.md +3 -0
- package/skills/segmenting-datacloud/README.md +36 -0
- package/skills/segmenting-datacloud/SKILL.md +115 -0
|
@@ -0,0 +1,376 @@
|
|
|
1
|
+
<!-- Parent: deploying-metadata/SKILL.md -->
|
|
2
|
+
# Trigger Deployment Safety Guide
|
|
3
|
+
|
|
4
|
+
## Overview
|
|
5
|
+
|
|
6
|
+
This guide covers deployment considerations for triggers, focusing on cascade failures, atomicity patterns, and async decoupling strategies.
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## 1. Understanding Cascade Failures
|
|
11
|
+
|
|
12
|
+
### What Are Cascade Failures?
|
|
13
|
+
|
|
14
|
+
When an exception in one trigger causes rollback of operations from preceding triggers in the chain.
|
|
15
|
+
|
|
16
|
+
```
|
|
17
|
+
Account Insert → AccountTrigger → ContactTrigger → OpportunityTrigger
|
|
18
|
+
✓ ✓ ✗ (Exception)
|
|
19
|
+
|
|
20
|
+
All three operations ROLL BACK
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
### Default Behavior
|
|
24
|
+
|
|
25
|
+
- Uncaught exceptions in triggers cause rollback of **all** operations in the transaction
|
|
26
|
+
- This includes operations from other triggers that fired successfully
|
|
27
|
+
- This behavior may or may not be desired depending on business requirements
|
|
28
|
+
|
|
29
|
+
### When Cascade Failure is DESIRED
|
|
30
|
+
|
|
31
|
+
- All operations represent ONE atomic business process
|
|
32
|
+
- Example: Order with line items must be complete or not exist
|
|
33
|
+
- Same business unit/persona owns all the data
|
|
34
|
+
|
|
35
|
+
```apex
|
|
36
|
+
// DESIRED cascade: Order and OrderItems must both succeed
|
|
37
|
+
trigger OrderTrigger on Order__c (after insert) {
|
|
38
|
+
// If this fails, we WANT the Order insert to roll back
|
|
39
|
+
List<OrderItem__c> items = createDefaultLineItems(Trigger.new);
|
|
40
|
+
insert items; // Exception here rolls back Order insert - GOOD
|
|
41
|
+
}
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
### When Cascade Failure is PROBLEMATIC
|
|
45
|
+
|
|
46
|
+
- Operations represent INDEPENDENT business processes
|
|
47
|
+
- Example: Creating account + syncing to external CRM
|
|
48
|
+
- Different business units own different parts of the process
|
|
49
|
+
|
|
50
|
+
```apex
|
|
51
|
+
// PROBLEMATIC cascade: CRM sync failure shouldn't prevent Account creation
|
|
52
|
+
trigger AccountTrigger on Account (after insert) {
|
|
53
|
+
// If CRM sync fails, Account creation also fails - BAD
|
|
54
|
+
CRMService.syncNewAccounts(Trigger.new); // Exception here rolls back Account
|
|
55
|
+
}
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
---
|
|
59
|
+
|
|
60
|
+
## 2. Atomicity Patterns
|
|
61
|
+
|
|
62
|
+
### Explicit Savepoints
|
|
63
|
+
|
|
64
|
+
Use `Database.setSavepoint()` for explicit transaction control within a single process.
|
|
65
|
+
|
|
66
|
+
```apex
|
|
67
|
+
/**
|
|
68
|
+
* Demonstrates explicit atomicity control for cross-object operations
|
|
69
|
+
*/
|
|
70
|
+
public class AccountOwnership {
|
|
71
|
+
|
|
72
|
+
/**
|
|
73
|
+
* Reassigns all related records when account owner changes.
|
|
74
|
+
* This is an ATOMIC operation - all changes succeed or all roll back.
|
|
75
|
+
*/
|
|
76
|
+
public static void reassignRelatedRecords(
|
|
77
|
+
List<Account> accountsWithNewOwner,
|
|
78
|
+
Map<Id, Account> oldAccountsById
|
|
79
|
+
) {
|
|
80
|
+
// Create savepoint for atomic operation
|
|
81
|
+
Savepoint sp = Database.setSavepoint();
|
|
82
|
+
|
|
83
|
+
try {
|
|
84
|
+
Map<Id, Id> newOwnerByAccountId = buildOwnerMap(accountsWithNewOwner);
|
|
85
|
+
|
|
86
|
+
// Step 1: Reassign opportunities
|
|
87
|
+
reassignOpportunities(newOwnerByAccountId);
|
|
88
|
+
|
|
89
|
+
// Step 2: Reassign cases
|
|
90
|
+
reassignCases(newOwnerByAccountId);
|
|
91
|
+
|
|
92
|
+
// Step 3: Create transition tasks
|
|
93
|
+
createOwnerTransitionTasks(accountsWithNewOwner, oldAccountsById);
|
|
94
|
+
|
|
95
|
+
} catch (Exception e) {
|
|
96
|
+
// Rollback ALL changes if ANY step fails
|
|
97
|
+
Database.rollback(sp);
|
|
98
|
+
|
|
99
|
+
// Log the failure for investigation
|
|
100
|
+
ErrorLogger.log('AccountOwnership.reassignRelatedRecords', e);
|
|
101
|
+
|
|
102
|
+
// Re-throw to inform the caller
|
|
103
|
+
throw new AccountOwnershipException(
|
|
104
|
+
'Failed to reassign related records: ' + e.getMessage()
|
|
105
|
+
);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
### When to Use Savepoints
|
|
112
|
+
|
|
113
|
+
| Scenario | Use Savepoint? | Reason |
|
|
114
|
+
|----------|---------------|--------|
|
|
115
|
+
| Multi-object update in same trigger | Yes | Ensures consistency |
|
|
116
|
+
| Order + OrderItems creation | Yes | Business atomicity required |
|
|
117
|
+
| Account + CRM sync | No | Use async decoupling instead |
|
|
118
|
+
| Validation that spans objects | Yes | All-or-nothing validation |
|
|
119
|
+
|
|
120
|
+
---
|
|
121
|
+
|
|
122
|
+
## 3. Async Decoupling Patterns
|
|
123
|
+
|
|
124
|
+
### The Problem
|
|
125
|
+
|
|
126
|
+
After-trigger logic that represents an independent business process can cause cascade failures.
|
|
127
|
+
|
|
128
|
+
### Solution: Queueable Jobs
|
|
129
|
+
|
|
130
|
+
```apex
|
|
131
|
+
/**
|
|
132
|
+
* Queueable job for processing that should not block the main transaction
|
|
133
|
+
*/
|
|
134
|
+
public class AccountSyncQueueable implements Queueable, Database.AllowsCallouts {
|
|
135
|
+
|
|
136
|
+
private Set<Id> accountIds;
|
|
137
|
+
private TriggerOperation operationType;
|
|
138
|
+
|
|
139
|
+
public AccountSyncQueueable(Set<Id> accountIds, TriggerOperation operationType) {
|
|
140
|
+
this.accountIds = accountIds;
|
|
141
|
+
this.operationType = operationType;
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
public void execute(QueueableContext context) {
|
|
145
|
+
try {
|
|
146
|
+
List<Account> accounts = [
|
|
147
|
+
SELECT Id, Name, Website, Industry, BillingAddress
|
|
148
|
+
FROM Account
|
|
149
|
+
WHERE Id IN :accountIds
|
|
150
|
+
];
|
|
151
|
+
|
|
152
|
+
switch on operationType {
|
|
153
|
+
when AFTER_INSERT {
|
|
154
|
+
ExternalCRM.createAccounts(accounts);
|
|
155
|
+
}
|
|
156
|
+
when AFTER_UPDATE {
|
|
157
|
+
ExternalCRM.updateAccounts(accounts);
|
|
158
|
+
}
|
|
159
|
+
when AFTER_DELETE {
|
|
160
|
+
ExternalCRM.deleteAccounts(accountIds);
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
} catch (Exception e) {
|
|
165
|
+
// Log error but don't fail - this is independent of main transaction
|
|
166
|
+
ErrorLogger.log('AccountSyncQueueable', e, accountIds);
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
### Usage in Trigger Handler
|
|
173
|
+
|
|
174
|
+
```apex
|
|
175
|
+
public void afterInsert(List<Account> newAccounts, Map<Id, Account> newAccountsById) {
|
|
176
|
+
// Synchronous operations that SHOULD block
|
|
177
|
+
AccountNotifications.notifySalesTeam(newAccounts);
|
|
178
|
+
|
|
179
|
+
// Async operations that should NOT block main transaction
|
|
180
|
+
if (canEnqueueJob()) {
|
|
181
|
+
System.enqueueJob(new AccountSyncQueueable(
|
|
182
|
+
newAccountsById.keySet(),
|
|
183
|
+
TriggerOperation.AFTER_INSERT
|
|
184
|
+
));
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
private Boolean canEnqueueJob() {
|
|
189
|
+
return !System.isBatch() &&
|
|
190
|
+
!System.isFuture() &&
|
|
191
|
+
Limits.getQueueableJobs() < Limits.getLimitQueueableJobs();
|
|
192
|
+
}
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
### Platform Events for Maximum Decoupling
|
|
196
|
+
|
|
197
|
+
```apex
|
|
198
|
+
// Publisher (in trigger)
|
|
199
|
+
EventBus.publish(new Account_Changed__e(
|
|
200
|
+
Account_Id__c = account.Id,
|
|
201
|
+
Change_Type__c = 'INSERT'
|
|
202
|
+
));
|
|
203
|
+
|
|
204
|
+
// Subscriber (separate trigger on platform event)
|
|
205
|
+
trigger AccountChangedSubscriber on Account_Changed__e (after insert) {
|
|
206
|
+
// Process events - failures here don't affect original transaction
|
|
207
|
+
List<Id> accountIds = new List<Id>();
|
|
208
|
+
for (Account_Changed__e event : Trigger.new) {
|
|
209
|
+
accountIds.add(event.Account_Id__c);
|
|
210
|
+
}
|
|
211
|
+
// Sync to external system
|
|
212
|
+
}
|
|
213
|
+
```
|
|
214
|
+
|
|
215
|
+
### Decoupling Decision Matrix
|
|
216
|
+
|
|
217
|
+
| Business Process | Same User Persona? | Failure Impact | Recommendation |
|
|
218
|
+
|-----------------|-------------------|----------------|----------------|
|
|
219
|
+
| Order + Line Items | Yes | Must be atomic | Synchronous + Savepoint |
|
|
220
|
+
| Account + Audit Log | Yes | Can retry | Queueable |
|
|
221
|
+
| Account + External CRM | No | Independent | Platform Event |
|
|
222
|
+
| Contact + Marketing Cloud | No | Independent | Platform Event |
|
|
223
|
+
| Record + Email Notification | Yes | Non-critical | @future |
|
|
224
|
+
|
|
225
|
+
---
|
|
226
|
+
|
|
227
|
+
## 4. Pre-Deployment Checklist
|
|
228
|
+
|
|
229
|
+
### Trigger Cascade Analysis
|
|
230
|
+
|
|
231
|
+
Before deploying triggers, analyze the cascade impact:
|
|
232
|
+
|
|
233
|
+
```
|
|
234
|
+
CHECKLIST:
|
|
235
|
+
□ List all triggers that fire on the same transaction
|
|
236
|
+
□ Identify which operations are atomic (same business process)
|
|
237
|
+
□ Identify which operations are independent (different processes)
|
|
238
|
+
□ Verify exception handling in each trigger
|
|
239
|
+
□ Check for recursive trigger prevention
|
|
240
|
+
□ Review async job usage and limits
|
|
241
|
+
```
|
|
242
|
+
|
|
243
|
+
### Questions to Answer
|
|
244
|
+
|
|
245
|
+
1. **What triggers will fire together?**
|
|
246
|
+
- Map the full trigger chain for each DML operation
|
|
247
|
+
- Include triggers on related objects (parent-child)
|
|
248
|
+
|
|
249
|
+
2. **What happens if each trigger fails?**
|
|
250
|
+
- Which operations will roll back?
|
|
251
|
+
- Is that the desired behavior?
|
|
252
|
+
|
|
253
|
+
3. **Are there external system calls?**
|
|
254
|
+
- Should they be async?
|
|
255
|
+
- What happens if they fail?
|
|
256
|
+
|
|
257
|
+
4. **What about governor limits?**
|
|
258
|
+
- How many DML statements in the chain?
|
|
259
|
+
- How many SOQL queries?
|
|
260
|
+
- Can bulk operations stay within limits?
|
|
261
|
+
|
|
262
|
+
---
|
|
263
|
+
|
|
264
|
+
## 5. Testing Cascade Scenarios
|
|
265
|
+
|
|
266
|
+
### Test Cascade Success
|
|
267
|
+
|
|
268
|
+
```apex
|
|
269
|
+
@IsTest
|
|
270
|
+
static void testTriggerChain_AllSucceed() {
|
|
271
|
+
Test.startTest();
|
|
272
|
+
Account acc = new Account(Name = 'Test');
|
|
273
|
+
insert acc; // Should fire AccountTrigger, create child records, etc.
|
|
274
|
+
Test.stopTest();
|
|
275
|
+
|
|
276
|
+
// Verify all expected records were created
|
|
277
|
+
Assert.areEqual(1, [SELECT COUNT() FROM Contact WHERE AccountId = :acc.Id]);
|
|
278
|
+
Assert.areEqual(1, [SELECT COUNT() FROM Task WHERE WhatId = :acc.Id]);
|
|
279
|
+
}
|
|
280
|
+
```
|
|
281
|
+
|
|
282
|
+
### Test Cascade Failure (Expected Rollback)
|
|
283
|
+
|
|
284
|
+
```apex
|
|
285
|
+
@IsTest
|
|
286
|
+
static void testTriggerChain_ChildFailure_RollsBack() {
|
|
287
|
+
// Configure scenario that will cause child trigger to fail
|
|
288
|
+
Test.startTest();
|
|
289
|
+
try {
|
|
290
|
+
Account acc = new Account(Name = 'Trigger Failure Test');
|
|
291
|
+
insert acc;
|
|
292
|
+
Assert.fail('Expected DmlException');
|
|
293
|
+
} catch (DmlException e) {
|
|
294
|
+
// Expected - verify Account was NOT created
|
|
295
|
+
Assert.areEqual(0, [SELECT COUNT() FROM Account WHERE Name = 'Trigger Failure Test']);
|
|
296
|
+
}
|
|
297
|
+
Test.stopTest();
|
|
298
|
+
}
|
|
299
|
+
```
|
|
300
|
+
|
|
301
|
+
### Test Async Decoupling
|
|
302
|
+
|
|
303
|
+
```apex
|
|
304
|
+
@IsTest
|
|
305
|
+
static void testAccountInsert_CRMSyncAsync_DoesNotBlock() {
|
|
306
|
+
// Even if CRM sync would fail, Account should be created
|
|
307
|
+
Test.startTest();
|
|
308
|
+
Account acc = new Account(Name = 'Async Test');
|
|
309
|
+
insert acc;
|
|
310
|
+
Test.stopTest();
|
|
311
|
+
|
|
312
|
+
// Account should exist regardless of async job outcome
|
|
313
|
+
Assert.areEqual(1, [SELECT COUNT() FROM Account WHERE Name = 'Async Test']);
|
|
314
|
+
|
|
315
|
+
// Verify async job was enqueued
|
|
316
|
+
Assert.areEqual(1, [SELECT COUNT() FROM AsyncApexJob WHERE JobType = 'Queueable']);
|
|
317
|
+
}
|
|
318
|
+
```
|
|
319
|
+
|
|
320
|
+
---
|
|
321
|
+
|
|
322
|
+
## 6. Deployment Commands for Trigger Safety
|
|
323
|
+
|
|
324
|
+
### Validate Before Deploying
|
|
325
|
+
|
|
326
|
+
```bash
|
|
327
|
+
# Always validate triggers before deploying
|
|
328
|
+
sf project deploy start --dry-run \
|
|
329
|
+
--source-dir force-app/main/default/triggers \
|
|
330
|
+
--source-dir force-app/main/default/classes \
|
|
331
|
+
--test-level RunLocalTests \
|
|
332
|
+
--target-org alias
|
|
333
|
+
```
|
|
334
|
+
|
|
335
|
+
### Deploy with Test Coverage
|
|
336
|
+
|
|
337
|
+
```bash
|
|
338
|
+
# Deploy triggers with their test classes
|
|
339
|
+
sf project deploy start \
|
|
340
|
+
--source-dir force-app/main/default/triggers \
|
|
341
|
+
--source-dir force-app/main/default/classes \
|
|
342
|
+
--test-level RunSpecifiedTests \
|
|
343
|
+
--tests AccountTriggerTest,ContactTriggerTest \
|
|
344
|
+
--target-org alias
|
|
345
|
+
```
|
|
346
|
+
|
|
347
|
+
### Verify Trigger Order
|
|
348
|
+
|
|
349
|
+
After deployment, verify trigger execution order if you have multiple triggers on the same object:
|
|
350
|
+
|
|
351
|
+
```bash
|
|
352
|
+
# Query trigger execution order (via Debug Logs)
|
|
353
|
+
sf apex tail log --target-org alias
|
|
354
|
+
|
|
355
|
+
# Or check in Setup: Object Manager → [Object] → Triggers
|
|
356
|
+
```
|
|
357
|
+
|
|
358
|
+
---
|
|
359
|
+
|
|
360
|
+
## Summary
|
|
361
|
+
|
|
362
|
+
| Pattern | Use Case | Trade-off |
|
|
363
|
+
|---------|----------|-----------|
|
|
364
|
+
| **Default (Cascade)** | Atomic business processes | Simple but all-or-nothing |
|
|
365
|
+
| **Savepoint** | Controlled rollback within handler | More code, explicit control |
|
|
366
|
+
| **Queueable** | Independent async processes | Decoupled but async limits |
|
|
367
|
+
| **Platform Event** | Maximum decoupling | More infrastructure |
|
|
368
|
+
| **@future** | Simple fire-and-forget | Limited parameters |
|
|
369
|
+
|
|
370
|
+
### Key Principles
|
|
371
|
+
|
|
372
|
+
1. **Make atomicity decisions explicit** - Don't rely on default behavior accidentally
|
|
373
|
+
2. **Decouple independent processes** - Use async for cross-domain operations
|
|
374
|
+
3. **Test cascade scenarios** - Verify both success and failure paths
|
|
375
|
+
4. **Document trigger chains** - Future maintainers need to understand dependencies
|
|
376
|
+
5. **Validate before deploying** - Use `--dry-run` to catch issues early
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
# deploying-omnistudio-datapacks
|
|
2
|
+
|
|
3
|
+
Salesforce Industries DataPack deployment automation using Vlocity Build. Export, validate, deploy, retry, and compare OmniStudio/Vlocity DataPacks with predictable workflow guardrails.
|
|
4
|
+
|
|
5
|
+
## Features
|
|
6
|
+
|
|
7
|
+
- **DataPack Deployment Workflow**: Run `packExport`, `packDeploy`, `packRetry`, `packContinue`, and `packGetDiffs`
|
|
8
|
+
- **Job File Guidance**: Build deterministic `projectPath`, `expansionPath`, `queries`, and `manifest` job patterns
|
|
9
|
+
- **Validation-First Operations**: Gate deployment with `validateLocalData` and dependency checks
|
|
10
|
+
- **Failure Triage**: Diagnose matching-key, GlobalKey, dependency, and configuration drift failures
|
|
11
|
+
- **CI/CD Patterns**: Support manifest-driven and git-aware deployment sequencing
|
|
12
|
+
|
|
13
|
+
## Usage
|
|
14
|
+
|
|
15
|
+
Invoke this skill when working with OmniStudio/Vlocity DataPack deployments:
|
|
16
|
+
|
|
17
|
+
```
|
|
18
|
+
Skill: deploying-omnistudio-datapacks
|
|
19
|
+
Request: "Deploy my OmniStudio DataPacks to UAT using Vlocity Build and include retry guidance."
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
## Common Operations
|
|
23
|
+
|
|
24
|
+
| Operation | Example Request |
|
|
25
|
+
|-----------|-----------------|
|
|
26
|
+
| Export | "Export DataPacks from source org with this job file." |
|
|
27
|
+
| Validate local files | "Run pre-deploy validation and identify key issues." |
|
|
28
|
+
| Deploy | "Deploy DataPacks to target org using packDeploy." |
|
|
29
|
+
| Retry failures | "Run packRetry and summarize what remains." |
|
|
30
|
+
| Resume interrupted run | "Continue the failed deployment job." |
|
|
31
|
+
| Compare with target | "Run packGetDiffs and report drift." |
|
|
32
|
+
|
|
33
|
+
## Key Commands
|
|
34
|
+
|
|
35
|
+
```bash
|
|
36
|
+
# Validate local DataPack integrity
|
|
37
|
+
vlocity -sfdx.username [sourceAlias] -job [jobFile].yaml validateLocalData
|
|
38
|
+
|
|
39
|
+
# Export from source
|
|
40
|
+
vlocity -sfdx.username [sourceAlias] -job [jobFile].yaml packExport
|
|
41
|
+
|
|
42
|
+
# Deploy to target
|
|
43
|
+
vlocity -sfdx.username [targetAlias] -job [jobFile].yaml packDeploy
|
|
44
|
+
|
|
45
|
+
# Retry failed DataPacks
|
|
46
|
+
vlocity -sfdx.username [targetAlias] -job [jobFile].yaml packRetry
|
|
47
|
+
|
|
48
|
+
# Continue interrupted execution
|
|
49
|
+
vlocity -sfdx.username [targetAlias] -job [jobFile].yaml packContinue
|
|
50
|
+
|
|
51
|
+
# Compare local files to target org
|
|
52
|
+
vlocity -sfdx.username [targetAlias] -job [jobFile].yaml packGetDiffs
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
## Best Practices
|
|
56
|
+
|
|
57
|
+
| Rule | Details |
|
|
58
|
+
|------|---------|
|
|
59
|
+
| Validate first | Run `validateLocalData` before deploy |
|
|
60
|
+
| Keep scope minimal | Prefer manifest/key-scoped deploys for safer rollouts |
|
|
61
|
+
| Retry intentionally | Use `packRetry` while error count is decreasing |
|
|
62
|
+
| Preserve key strategy | Keep matching keys and GlobalKeys consistent across orgs |
|
|
63
|
+
| Compare post-deploy | Run `packGetDiffs` to verify target parity |
|
|
64
|
+
|
|
65
|
+
## Cross-Skill Integration
|
|
66
|
+
|
|
67
|
+
| Related Skill | When to Use |
|
|
68
|
+
|---------------|-------------|
|
|
69
|
+
| deploying-metadata | Deploy non-DataPack Salesforce metadata with `sf project deploy` |
|
|
70
|
+
| building-omnistudio-omniscript | Author OmniScripts before deployment |
|
|
71
|
+
| building-omnistudio-flexcard | Build FlexCards before deployment |
|
|
72
|
+
| building-omnistudio-integration-procedure | Build Integration Procedures before deployment |
|
|
73
|
+
| debugging-apex-logs | Investigate runtime/triggers/log failures surfaced during deploy |
|
|
74
|
+
|
|
75
|
+
## Documentation
|
|
76
|
+
|
|
77
|
+
- [SKILL.md](SKILL.md) - Full DataPack deployment workflow and operating rules
|
|
78
|
+
- [references/job-file-template.md](references/job-file-template.md) - Baseline job file patterns
|
|
79
|
+
- [references/troubleshooting-matrix.md](references/troubleshooting-matrix.md) - Common failures and fix directions
|
|
80
|
+
- [examples/business-internet-plus-bundle/TRANSCRIPT.md](examples/business-internet-plus-bundle/TRANSCRIPT.md) - Validation planning/execution transcript and outcomes
|
|
81
|
+
- [examples/business-internet-plus-bundle-deploy/TRANSCRIPT.md](examples/business-internet-plus-bundle-deploy/TRANSCRIPT.md) - Deployment execution transcript with packDeploy/packRetry results
|
|
82
|
+
|
|
83
|
+
## Requirements
|
|
84
|
+
|
|
85
|
+
- Node.js 18+
|
|
86
|
+
- Vlocity Build CLI (`npm install --global vlocity`)
|
|
87
|
+
- Salesforce CLI v2 (for org auth and context)
|
|
88
|
+
- Source and target org access
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: deploying-omnistudio-datapacks
|
|
3
|
+
description: "Salesforce Industries DataPack deployment automation using Vlocity Build. TRIGGER when: user deploys or validates OmniStudio/Vlocity DataPacks with vlocity commands (packDeploy/packRetry/packExport/packGetDiffs), sets up DataPack CI/CD pipelines, or troubleshoots DataPack migration errors. DO NOT TRIGGER when: deploying Salesforce metadata with sf project deploy (use deploying-metadata), authoring OmniStudio artifacts (use building-omnistudio-*), or writing Apex/LWC business logic (use generating-apex/generating-lwc-components)."
|
|
4
|
+
license: MIT
|
|
5
|
+
metadata:
|
|
6
|
+
version: "1.0"
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# deploying-omnistudio-datapacks: Vlocity Build DataPack Deployment
|
|
10
|
+
|
|
11
|
+
Use this skill when the user needs **Vlocity DataPack deployment orchestration**: export/deploy workflow, manifest-driven deploys, failure triage, and CI/CD sequencing for OmniStudio/Industries DataPacks.
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## Scope
|
|
16
|
+
|
|
17
|
+
Use `deploying-omnistudio-datapacks` when work involves:
|
|
18
|
+
- `vlocity packDeploy`, `packRetry`, `packContinue`, `packExport`, `packGetDiffs`, `validateLocalData`
|
|
19
|
+
- DataPack job-file design (`projectPath`, `expansionPath`, `manifest`, `queries`)
|
|
20
|
+
- org-to-org DataPack migration and retry loops
|
|
21
|
+
- troubleshooting DataPack dependency, matching-key, and GlobalKey issues
|
|
22
|
+
|
|
23
|
+
Delegate elsewhere when the user is:
|
|
24
|
+
- deploying standard metadata with `sf project deploy` -> [deploying-metadata](../deploying-metadata/SKILL.md)
|
|
25
|
+
- building OmniScripts, FlexCards, IPs, or Data Mappers -> `building-omnistudio-*`
|
|
26
|
+
- designing Product2 EPC bundles -> [modeling-omnistudio-epc-catalog](../modeling-omnistudio-epc-catalog/SKILL.md)
|
|
27
|
+
- writing Apex/LWC code -> [generating-apex](../generating-apex/SKILL.md), [generating-lwc-components](../generating-lwc-components/SKILL.md)
|
|
28
|
+
|
|
29
|
+
---
|
|
30
|
+
|
|
31
|
+
## Critical Operating Rules
|
|
32
|
+
|
|
33
|
+
- Use **Vlocity Build (`vlocity`)** commands for DataPacks, not `sf project deploy`.
|
|
34
|
+
- Prefer Salesforce CLI auth integration (`-sfdx.username <alias>`) over username/password files when available.
|
|
35
|
+
- Always run a **pre-deploy quality gate** before full deploy:
|
|
36
|
+
1) `validateLocalData`
|
|
37
|
+
2) optional `packGetDiffs`
|
|
38
|
+
3) then `packDeploy`
|
|
39
|
+
- Use `packRetry` repeatedly when error counts are dropping; stop when retries no longer improve results.
|
|
40
|
+
- Keep matching-key strategy and GlobalKey integrity consistent across source and target orgs.
|
|
41
|
+
|
|
42
|
+
---
|
|
43
|
+
|
|
44
|
+
## Required Context to Gather First
|
|
45
|
+
|
|
46
|
+
Ask for or infer:
|
|
47
|
+
- source org and target org aliases
|
|
48
|
+
- job file path and DataPack project path
|
|
49
|
+
- deployment scope (full project, manifest subset, or specific `-key`)
|
|
50
|
+
- whether this is export, deploy, retry, continue, or diff-only
|
|
51
|
+
- namespace model (`%vlocity_namespace%`, `vlocity_cmt`, or core)
|
|
52
|
+
- known constraints (new sandbox bootstrap, trigger behavior, matching key customizations)
|
|
53
|
+
|
|
54
|
+
Preflight checks:
|
|
55
|
+
|
|
56
|
+
```bash
|
|
57
|
+
vlocity help
|
|
58
|
+
sf org list
|
|
59
|
+
sf org display --target-org <alias> --json
|
|
60
|
+
test -f <job-file>.yaml
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
---
|
|
64
|
+
|
|
65
|
+
## Recommended Workflow
|
|
66
|
+
|
|
67
|
+
### 1. Ensure tool readiness
|
|
68
|
+
```bash
|
|
69
|
+
npm install --global vlocity
|
|
70
|
+
vlocity help
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
### 2. Validate project data locally
|
|
74
|
+
```bash
|
|
75
|
+
vlocity -sfdx.username <source-alias> -job <job-file>.yaml validateLocalData
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
Use `--fixLocalGlobalKeys` only when explicitly requested and after explaining impact.
|
|
79
|
+
|
|
80
|
+
### 3. Export from source (when needed)
|
|
81
|
+
```bash
|
|
82
|
+
vlocity -sfdx.username <source-alias> -job <job-file>.yaml packExport
|
|
83
|
+
vlocity -sfdx.username <source-alias> -job <job-file>.yaml packRetry
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
### 4. Deploy to target
|
|
87
|
+
```bash
|
|
88
|
+
vlocity -sfdx.username <target-alias> -job <job-file>.yaml packDeploy
|
|
89
|
+
vlocity -sfdx.username <target-alias> -job <job-file>.yaml packRetry
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
### 5. Continue interrupted jobs
|
|
93
|
+
```bash
|
|
94
|
+
vlocity -sfdx.username <target-alias> -job <job-file>.yaml packContinue
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
### 6. Verify post-deploy parity
|
|
98
|
+
```bash
|
|
99
|
+
vlocity -sfdx.username <target-alias> -job <job-file>.yaml packGetDiffs
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
Job-file starter: [references/job-file-template.md](references/job-file-template.md)
|
|
103
|
+
|
|
104
|
+
---
|
|
105
|
+
|
|
106
|
+
## Gotchas
|
|
107
|
+
|
|
108
|
+
| Error / symptom | Likely cause | Default fix direction |
|
|
109
|
+
|---|---|---|
|
|
110
|
+
| `No match found for ...` | missing dependency in target org | include missing DataPack key and redeploy |
|
|
111
|
+
| `Duplicate Results found for ... GlobalKey` | duplicate records in target | clean duplicates and re-run deploy |
|
|
112
|
+
| `Multiple Imported Records ... same Salesforce Record` | source duplicate matching-key records | remove duplicates in source and re-export |
|
|
113
|
+
| `No Configuration Found` | outdated DataPack settings | run `packUpdateSettings` or enable `autoUpdateSettings` |
|
|
114
|
+
| `Some records were not processed` | settings mismatch / partial dependency state | refresh settings both orgs, then retry |
|
|
115
|
+
| SASS / template compile failures | missing referenced UI template assets | export/deploy referenced template dependencies first |
|
|
116
|
+
|
|
117
|
+
Detailed matrix: [references/troubleshooting-matrix.md](references/troubleshooting-matrix.md)
|
|
118
|
+
|
|
119
|
+
---
|
|
120
|
+
|
|
121
|
+
## CI/CD Guidance
|
|
122
|
+
|
|
123
|
+
Default pipeline shape:
|
|
124
|
+
1. authenticate orgs (`sf org login ...`)
|
|
125
|
+
2. validate local DataPack integrity (`validateLocalData`)
|
|
126
|
+
3. export changed scope (`packExport` or manifest-driven export)
|
|
127
|
+
4. deploy (`packDeploy`)
|
|
128
|
+
5. retry loop (`packRetry`) until stable
|
|
129
|
+
6. compare (`packGetDiffs`) and publish deployment report
|
|
130
|
+
|
|
131
|
+
For incremental deploy optimization, use job-file options such as:
|
|
132
|
+
- `gitCheck: true`
|
|
133
|
+
- `gitCheckKey: <folder>`
|
|
134
|
+
- `manifest` for deterministic scope control
|
|
135
|
+
|
|
136
|
+
---
|
|
137
|
+
|
|
138
|
+
## Cross-Skill Integration
|
|
139
|
+
|
|
140
|
+
| Need | Delegate to | Reason |
|
|
141
|
+
|---|---|---|
|
|
142
|
+
| metadata deploy outside DataPacks | [deploying-metadata](../deploying-metadata/SKILL.md) | Metadata API workflows |
|
|
143
|
+
| OmniStudio component authoring | `building-omnistudio-*` | build artifacts before deploy |
|
|
144
|
+
| EPC product and offer payload authoring | [modeling-omnistudio-epc-catalog](../modeling-omnistudio-epc-catalog/SKILL.md) | Product2/DataPack model quality |
|
|
145
|
+
| Apex trigger/log error diagnosis | [debugging-apex-logs](../debugging-apex-logs/SKILL.md), [generating-apex](../generating-apex/SKILL.md) | automation-side root-cause fixes |
|
|
146
|
+
|
|
147
|
+
---
|
|
148
|
+
|
|
149
|
+
## Output Expectations
|
|
150
|
+
|
|
151
|
+
After completing a DataPack operation, deliver a completion block:
|
|
152
|
+
|
|
153
|
+
```text
|
|
154
|
+
DataPack goal: <export / deploy / retry / diff / ci-cd>
|
|
155
|
+
Source org: <alias or N/A>
|
|
156
|
+
Target org: <alias or N/A>
|
|
157
|
+
Scope: <job file + manifest/key/full>
|
|
158
|
+
Result: <passed / failed / partial>
|
|
159
|
+
Key findings: <errors, dependencies, retries, diffs>
|
|
160
|
+
Next step: <safe follow-up action>
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
---
|
|
164
|
+
|
|
165
|
+
## Reference File Index
|
|
166
|
+
|
|
167
|
+
| File | When to read |
|
|
168
|
+
|------|-------------|
|
|
169
|
+
| `references/job-file-template.md` | Before advising on job file structure — load as baseline configuration reference |
|
|
170
|
+
| `references/troubleshooting-matrix.md` | When user reports deploy failures — load to diagnose DataPack errors and apply fix directions |
|
|
171
|
+
| `examples/business-internet-plus-bundle/TRANSCRIPT.md` | Example of validation planning and execution for a Product2 bundle |
|
|
172
|
+
| `examples/business-internet-plus-bundle/deploy-business-internet-plus-bundle.yaml` | Example job file for scope-limited `validateLocalData` run |
|
|
173
|
+
| `examples/business-internet-plus-bundle-deploy/TRANSCRIPT.md` | Example of full deploy cycle including `packDeploy` and `packRetry` outcomes |
|
|
174
|
+
| `examples/business-internet-plus-bundle-deploy/deploy-business-internet-plus-bundle.yaml` | Example job file for staged deployment with manifest targeting |
|