sf-industry-commoncore-omniscript

OmniStudio OmniScript creation and validation with 120-point scoring. Use when building guided digital experiences, multi-step forms, or interactive processes that orchestrate Integration Procedures and Data Mappers. TRIGGER when: user creates OmniScripts, designs step flows, configures element type

By jaganpro · 989 installs

npx skills add jaganpro/sf-skills --skill sf-industry-commoncore-omniscript

Source repository · Upstream listing

sf industry commoncore omniscript: OmniStudio OmniScript Creation and Validation Expert OmniStudio OmniScript builder for declarative, step based guided digital experiences. OmniScripts are the OmniStudio analog of Screen Flows: multi step, interactive processes that collect input, orchestrate server side logic (Integration Procedures, DataRaptors), and present results to the user — all without code. Quick Reference Scoring : 120 points across 6 categories. Thresholds : ✅ 90+ (Deploy) ⚠️ 67 89 (Review) ❌ <67 (Block fix required) Core Responsibilities 1. OmniScript Generation : Create well structured OmniScripts from requirements, selecting appropriate element types for each step 2. Element Design : Configure PropertySetConfig JSON for each element with correct data binding, validation, and conditional logic 3. Dependency Analysis : Map all references to Integration Procedures, DataRaptors, and embedded OmniScripts before deployment 4. Data Flow Analysis : Trace data through the OmniScript JSON structure — from prefill through user input to final save actions CRITICAL: Orchestration Order sf industry commoncore omnistudio analyze → sf industry commoncore datamapper → sf industry commoncore integration procedure → sf industry commoncore omniscript → sf industry commoncore flexcard (you are here: sf industry commoncore omniscript) OmniScripts consume Integration Procedures and DataRaptors. Build those FIRST. FlexCards may launch OmniScripts — build FlexCards AFTER. Use sf industry commoncore omnistudio analyze to map the full dependency tree before starting. Key Insights Insight Details Type/SubType/Language triplet Uniquely identifies an OmniScript. All three values are required and form the composite key. Example: Type= ServiceRequest , SubType= NewCase , Language= English PropertySetConfig JSON blob containing all element configuration — layout, data binding, validation rules, conditional visibility. This is where the real logic lives Core namespace OmniProcess with IsIntegrationProcedure = false (equivalently OmniProcessType='OmniScript' ). Elements are child OmniProcessElement records Element hierarchy Elements use Level/Order fields for tree structure. Level 0 = Steps, Level 1+ = elements within steps. Order determines sequence within a level Version management Multiple versions can exist; only one can be active per Type/SubType/Language triplet. Activate via the IsActive field Data JSON OmniScripts pass a single JSON data structure through all steps. Elements read from and write to this shared JSON via merge field syntax Workflow Design (5 Phase Pattern) Phase 1: Requirements Gathering Before building, evaluate alternatives : OmniScripts are best for complex, multi step guided processes. For simple single screen data entry, consider Screen Flows. For data display without interaction, consider FlexCards. Ask the user to gather: Type : The process category (e.g., ServiceRequest , Enrollment , ClaimSubmission ) SubType : The specific variation (e.g., NewCase , UpdateAddress , FileAppeal ) Language : Typically English unless multi language support is required Purpose : What business process this OmniScript guides the user through Target org : Org alias for deployment Data sources : Which objects/APIs need to be queried or updated Then : Check existing OmniScripts to avoid duplication, identify reusable Integration Procedures or DataRaptors, and map the dependency chain. Phase 2: Design & Element Selection Design each step and select element types appropriate to the interaction pattern. Container Elements Element Type Purpose Key Config Step Top level container for a group of UI elements; each Step is a page in the wizard chartLabel , knowledgeOptions , show (conditional visibility) Conditional Block Show/hide a group of elements based on conditions conditionType , show expression Loop Block Iterate over a data list and render elements for each item loopData (JSON path to array) Edit Block Inline editing container for tabular data editFields , dataSource Input Elements Element Type Purpose Key Config Text Single line text input label , placeholder , pattern (regex validation) Text Area Multi line text input label , maxLength , rows Number Numeric input with optional formatting label , min , max , step , format Date Date picker label , dateFormat , minDate , maxDate Date/Time Date and time picker label , dateFormat , timeFormat Checkbox Boolean toggle label , defaultValue Radio Radio button group for single selection label , options (static or data driven) Select Dropdown selection label , options , optionSource (static/data) Multi select Multiple item selection label , options , maxSelections Type Ahead Search/autocomplete input label , dataSource , searchField , minCharacters Signature Signature capture pad label , penColor , backgroundColor File File upload label , maxFileSize , allowedExtensions Currency Currency input with locale formatting label , currencyCode , min , max Email Email input with format validation label , placeholder Telephone Phone number input with masking label , mask , placeholder URL URL input with format validation label , placeholder Password Masked text input label , minLength Range Slider input label , min , max , step Time Time picker label , timeFormat Display Elements Element Type Purpose Key Config Text Block Static content display (HTML supported) textContent , HTMLTemplateId Headline Section heading text , level (h1 h6) Aggregate Calculated summary display aggregateExpression , format Disclosure Expandable/collapsible content label , defaultExpanded Image Image display imageURL , altText Chart Data visualization chartType , dataSource Action Elements Element Type Purpose Key Config DataRaptor Extract Action Pull data from Salesforce bundle , inputMap , outputMap DataRaptor Load Action Push data to Salesforce bundle , inputMap Integration Procedure Action Call server side Integration Procedure ipMethod (Type SubType), inputMap , outputMap , remoteOptions Remote Action Call Apex @RemoteAction or REST remoteClass , remoteMethod , inputMap Navigate Action Page navigation or redirection targetType , targetId , URL DocuSign Envelope Action Trigger DocuSign envelope templateId , recipientMap Email Action Send email emailTemplateId , recipientMap Logic Elements Element Type Purpose Key Config Set Values Variable assignment and data transformation elementValueMap (key value pairs) Validation Input validation rules with custom messages validationFormula , errorMessage Formula Calculate values using formula expressions expression , dataType Submit Action Final submission of collected data postMessage , preTransformBundle , postTransformBundle Phase 3: Generation & Validation Build the OmniScript : 1. Create the OmniProcess record with Type, SubType, Language, and OmniProcessType='OmniScript' 2. Create OmniProcessElement child records for each Step (Level=0) 3. Create OmniProcessElement child records for each element within Steps (Level=1+, ordered by Order field) 4. Configure PropertySetConfig JSON for each element 5. Wire action elements to their Integration Procedures / DataRaptors Validation (STRICT MODE) : BLOCK : Missing Type/SubType/Language, circular OmniScript embedding, broken IP/DataRaptor references, missing required PropertySetConfig fields WARN : Steps with no elements, input elements without validation, missing error handling on actions, unused data paths, deeply nested elements ( 4 levels) Validation Report Format (6 Category Scoring 0 120): Phase 4: Deployment 1. Deploy all dependencies first: DataRaptors, Integration Procedures, referenced OmniScripts 2. Retrieve or deploy OmniScript metadata: 3. Activate the OmniScript version after successful deployment 4. Verify activation: Phase 5: Testing Walk through all paths with various data scenarios: Happy path : Complete all steps with valid data, verify submission Validation testing : Submit invalid data at each input, verify error messages Conditional testing : Exercise all conditional blocks and verify show/hide logic Data prefill : Verify DataRaptor Extract Actions populate elements correctly Save for later : Test resume functionality if enabled Navigation : Test back/forward/cancel behavior across all steps Error scenarios : Simulate IP/DataRaptor failures, verify error handling Embedded OmniScripts : Test data passing between parent and child OmniScripts Bulk data : Test with large datasets in Loop Blocks and Type Ahead elements Generation Guardrails (MANDATORY) Anti Pattern Impact Correct Pattern Circular OmniScript embedding Infinite rendering loop Map dependency tree; never embed A in B if B embeds A Unbounded DataRaptor Extract Performance degradation Add filter conditions; limit returned records Missing input validation Bad data entry Add Validation elements or pattern / required on inputs Hardcoded Salesforce IDs Deployment failure across orgs Use merge fields or Custom Settings/Metadata IP Action without error handling Silent failures Configure showError , errorMessage in PropertySetConfig Large images in Text Blocks Slow page load Use Image elements with optimized URLs Too many elements per Step Poor user experience Limit to 7 10 input elements per Step Missing conditional visibility Irrelevant fields shown Use show expressions to hide inapplicable elements DO NOT generate anti patterns even if explicitly requested. Scoring: 120 Points Across 6 Categories Design & Structure (25 points) Check Points Criteria Type/SubType/Language set correctly 5 All three fields populated with meaningful values Step organization 5 Logical grouping, 7 10 elements per step max Element naming 5 Descriptive names following PascalCase convention Conditional logic 5 Proper use of Conditional Blocks and show expressions Version management 5 Clean version history, only one active version Data Integration (20 points) Check Points Criteria DataRaptor references valid 5 All Extract/Load bundles exist and are active Integration Procedure references valid 5 All IP actions reference active IPs Input/Output maps correct 5 Data flows correctly between elements and actions Data prefill configured 5 Initial data loaded before user interaction Error Handling (20 points) Check Points Criteria Action elements have error handling 5 showError configured on all IP/DR actions User facing error messages 5 Clear, actionable error text Validation on required inputs 5 All required fields have validation rules Fallback behavior defined 5 Graceful handling when data sources return empty Performance (20 points) Check Points Criteria No unbounded data fetches 5 All DataRaptor Extracts have filters/limits Lazy loading configured 5 Action elements fire on step entry, not OmniScript load Element count per Step reasonable 5 No Step with 15 elements Conditional rendering used 5 Elements hidden when not app