MCPInstall

omnistudio-datamapper-generate

OmniStudio Data Mapper (formerly DataRaptor) creation and validation with 100-point scoring. Use when building Extract, Transform, Load, or Turbo Extract Data Mappers, mapping Salesforce object fields, or reviewing existing Data Mapper configurations. TRIGGER when: user creates Data Mappers, configures field mappings, works with OmniDataTransform metadata, or asks about DataRaptor/Data Mapper patterns. DO NOT TRIGGER when: building Integration Procedures (use omnistudio-integration-procedure-generate), authoring OmniScripts (use omnistudio-omniscript-generate), or analyzing cross-component dependencies (use omnistudio-dependencies-analyze).

Installs
4.8K
Last 24h
+11
Trending rank
#8355
Security
Pass

Install

Works with every agent the skills CLI supports.

npx skills add https://github.com/forcedotcom/sf-skills --skill omnistudio-datamapper-generate
  1. 01

    Install

    Run the command in your project. The CLI asks which agents to install for.

  2. 02

    Describe the task

    Ask your agent for something this skill covers. It loads omnistudio-datamapper-generate automatically when relevant.

  3. 03

    Review the result

    The agent follows the SKILL.md steps, scripts and references bundled with the skill.

Security audits

Independent scans of the skill's instructions and bundled files.

Gen Agent Trust Hub PassSAFE ·The skill is a specialized development tool for Salesforce OmniStudio Data Mappers. It uses the standard Salesforce CLI (sf) to manage metadata and query information within authorized Salesforce environments. The identified behaviors, including command execution and dynamic metadata generation, are standard practices for Salesforce development and align with the skill's primary purpose. The skill is provided by forcedotcom, the official Salesforce organization.
Socket PassNo alerts
Snyk PassLOW ·Risk: LOW · No issues

SKILL.md

The instructions your agent reads when the skill is triggered.

omnistudio-datamapper-generate: OmniStudio Data Mapper Creation and Validation

Expert OmniStudio Data Mapper developer specializing in Extract, Transform, Load, and Turbo Extract configurations. Generate production-ready, performant, and maintainable Data Mapper definitions with proper field mappings, query optimization, and data integrity safeguards.


Scope

  • In scope: Creating and validating OmniStudio Data Mapper configurations (Extract, Transform, Load, Turbo Extract); field mapping design; query optimization; FLS (Field-Level Security) validation; deployment via platform-metadata-deploy skill
  • Out of scope: Building Integration Procedures (use omnistudio-integration-procedure-generate), authoring OmniScripts (use omnistudio-omniscript-generate), designing FlexCards (use omnistudio-flexcard-generate), analyzing cross-component dependencies (use omnistudio-dependencies-analyze)

Core Responsibilities

  1. Generation: Create Data Mapper configurations (Extract, Transform, Load, Turbo Extract) from requirements
  2. Field Mapping: Design object-to-output field mappings with proper type handling, lookup resolution, and null safety
  3. Dependency Tracking: Identify related OmniStudio components (Integration Procedures, OmniScripts, FlexCards) that consume or feed Data Mappers
  4. Validation & Scoring: Score Data Mapper configurations against 5 categories (0-100 points)

CRITICAL: Orchestration Order

omnistudio-dependencies-analyze -> omnistudio-datamapper-generate -> omnistudio-integration-procedure-generate -> omnistudio-omniscript-generate -> omnistudio-flexcard-generate (you are here: omnistudio-datamapper-generate)

Data Mappers are the data access layer of the OmniStudio stack. They must be created and deployed before Integration Procedures or OmniScripts that reference them. Use omnistudio-dependencies-analyze FIRST to understand existing component dependencies.


Key Insights

InsightDetails
Extract vs Turbo ExtractExtract uses standard SOQL with relationship queries. Turbo Extract uses server-side compiled queries for read-heavy, high-volume scenarios (10x+ faster). Turbo Extract does not support formula fields, related lists, or write operations.
Transform is in-memoryTransform Data Mappers operate entirely in memory with no DML or SOQL. They reshape data structures between steps in an Integration Procedure. Use for JSON-to-JSON transformations, field renaming, and data flattening.
Load = DMLLoad Data Mappers perform insert, update, upsert, or delete operations. They require proper FLS checks and error handling. Always validate field-level security before deploying Load Data Mappers to production.
OmniDataTransform metadataData Mappers are stored as OmniDataTransform and OmniDataTransformItem records. Retrieve and deploy using these metadata type names, not the legacy DataRaptor API names.

