mirror of
https://github.com/forcedotcom/afv-library.git
synced 2026-08-04 06:07:12 +08:00
301 lines
13 KiB
Markdown
301 lines
13 KiB
Markdown
<!-- Parent: omnistudio-dependencies-analyze/SKILL.md -->
|
|
|
|
# OmniStudio Namespace Reference Guide
|
|
|
|
## Overview
|
|
|
|
Salesforce OmniStudio exists under three distinct namespaces depending on the org's industry package and migration status. Every OmniStudio operation must target the correct namespace — queries, metadata retrieval, and deployment all use namespace-specific object and field API names.
|
|
|
|
| Namespace | Package Context | Typical Orgs |
|
|
|-----------|----------------|--------------|
|
|
| **Core** (no prefix) | Industries / OmniStudio managed package migrated to Core | Orgs on API 234.0+ (Spring '22+) that have completed the Core migration |
|
|
| **vlocity_cmt** | Vlocity Communications, Media & Energy | Telco, media, energy & utilities industry orgs |
|
|
| **vlocity_ins** | Vlocity Insurance & Health | Insurance, health, and life sciences industry orgs |
|
|
|
|
---
|
|
|
|
## Detection Algorithm
|
|
|
|
### Step-by-Step Probing
|
|
|
|
Run SOQL queries against each namespace's primary object. The first query that succeeds determines the namespace.
|
|
|
|
```
|
|
1. Probe Core:
|
|
SELECT COUNT() FROM OmniProcess
|
|
→ Success? Namespace = Core. Stop.
|
|
→ Failure (INVALID_TYPE)? Continue.
|
|
|
|
2. Probe vlocity_cmt:
|
|
SELECT COUNT() FROM vlocity_cmt__OmniScript__c
|
|
→ Success? Namespace = vlocity_cmt. Stop.
|
|
→ Failure (INVALID_TYPE)? Continue.
|
|
|
|
3. Probe vlocity_ins:
|
|
SELECT COUNT() FROM vlocity_ins__OmniScript__c
|
|
→ Success? Namespace = vlocity_ins. Stop.
|
|
→ Failure (INVALID_TYPE)? OmniStudio not installed.
|
|
```
|
|
|
|
### CLI Implementation
|
|
|
|
```bash
|
|
# Core probe
|
|
sf data query --query "SELECT COUNT() FROM OmniProcess" --target-org myorg --json 2>/dev/null
|
|
# Check: result.totalSize >= 0 means Core namespace
|
|
|
|
# vlocity_cmt probe
|
|
sf data query --query "SELECT COUNT() FROM vlocity_cmt__OmniScript__c" --target-org myorg --json 2>/dev/null
|
|
|
|
# vlocity_ins probe
|
|
sf data query --query "SELECT COUNT() FROM vlocity_ins__OmniScript__c" --target-org myorg --json 2>/dev/null
|
|
```
|
|
|
|
### Interpreting Results
|
|
|
|
- **Exit code 0 + JSON with `totalSize`**: Namespace is present
|
|
- **Exit code non-zero or `INVALID_TYPE` error**: Namespace not installed
|
|
- **Exit code 0 + `totalSize: 0`**: Namespace exists but no components created yet (still valid)
|
|
|
|
---
|
|
|
|
## Object Mapping
|
|
|
|
### Primary Container Objects
|
|
|
|
These objects store OmniScript, Integration Procedure, FlexCard, and Data Mapper definitions.
|
|
|
|
| Concept | Core | vlocity_cmt | vlocity_ins |
|
|
|---------|------|-------------|-------------|
|
|
| OmniScript / Integration Procedure | `OmniProcess` | `vlocity_cmt__OmniScript__c` | `vlocity_ins__OmniScript__c` |
|
|
| OmniScript / IP Elements | `OmniProcessElement` | `vlocity_cmt__Element__c` | `vlocity_ins__Element__c` |
|
|
| FlexCard | `OmniUiCard` | `vlocity_cmt__VlocityUITemplate__c` | `vlocity_ins__VlocityUITemplate__c` |
|
|
| Data Mapper (DataRaptor) | `OmniDataTransform` | `vlocity_cmt__DRBundle__c` | `vlocity_ins__DRBundle__c` |
|
|
| Data Mapper Item | `OmniDataTransformItem` | `vlocity_cmt__DRMapItem__c` | `vlocity_ins__DRMapItem__c` |
|
|
| Calculation Matrix | `CalculationMatrix` | `vlocity_cmt__CalculationMatrix__c` | `vlocity_ins__CalculationMatrix__c` |
|
|
| Calculation Procedure | `CalculationProcedure` | `vlocity_cmt__CalculationProcedure__c` | `vlocity_ins__CalculationProcedure__c` |
|
|
|
|
### Relationship Fields (Element → Parent)
|
|
|
|
| Concept | Core | vlocity_cmt | vlocity_ins |
|
|
|---------|------|-------------|-------------|
|
|
| Element → Process lookup | `OmniProcessId` | `vlocity_cmt__OmniScriptId__c` | `vlocity_ins__OmniScriptId__c` |
|
|
| DM Item → DM lookup | `OmniDataTransformId` | `vlocity_cmt__DRBundleId__c` | `vlocity_ins__DRBundleId__c` |
|
|
|
|
---
|
|
|
|
## Field Mapping
|
|
|
|
### OmniProcess / OmniScript Fields
|
|
|
|
| Concept | Core (OmniProcess) | vlocity_cmt (OmniScript__c) | vlocity_ins (OmniScript__c) |
|
|
|---------|-------------------|---------------------------|---------------------------|
|
|
| Type | `Type` | `vlocity_cmt__Type__c` | `vlocity_ins__Type__c` |
|
|
| SubType | `SubType` | `vlocity_cmt__SubType__c` | `vlocity_ins__SubType__c` |
|
|
| Language | `Language` | `vlocity_cmt__Language__c` | `vlocity_ins__Language__c` |
|
|
| Is Active | `IsActive` | `vlocity_cmt__IsActive__c` | `vlocity_ins__IsActive__c` |
|
|
| Version | `VersionNumber` | `vlocity_cmt__Version__c` | `vlocity_ins__Version__c` |
|
|
| Type Category | `TypeCategory` | N/A (use `vlocity_cmt__IsIntegrationProcedure__c`) | N/A (use `vlocity_ins__IsIntegrationProcedure__c`) |
|
|
| Custom HTML | `CustomHtmlTemplates` | `vlocity_cmt__CustomHtmlTemplates__c` | `vlocity_ins__CustomHtmlTemplates__c` |
|
|
| Is Reusable | `IsReusable` | `vlocity_cmt__IsReusable__c` | `vlocity_ins__IsReusable__c` |
|
|
| Procedure Key | N/A | `vlocity_cmt__ProcedureKey__c` | `vlocity_ins__ProcedureKey__c` |
|
|
|
|
**Note on TypeCategory vs IsIntegrationProcedure**: In Core namespace, `TypeCategory` distinguishes OmniScripts from Integration Procedures (`'OmniScript'` vs `'IntegrationProcedure'`). In Vlocity namespaces, use the boolean field `IsIntegrationProcedure__c` instead.
|
|
|
|
### Element Fields
|
|
|
|
| Concept | Core (OmniProcessElement) | vlocity_cmt (Element__c) | vlocity_ins (Element__c) |
|
|
|---------|--------------------------|-------------------------|-------------------------|
|
|
| Name | `Name` | `Name` | `Name` |
|
|
| Type | `Type` | `vlocity_cmt__Type__c` | `vlocity_ins__Type__c` |
|
|
| Property Set Config | `PropertySetConfig` | `vlocity_cmt__PropertySet__c` | `vlocity_ins__PropertySet__c` |
|
|
| Order | `SequenceNumber` | `vlocity_cmt__Order__c` | `vlocity_ins__Order__c` |
|
|
| Is Active | `IsActive` | `vlocity_cmt__Active__c` | `vlocity_ins__Active__c` |
|
|
| Parent Element | `ParentElementId` | `vlocity_cmt__ParentElementId__c` | `vlocity_ins__ParentElementId__c` |
|
|
| Level | `Level` | `vlocity_cmt__Level__c` | `vlocity_ins__Level__c` |
|
|
|
|
### FlexCard / UI Template Fields
|
|
|
|
| Concept | Core (OmniUiCard) | vlocity_cmt (VlocityUITemplate__c) | vlocity_ins (VlocityUITemplate__c) |
|
|
|---------|-------------------|-----------------------------------|-----------------------------------|
|
|
| Name | `Name` | `Name` | `Name` |
|
|
| Is Active | `IsActive` | `vlocity_cmt__IsActive__c` | `vlocity_ins__IsActive__c` |
|
|
| Definition | `Definition` | `vlocity_cmt__Definition__c` | `vlocity_ins__Definition__c` |
|
|
| Author Name | `AuthorName` | `vlocity_cmt__Author__c` | `vlocity_ins__Author__c` |
|
|
| Version | `VersionNumber` | `vlocity_cmt__Version__c` | `vlocity_ins__Version__c` |
|
|
| Template Type | N/A | `vlocity_cmt__TemplateType__c` | `vlocity_ins__TemplateType__c` |
|
|
|
|
### Data Mapper / DataRaptor Fields
|
|
|
|
| Concept | Core (OmniDataTransform) | vlocity_cmt (DRBundle__c) | vlocity_ins (DRBundle__c) |
|
|
|---------|-------------------------|--------------------------|--------------------------|
|
|
| Name | `Name` | `Name` | `Name` |
|
|
| Type | `Type` | `vlocity_cmt__Type__c` | `vlocity_ins__Type__c` |
|
|
| Is Active | `IsActive` | `vlocity_cmt__IsActive__c` | `vlocity_ins__IsActive__c` |
|
|
| Input Type | `InputType` | `vlocity_cmt__InputType__c` | `vlocity_ins__InputType__c` |
|
|
| Output Type | `OutputType` | `vlocity_cmt__OutputType__c` | `vlocity_ins__OutputType__c` |
|
|
|
|
### Data Mapper Item Fields
|
|
|
|
| Concept | Core (OmniDataTransformItem) | vlocity_cmt (DRMapItem__c) | vlocity_ins (DRMapItem__c) |
|
|
|---------|------------------------------|---------------------------|---------------------------|
|
|
| Input Object | `InputObjectName` | `vlocity_cmt__InterfaceObject__c` | `vlocity_ins__InterfaceObject__c` |
|
|
| Output Object | `OutputObjectName` | `vlocity_cmt__TargetFieldObjectType__c` | `vlocity_ins__TargetFieldObjectType__c` |
|
|
| Input Field | `InputFieldName` | `vlocity_cmt__InterfaceFieldAPIName__c` | `vlocity_ins__InterfaceFieldAPIName__c` |
|
|
| Output Field | `OutputFieldName` | `vlocity_cmt__TargetFieldAPIName__c` | `vlocity_ins__TargetFieldAPIName__c` |
|
|
| Filter Data Type | `FilterDataType` | `vlocity_cmt__FilterDataType__c` | `vlocity_ins__FilterDataType__c` |
|
|
| Query Sequence | `InputObjectQuerySequence` | `vlocity_cmt__InterfaceObjectLookupOrder__c` | `vlocity_ins__InterfaceObjectLookupOrder__c` |
|
|
|
|
---
|
|
|
|
## Metadata Type Names for Deployment
|
|
|
|
When using `sf project retrieve start` or `sf project deploy start`, reference the correct metadata type:
|
|
|
|
| Component | Core Metadata Type | Vlocity Metadata Type |
|
|
|-----------|-------------------|----------------------|
|
|
| OmniScript | `OmniScript` | N/A (use Vlocity Build Tool) |
|
|
| Integration Procedure | `OmniIntegrationProcedure` | N/A (use Vlocity Build Tool) |
|
|
| FlexCard | `OmniUiCard` | N/A (use Vlocity Build Tool) |
|
|
| Data Mapper | `OmniDataTransform` | N/A (use Vlocity Build Tool) |
|
|
| Data Mapper Item | `OmniDataTransformItem` | N/A (use Vlocity Build Tool) |
|
|
|
|
**Note**: Only Core namespace components support standard Salesforce metadata API deployment. Vlocity namespace components require the Vlocity Build Tool (`vlocity_build`) for migration between orgs.
|
|
|
|
### Retrieve Example (Core)
|
|
```bash
|
|
sf project retrieve start --metadata OmniScript --target-org myorg
|
|
sf project retrieve start --metadata OmniDataTransform --target-org myorg
|
|
```
|
|
|
|
---
|
|
|
|
## Mixed Namespace Scenarios
|
|
|
|
### During Core Migration
|
|
|
|
Organizations migrating from a Vlocity namespace to Core may temporarily have components under both namespaces. During this transition:
|
|
|
|
1. **Probe both namespaces** — if both return results, the org is mid-migration
|
|
2. **Core components take precedence** — runtime uses Core namespace objects when both exist
|
|
3. **Report the state** — alert the user that migration is in progress and both namespaces contain data
|
|
4. **Do not modify Vlocity-namespace components** — they are frozen during migration
|
|
|
|
### Detection of Mixed State
|
|
|
|
```bash
|
|
# Check if Core has components
|
|
sf data query --query "SELECT COUNT() FROM OmniProcess" --target-org myorg --json 2>/dev/null
|
|
|
|
# Also check if Vlocity still has components
|
|
sf data query --query "SELECT COUNT() FROM vlocity_cmt__OmniScript__c" --target-org myorg --json 2>/dev/null
|
|
```
|
|
|
|
If both return `totalSize > 0`, the org is in a mixed namespace state.
|
|
|
|
### Recommended Actions During Mixed State
|
|
|
|
- Inventory components under both namespaces
|
|
- Compare counts to assess migration progress
|
|
- Flag components that exist only in the old namespace (not yet migrated)
|
|
- Do not create components under the old namespace
|
|
|
|
---
|
|
|
|
## Data Mapper Type Values
|
|
|
|
The `Type` field on OmniDataTransform / DRBundle indicates the mapper's purpose:
|
|
|
|
| Type Value | Description |
|
|
|-----------|-------------|
|
|
| `Extract` | Reads data from Salesforce objects |
|
|
| `Transform` | Maps and transforms data between structures |
|
|
| `Load` | Writes data to Salesforce objects |
|
|
| `Turbo Extract` | High-performance read (bypasses sharing rules) |
|
|
|
|
---
|
|
|
|
## SOQL Query Templates
|
|
|
|
### Core Namespace — Full Inventory
|
|
|
|
```soql
|
|
-- All OmniScripts
|
|
SELECT Id, Type, SubType, Language, IsActive, VersionNumber, LastModifiedDate
|
|
FROM OmniProcess
|
|
WHERE TypeCategory = 'OmniScript'
|
|
ORDER BY Type, SubType, Language, VersionNumber DESC
|
|
|
|
-- All Integration Procedures
|
|
SELECT Id, Type, SubType, Language, IsActive, VersionNumber, LastModifiedDate
|
|
FROM OmniProcess
|
|
WHERE TypeCategory = 'IntegrationProcedure'
|
|
ORDER BY Type, SubType, Language, VersionNumber DESC
|
|
|
|
-- All FlexCards
|
|
SELECT Id, Name, IsActive, AuthorName, VersionNumber, LastModifiedDate
|
|
FROM OmniUiCard
|
|
ORDER BY Name, VersionNumber DESC
|
|
|
|
-- All Data Mappers
|
|
SELECT Id, Name, Type, IsActive, InputType, OutputType, LastModifiedDate
|
|
FROM OmniDataTransform
|
|
ORDER BY Name
|
|
```
|
|
|
|
### vlocity_cmt Namespace — Full Inventory
|
|
|
|
```soql
|
|
-- All OmniScripts
|
|
SELECT Id, vlocity_cmt__Type__c, vlocity_cmt__SubType__c,
|
|
vlocity_cmt__Language__c, vlocity_cmt__IsActive__c, vlocity_cmt__Version__c
|
|
FROM vlocity_cmt__OmniScript__c
|
|
WHERE vlocity_cmt__IsIntegrationProcedure__c = false
|
|
ORDER BY vlocity_cmt__Type__c, vlocity_cmt__SubType__c
|
|
|
|
-- All Integration Procedures
|
|
SELECT Id, vlocity_cmt__Type__c, vlocity_cmt__SubType__c,
|
|
vlocity_cmt__Language__c, vlocity_cmt__IsActive__c, vlocity_cmt__Version__c
|
|
FROM vlocity_cmt__OmniScript__c
|
|
WHERE vlocity_cmt__IsIntegrationProcedure__c = true
|
|
ORDER BY vlocity_cmt__Type__c, vlocity_cmt__SubType__c
|
|
|
|
-- All FlexCards / UI Templates
|
|
SELECT Id, Name, vlocity_cmt__IsActive__c, vlocity_cmt__Version__c
|
|
FROM vlocity_cmt__VlocityUITemplate__c
|
|
ORDER BY Name
|
|
|
|
-- All Data Mappers (DataRaptors)
|
|
SELECT Id, Name, vlocity_cmt__Type__c, vlocity_cmt__IsActive__c
|
|
FROM vlocity_cmt__DRBundle__c
|
|
ORDER BY Name
|
|
```
|
|
|
|
### vlocity_ins Namespace — Full Inventory
|
|
|
|
```soql
|
|
-- All OmniScripts
|
|
SELECT Id, vlocity_ins__Type__c, vlocity_ins__SubType__c,
|
|
vlocity_ins__Language__c, vlocity_ins__IsActive__c, vlocity_ins__Version__c
|
|
FROM vlocity_ins__OmniScript__c
|
|
WHERE vlocity_ins__IsIntegrationProcedure__c = false
|
|
ORDER BY vlocity_ins__Type__c, vlocity_ins__SubType__c
|
|
|
|
-- All Integration Procedures
|
|
SELECT Id, vlocity_ins__Type__c, vlocity_ins__SubType__c,
|
|
vlocity_ins__Language__c, vlocity_ins__IsActive__c, vlocity_ins__Version__c
|
|
FROM vlocity_ins__OmniScript__c
|
|
WHERE vlocity_ins__IsIntegrationProcedure__c = true
|
|
ORDER BY vlocity_ins__Type__c, vlocity_ins__SubType__c
|
|
|
|
-- All FlexCards / UI Templates
|
|
SELECT Id, Name, vlocity_ins__IsActive__c, vlocity_ins__Version__c
|
|
FROM vlocity_ins__VlocityUITemplate__c
|
|
ORDER BY Name
|
|
|
|
-- All Data Mappers (DataRaptors)
|
|
SELECT Id, Name, vlocity_ins__Type__c, vlocity_ins__IsActive__c
|
|
FROM vlocity_ins__DRBundle__c
|
|
ORDER BY Name
|
|
```
|