PluginBench
Skill
Pass
Audit score 90

data360-harmonize

forcedotcom/sf-skills

Harmonize and unify data in Salesforce Data Cloud with DMOs, mappings, identity resolution, and unified profiles.

What is data360-harmonize?

This skill handles the Harmonize phase of Salesforce Data Cloud: schema unification, field mappings, identity resolution, data graphs, and unified profiles. Use it when working with DMOs, relationships, or universal IDs—not for streams, segments, or retrieval.

  • Create and inspect Data Model Objects (DMOs) and unified entity schemas
  • Map source DLOs to target DMOs with field-level transformations
  • Configure and run identity resolution rulesets for record matching
  • Build data graphs and relationship definitions across entities
  • Manage unified profiles and universal ID lookups

How to install data360-harmonize

npx skills add https://github.com/forcedotcom/sf-skills --skill data360-harmonize
Prerequisites
  • Node.js >=18.0.0
  • Salesforce CLI (sf) >=2.0.0
  • Access to a Salesforce org with Data Cloud enabled
  • Source DLOs already created via data360-prepare skill
Claude Code
Cursor
Windsurf
Cline

How to use data360-harmonize

  1. 1.Run the readiness classifier to verify your org is ready for harmonize work: `node ../data360-orchestrate/scripts/diagnose-org.mjs -o <org> --phase harmonize --json`
  2. 2.List available DMOs and identity resolution rulesets: `sf data360 dmo list --all -o <org>` and `sf data360 identity-resolution list -o <org>`
  3. 3.Inspect the target DMO schema before mapping: `sf data360 dmo get -o <org> --name <dmo-name> --json`
  4. 4.Create or review field mappings from source DLO to target DMO: `sf data360 dmo mapping-list -o <org> --source <dlo> --target <dmo>`
  5. 5.Test mappings with dry-run before execution: `sf data360 dmo map-to-canonical -o <org> --dlo <dlo> --dmo <dmo> --dry-run`
  6. 6.Create and run identity resolution ruleset: `sf data360 identity-resolution create -o <org> -f ir-ruleset.json` then `sf data360 identity-resolution run -o <org> --name <ruleset-name>`

Use cases

Good for
  • Map customer data from multiple source systems into a single unified Individual DMO
  • Run identity resolution to deduplicate and match records across DLOs before creating unified profiles
  • Define relationships between DMOs (e.g., Individual → Account) for data graph construction
  • Inspect DMO schema and validate mappings before executing harmonization
  • Verify unified profile creation and universal ID assignment after identity resolution
Who it's for
  • Data architects designing unified data models in Salesforce Data Cloud
  • Data engineers building mappings and identity resolution rulesets
  • Analytics teams preparing harmonized data for segmentation and insights
  • Salesforce administrators managing Data Cloud configuration

data360-harmonize FAQ

When should I use data360-harmonize vs. data360-prepare?

Use data360-prepare for ingesting streams and building DLOs. Use data360-harmonize once DLOs exist and you need to map them to DMOs, resolve identities, or create unified profiles.

What's the difference between a DLO and a DMO?

A DLO (Data Lake Object) is a raw ingested data object from a source system. A DMO (Data Model Object) is a unified, harmonized entity (like a single Individual record) created by mapping and merging data from multiple DLOs.

Do I need to run identity resolution before creating unified profiles?

Yes. Identity resolution matches and deduplicates records across DLOs so that unified profiles represent unique entities rather than duplicates.

What does the readiness classifier check?

The classifier verifies that your org has the necessary Data Cloud features, permissions, and configuration to perform harmonization work before you attempt commands.

Can I use data360-harmonize for segment creation or data retrieval?

No. Use data360-segment for segment logic and calculated insights, and data360-query for SQL queries, search, and retrieval workflows.

Full instructions (SKILL.md)

Source of truth, from forcedotcom/sf-skills.