Workflow (5-Phase Pattern)

Phase 1: Requirements Gathering

Ask the user to gather:

  • Data Mapper type (Extract, Transform, Load, Turbo Extract)
  • Target Salesforce object(s) and fields
  • Target org alias
  • Consuming component (Integration Procedure, OmniScript, or FlexCard name)
  • Data volume expectations (record counts, frequency)

Then:

  1. Check existing Data Mappers: Glob: **/OmniDataTransform*
  2. Check existing OmniStudio metadata: Glob: **/omnistudio/**
  3. Create a task list

Phase 2: Design & Type Selection

TypeUse CaseNaming PrefixSupports DMLSupports SOQL
ExtractRead data from one or more objects with relationship queriesDR_Extract_NoYes
Turbo ExtractHigh-volume read-only queries, server-side compiledDR_TurboExtract_NoYes (compiled)
TransformIn-memory data reshaping between procedure stepsDR_Transform_NoNo
LoadWrite data (insert, update, upsert, delete)DR_Load_YesNo

Naming Format: [Prefix][Object]_[Purpose] using PascalCase

Examples:

  • DR_Extract_Account_Details -- Extract Account with related Contacts
  • DR_TurboExtract_Case_List -- High-volume Case list for FlexCard
  • DR_Transform_Lead_Flatten -- Flatten nested Lead data structure
  • DR_Load_Opportunity_Create -- Insert Opportunity records

Phase 3: Generation & Validation

For Generation:

  1. Read assets/omni-data-transform-extract.json (Extract), assets/omni-data-transform-transform.json (Transform), or assets/omni-data-transform-load.json (Load) for the OmniDataTransform record template
  2. Read assets/omni-data-transform-item.json for each field mapping (OmniDataTransformItem) template
  3. Configure query filters, sort order, and limits for Extract types
  4. Set up lookup mappings and default values for Load types
  5. Validate field-level security for all mapped fields

For Review:

  1. Read existing Data Mapper configuration
  2. Run validation against best practices
  3. Generate improvement report with specific fixes

Run Validation: Read assets/completion-summary-template.md for the scoring output format and thresholds.


Generation Guardrails (MANDATORY)

BEFORE generating ANY Data Mapper configuration, Claude MUST verify no anti-patterns are introduced.

If ANY of these patterns would be generated, STOP and ask the user:

"I noticed [pattern]. This will cause [problem]. Should I: A) Refactor to use [correct pattern] B) Proceed anyway (not recommended)"

Anti-PatternDetectionImpact
Extracting all fieldsNo field list specified, wildcard selectionPerformance degradation, excessive data transfer
Missing lookup mappingsLoad references lookup field without resolutionDML failure, null foreign key
Writing without FLS checkLoad Data Mapper with no security validationSecurity violation, data corruption in restricted profiles
Unbounded Extract queryNo LIMIT or filter on ExtractGovernor limit failure, timeout on large objects
Transform with side effectsTransform attempting DML or calloutRuntime error, Transform is in-memory only
Hardcoded record IDs15/18-char ID literal in filter or mappingDeployment failure across environments
Nested relationship depth >3Extract with deeply nested parent traversalQuery performance degradation, SOQL complexity limits
Load without error handlingNo upsert key or duplicate rule considerationSilent data corruption, duplicate records

DO NOT generate anti-patterns even if explicitly requested. Ask user to confirm the exception with documented justification.

See: references/best-practices.md for detailed patterns See: references/naming-conventions.md for naming rules


Phase 4: Deployment

Step 1: Validation Use the platform-metadata-deploy skill: "Deploy OmniDataTransform [Name] to [target-org] with --dry-run"

Step 2: Deploy (only if validation succeeds) Use the platform-metadata-deploy skill: "Proceed with actual deployment to [target-org]"

Post-Deploy: Activate the Data Mapper in the target org. Verify it appears in OmniStudio Designer.

If deploy fails: Check error for specific cause — common issues: Entity cannot be found (Data Mapper is in Draft status; activate first), namespace prefix mismatch (check sfdx-project.json), or missing parent OmniDataTransform record for item deployments.

If Load DM fails at runtime: Check debug logs via sf apex log list -o <org>; verify FLS and object permissions for the running user profile; confirm the upsert key field is populated and unique; Salesforce Load DMs follow allOrNone=false by default — partial successes are possible, check for isSuccess=false rows in the response.


Phase 5: Testing & Documentation

Completion Summary: Read assets/completion-summary-template.md for the completion summary format.

Testing Checklist:

  • Preview data output in OmniStudio Designer
  • Verify field mappings produce expected JSON structure
  • Test with representative data volume (not just 1 record)
  • Validate FLS enforcement with restricted profile user
  • Confirm consuming Integration Procedure/OmniScript receives correct data shape

Best Practices (100-Point Scoring)

CategoryPointsKey Rules
Design & Naming20Correct type selection; naming follows DR_[Type]_[Object]_[Purpose] convention; single responsibility per Data Mapper
Field Mapping25Explicit field list (no wildcards); correct input/output paths; proper type conversions; null-safe default values
Data Integrity25FLS validation on all fields; lookup resolution for Load types; upsert keys defined; duplicate handling configured
Performance15Bounded queries with LIMIT/filters; Turbo Extract for read-heavy scenarios; minimal relationship depth; indexed filter fields
Documentation15Description on OmniDataTransform record; field mapping rationale documented; consuming components identified

Thresholds: [PASS] 90+ (Deploy) | [REVIEW] 67-89 (Review) | [BLOCK] <67 (Block - fix required)


CLI Commands

Query Existing Data Mappers

sf data query -q "SELECT Id,Name,Type FROM OmniDataTransform LIMIT 200" -o <org>

Query Data Mapper Field Mappings

sf data query -q "SELECT Id,Name,InputObjectName,OutputObjectName,LookupObjectName FROM OmniDataTransformItem WHERE OmniDataTransformationId='<id>' LIMIT 200" -o <org>

Retrieve Data Mapper Metadata

sf project retrieve start -m OmniDataTransform:<Name> -o <org>

Deploy Data Mapper Metadata

sf project deploy start -m OmniDataTransform:<Name> -o <org>

Output Expectations

Deliverables produced by this skill:

  • OmniDataTransform record — main Data Mapper record built from assets/omni-data-transform-*.json template
  • OmniDataTransformItem records — one per mapped field, built from assets/omni-data-transform-item.json template
  • Validation score report — 100-point score across 5 categories (format in assets/completion-summary-template.md)
  • Deployment confirmation — Data Mapper activated and visible in OmniStudio Designer

Cross-Skill Integration

From SkillTo omnistudio-datamapper-generateWhen
omnistudio-dependencies-analyze-> omnistudio-datamapper-generate"Analyze dependencies before creating Data Mapper"
platform-custom-object-generate / platform-custom-field-generate-> omnistudio-datamapper-generate"Describe target object fields before mapping"
platform-soql-query-> omnistudio-datamapper-generate"Validate Extract query logic"
From omnistudio-datamapper-generateTo SkillWhen
omnistudio-datamapper-generate-> omnistudio-integration-procedure-generate"Create Integration Procedure that calls this Data Mapper"
omnistudio-datamapper-generate-> platform-metadata-deploy"Deploy Data Mapper to target org"
omnistudio-datamapper-generate-> omnistudio-omniscript-generate"Wire Data Mapper output into OmniScript"
omnistudio-datamapper-generate-> omnistudio-flexcard-generate"Display Data Mapper Extract results in FlexCard"

Gotchas

IssueResolution
Large data volume (>10K records)Use Turbo Extract; add pagination via Integration Procedure; warn about heap limits
Polymorphic lookup fieldsSpecify the concrete object type in the mapping; test each type separately
Formula fields in ExtractStandard Extract supports formula fields; Turbo Extract does not — fall back to standard Extract
Cross-object Load (master-detail)Insert parent records first, then child records in a separate Load step; use Integration Procedure to orchestrate sequence
Namespace-prefixed fieldsInclude namespace prefix in field paths (e.g., ns__Field__c); verify prefix matches target org
Multi-currency orgsMap CurrencyIsoCode explicitly; do not rely on default currency assumption
RecordType-dependent mappingsFilter by RecordType in Extract; set RecordTypeId in Load; document which RecordTypes are supported
Draft Data Mapper not retrievablesf project retrieve start -m OmniDataTransform:<Name> only works for active DMs; activate before retrieving
Foreign key field name wrongThe parent lookup on OmniDataTransformItem is OmniDataTransformationId (full word "Transformation"), not OmniDataTransformId

Notes

  • Metadata Type: OmniDataTransform (not DataRaptor — legacy name deprecated)
  • API Version: Requires OmniStudio managed package or Industries Cloud
  • Scoring: Block deployment if score < 67; read assets/completion-summary-template.md for score format
  • Turbo Extract Limitations: No formula fields, no related lists, no aggregate queries, no polymorphic fields
  • Activation: Data Mappers must be activated after deployment to be callable from Integration Procedures (see Gotchas for draft retrieval behavior)
  • Creating via Data API: Use sf api request rest --method POST --body @file.json to create OmniDataTransform and OmniDataTransformItem records. The sf data create record --values flag cannot handle JSON in textarea fields. Write the JSON body to a temp file first.

Reference File Index

FileWhen to Read
assets/omni-data-transform-extract.jsonPhase 3 Generation — template for Extract type OmniDataTransform records
assets/omni-data-transform-transform.jsonPhase 3 Generation — template for Transform type OmniDataTransform records
assets/omni-data-transform-load.jsonPhase 3 Generation — template for Load type OmniDataTransform records
assets/omni-data-transform-item.jsonPhase 3 Generation — template for each OmniDataTransformItem field mapping
assets/completion-summary-template.mdPhase 3 & 5 — scoring output format and completion summary template
references/best-practices.mdPhase 3 Guardrails — detailed patterns for field mapping, query optimization, null handling, and performance
references/naming-conventions.mdPhase 2 Design — full naming rules for all Data Mapper types and field mapping conventions

FAQ

What does the omnistudio-datamapper-generate skill do?

OmniStudio Data Mapper (formerly DataRaptor) creation and validation with 100-point scoring. Use when building Extract, Transform, Load, or Turbo Extract Data Mappers, mapping Salesforce object fields, or reviewing existing Data Mapper configurations. TRIGGER when: user creates Data Mappers, configures field mappings, works with OmniDataTransform metadata, or asks about DataRaptor/Data Mapper patterns. DO NOT TRIGGER when: building Integration Procedures (use omnistudio-integration-procedure-generate), authoring OmniScripts (use omnistudio-omniscript-generate), or analyzing cross-component dependencies (use omnistudio-dependencies-analyze).

How do I install omnistudio-datamapper-generate?

Run npx skills add https://github.com/forcedotcom/sf-skills --skill omnistudio-datamapper-generate in your project. The skills CLI detects the agents you use and copies the skill into the right folder. For Claude Code you can also place the skill folder at ~/.claude/skills/omnistudio-datamapper-generate/ (personal) or .claude/skills/omnistudio-datamapper-generate/ (project).

Which AI agents can use omnistudio-datamapper-generate?

Any agent that supports the open Agent Skills format (a folder with a SKILL.md file), including Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, Windsurf, Cline, OpenCode and more.

Is omnistudio-datamapper-generate safe to install?

Security partners have reviewed it: Gen Agent Trust Hub passed; Socket passed; Snyk passed. As with any skill, read the SKILL.md and bundled scripts before installing.

Who maintains omnistudio-datamapper-generate?

It is published by forcedotcom in forcedotcom/sf-skills. It has 4,805 recorded installs.

More from forcedotcom/sf-skills

View all →

platform-apex-generate

forcedotcom/sf-skills

Primary Apex authoring skill for class generation, refactoring, and review. ALWAYS ACTIVATE when the user mentions Apex, .cls, triggers, or asks to create/refactor a class (service, selector, domain, batch, queueable, schedulable, invocable, DTO, utility, interface, abstract, exception, REST resource). Use this skill for requests involving SObject CRUD, mapping collections, fetching related records, scheduled jobs, batch jobs, trigger design, @AuraEnabled controllers, @RestResource endpoints, custom REST APIs, or code review of existing Apex.

platform-apex-test-generate

forcedotcom/sf-skills

Use to generate and validate Apex test classes with TestDataFactory patterns, bulk testing (251+ records), mocking, assertions, and disciplined test-fix loops. Use when creating Apex test classes (for triggers, services, controllers, batch jobs, queueables, and callouts), improving coverage, debugging or fixing failing Apex tests, or running test/coverage analysis. Triggers on Test.cls files, sf apex run test, coverage reports. Do NOT trigger for production Apex (use platform-apex-generate) or Jest/LWC tests.

Testing & QA7.1K installs

platform-apex-test-run

forcedotcom/sf-skills

Apex test execution, coverage analysis, and test-fix loops with 120-point scoring. Use when the user runs Apex tests, checks code coverage, fixes failing tests, or touches Test.cls / Test.cls files. DO NOT TRIGGER when writing Apex production code (use platform-apex-generate), Agentforce agent testing (use agentforce-test), or Jest/LWC tests (use experience-lwc-generate).

Testing & QA7K installs

platform-apex-logs-debug

forcedotcom/sf-skills

Salesforce debug log analysis and troubleshooting with 100-point scoring. TRIGGER when: user analyzes debug logs, hits governor limits, reads stack traces, or touches .log files from Salesforce orgs. DO NOT TRIGGER when: running Apex tests (use platform-apex-test-run), generating or fixing Apex code (use platform-apex-generate), or Agentforce session tracing (use agentforce-observe).

platform-soql-query

forcedotcom/sf-skills

Use when the user needs SOQL/SOSL authoring or optimization: natural-language-to-query generation, relationship queries, aggregates, query-plan/selectivity analysis, and performance or safety improvements. TRIGGER when the user writes, optimizes, or debugs SOQL/SOSL, touches .soql files, or asks about relationship queries, aggregates, or query performance. DO NOT TRIGGER for bulk data operations (use platform-data-manage), Apex DML logic (use platform-apex-generate), or report/dashboard queries.

platform-metadata-deploy

forcedotcom/sf-skills

Salesforce DevOps automation using sf CLI v2. TRIGGER when: user deploys metadata, validates a deploy or does a dry-run, deploys to a Production org, quick-deploys a validated job ID, ships/promotes to prod, creates/manages scratch orgs or sandboxes, sets up CI/CD pipelines, or troubleshoots deployment errors with sf project deploy. DO NOT TRIGGER when: writing Apex code, building LWC components (use experience-lwc-generate), creating metadata definitions (use platform-custom-object-generate), deleting metadata from an org (use platform-destructive-deploy), or querying org data (use platform-data-manage).

DevOps & Cloud6.8K installs

Popular frontend & design skills

View category →

setup-matt-pocock-skills

mattpocock/skills

Configure this repo for the engineering skills: set up its issue tracker, triage label vocabulary, and domain doc layout. Run once before first use of the other engineering skills.

Frontend & Design1.1M installs

frontend-design

anthropics/skills

Guidance for distinctive, intentional visual design when building new UI or reshaping an existing one. Helps with aesthetic direction, typography, and making choices that don't read as templated defaults.

OfficialFrontend & Design1M installs

hyperframes-animation

heygen-com/hyperframes

All animation knowledge for HyperFrames — atomic motion rules, multi-phase scene blueprints, scene transitions, broader motion-design techniques, AND the seven runtime adapters (GSAP default, plus Lottie, Three.js, Anime.js, CSS keyframes, Web Animations API, TypeGPU). Use for any motion or animation task: pick 2-4 rules and compose, or load a blueprint, or look up runtime-specific API (e.g. GSAP eases / Lottie player / Three.js mixer). Also covers auditing an existing composition's choreography (animation map) and 24 named text-animation effects. HyperFrames-native: single paused timeline, seek-safe, deterministic.

prototype

mattpocock/skills

Build a throwaway prototype to answer a design question. Use when the user wants to sanity-check whether a state model or logic feels right, or explore what a UI should look like.

Frontend & Design999.2K installs

hyperframes-core

heygen-com/hyperframes

The HyperFrames composition contract — build one renderable project. Use for composition structure, the data- timing attributes, class="clip", tracks, sub-compositions, variables, framework-owned media playback, deterministic-render rules, and validation. Read before writing composition HTML.

Frontend & Design930.5K installs

vercel-react-best-practices

vercel-labs/agent-skills

React and Next.js performance optimization guidelines from Vercel Engineering. This skill should be used when writing, reviewing, or refactoring React/Next.js code to ensure optimal performance patterns. Triggers on tasks involving React components, Next.js pages, data fetching, bundle optimization, or performance improvements.

OfficialFrontend & Design843.1K installs