name: data360-harmonize description: "Salesforce Data Cloud Harmonize phase. Use this skill when the user works with DMOs, mappings, relationships, identity resolution, unified profiles, data graphs, or universal IDs. TRIGGER when: user works with DMOs, mappings, relationships, identity resolution, unified profiles, data graphs, or universal IDs. DO NOT TRIGGER when: the task is only about streams/DLOs (use data360-prepare), segments/insights (use data360-segment), retrieval/search (use data360-query), or STDM/session tracing (use agentforce-observe)." metadata: cliTools: - tool: ["node"] semver: ">=18.0.0" - tool: ["sf"] semver: ">=2.0.0" relatedSkills: - "agentforce-observe" - "data360-orchestrate" - "data360-prepare" - "data360-query" - "data360-segment" version: "1.0" domains: ["Data 360"]

data360-harmonize: Data Cloud Harmonize Phase

Use this skill when the user needs schema harmonization and unification work: DMOs, field mappings, relationships, identity resolution, unified profiles, data graphs, or universal ID lookup.

When This Skill Owns the Task

Use data360-harmonize when the work involves:

  • sf data360 dmo *
  • sf data360 identity-resolution *
  • sf data360 data-graph *
  • sf data360 profile *
  • sf data360 universal-id lookup

Delegate elsewhere when the user is:

  • still ingesting streams or building DLOs → data360-prepare
  • working on segment logic or calculated insights → data360-segment
  • running SQL, describe, or search-index workflows → data360-query

Required Context to Gather First

Ask for or infer:

  • source DLO and target DMO names
  • whether the task is schema creation, mapping, IR, or graph-related
  • target org alias
  • whether a ruleset already exists
  • the user’s desired unified entity model

Core Operating Rules

  • Inspect DMO schema before creating mappings.
  • Run the shared readiness classifier before mutating harmonization assets: node ../data360-orchestrate/scripts/diagnose-org.mjs -o <org> --phase harmonize --json.
  • Prefer dmo list --all when browsing the catalog, but use first-page dmo list for fast readiness checks.
  • Use query describe or dmo get --json instead of inventing unsupported describe flows.
  • Treat identity resolution runs as asynchronous and verify results after execution.
  • Keep unified-profile work separate from STDM/session tracing work.

Recommended Workflow

1. Classify readiness for harmonize work

node ../data360-orchestrate/scripts/diagnose-org.mjs -o <org> --phase harmonize --json

2. Inspect the catalog

sf data360 dmo list --all -o <org> 2>/dev/null
sf data360 identity-resolution list -o <org> 2>/dev/null

3. Inspect schema before mapping

sf data360 query describe -o <org> --table ssot__Individual__dlm 2>/dev/null
sf data360 dmo get -o <org> --name ssot__Individual__dlm --json 2>/dev/null

4. Create or review mappings intentionally

sf data360 dmo mapping-list -o <org> --source Contact_Home__dll --target ssot__Individual__dlm 2>/dev/null
sf data360 dmo map-to-canonical -o <org> --dlo Contact_Home__dll --dmo ssot__Individual__dlm --dry-run 2>/dev/null

5. Run IR only after mappings are trustworthy

sf data360 identity-resolution create -o <org> -f ir-ruleset.json 2>/dev/null
sf data360 identity-resolution run -o <org> --name Main 2>/dev/null

High-Signal Gotchas

  • dmo list should usually use --all.
  • Use query describe or dmo get --json; there is no dmo describe command.
  • Mapping and related commands can be sensitive to API-version differences.
  • Unified DMO names are ruleset-specific rather than generic.
  • Data graph definitions are sensitive to field selection and relationship shape.
  • If dmo list works but identity-resolution list is gated, treat that as a phase-specific gap rather than a full Data Cloud outage.

Output Format

Harmonize task: <dmo / mapping / relationship / ir / data-graph>
Source/target: <dlo → dmo or ruleset/graph names>
Target org: <alias>
Artifacts: <json files / commands>
Verification: <passed / partial / blocked>
Next step: <segment / retrieve / follow-up>

References

  • ../data360-orchestrate/assets/definitions/dmo.template.json
  • ../data360-orchestrate/assets/definitions/mapping.template.json
  • ../data360-orchestrate/assets/definitions/relationship.template.json
  • ../data360-orchestrate/assets/definitions/identity-resolution.template.json
  • ../data360-orchestrate/assets/definitions/data-graph.template.json
  • ../data360-orchestrate/references/feature-readiness.md