# Data Mapper Naming Conventions ## Type Prefixes Every Data Mapper name starts with a type prefix that identifies its function at a glance. | Type | Prefix | Example | |------|--------|---------| | Extract | `DR_Extract_` | `DR_Extract_Account_Details` | | Turbo Extract | `DR_TurboExtract_` | `DR_TurboExtract_Case_List` | | Transform | `DR_Transform_` | `DR_Transform_Lead_Flatten` | | Load | `DR_Load_` | `DR_Load_Opportunity_Create` | The `DR_` prefix stands for DataRaptor, the original product name. It remains the standard prefix for backward compatibility and team familiarity. --- ## Object Naming ### Format ``` DR_[Type]_[PrimaryObject]_[Purpose] ``` - **Type**: Extract, TurboExtract, Transform, Load - **PrimaryObject**: The main Salesforce object (PascalCase, no underscores for standard objects) - **Purpose**: A short, descriptive action or qualifier (PascalCase) ### Standard Object Examples | Data Mapper | Description | |-------------|-------------| | `DR_Extract_Account_Details` | Extract Account fields for detail view | | `DR_Extract_Account_WithContacts` | Extract Account with related Contact list | | `DR_Extract_Contact_ByAccountId` | Extract Contacts filtered by Account | | `DR_TurboExtract_Case_OpenList` | High-volume Extract of open Cases | | `DR_Transform_Order_FlattenLines` | Flatten nested OrderItem structure | | `DR_Load_Opportunity_Create` | Insert Opportunity records | | `DR_Load_Account_Upsert` | Upsert Account records by external ID | ### Custom Object Examples For custom objects, include the namespace prefix if applicable but drop the `__c` suffix from the name: | Data Mapper | Target Object | Description | |-------------|---------------|-------------| | `DR_Extract_Invoice_Summary` | `Invoice__c` | Extract Invoice summary fields | | `DR_TurboExtract_Claim_Active` | `Claim__c` | High-volume active Claims list | | `DR_Load_PolicyHolder_Update` | `PolicyHolder__c` | Update PolicyHolder records | | `DR_Extract_ns_CustomObj_Details` | `ns__CustomObj__c` | Namespaced custom object Extract | ### Multi-Object Data Mappers When a Data Mapper spans multiple objects, name it after the primary (root) object: ``` DR_Extract_Account_WithContactsAndOpps DR_Extract_Order_WithLineItems ``` If the Data Mapper truly serves a cross-cutting concern, use a domain name instead: ``` DR_Extract_CustomerProfile_Full DR_Transform_ClaimSubmission_Normalize ``` --- ## Field Mapping Naming Patterns ### Output Field Names Output field names in the Data Mapper JSON response should follow these conventions: | Pattern | Convention | Example | |---------|-----------|---------| | Standard fields | camelCase matching API name | `accountName`, `billingCity` | | Custom fields | camelCase without `__c` suffix | `invoiceTotal` (from `Invoice_Total__c`) | | Relationship fields | parent + field in camelCase | `accountOwnerName` (from `Account.Owner.Name`) | | Child collections | plural camelCase | `contacts`, `orderItems` | | Computed/aliased fields | descriptive camelCase | `fullAddress`, `daysSinceCreated` | ### Input Path Conventions Input paths reference the source data structure. Use consistent dot notation: ``` AccountData.Name -- Simple field AccountData.Owner.Name -- Relationship traversal AccountData.Contacts[0] -- Collection index RequestBody.payload.id -- Nested JSON path ``` ### Output Path Conventions Output paths define the JSON structure returned by the Data Mapper: ``` AccountInfo.Name -- Nested output AccountInfo.OwnerName -- Flattened relationship AccountInfo.Contacts -- Collection output Result.status -- Top-level result wrapper ``` --- ## Naming Anti-Patterns | Anti-Pattern | Problem | Correct | |--------------|---------|---------| | `DataRaptor1` | Non-descriptive, no type prefix | `DR_Extract_Account_Details` | | `GetAccountData` | Missing `DR_` prefix and type | `DR_Extract_Account_Details` | | `DR_Extract_Account__c_Details` | Includes `__c` suffix | `DR_Extract_Account_Details` | | `DR_extract_account_details` | Wrong casing (should be PascalCase) | `DR_Extract_Account_Details` | | `DR_Extract_Everything` | Too vague, no object specified | `DR_Extract_Account_Full` | | `DR_Extract_AccountDetailsForTheNewCustomerPortalPage` | Too long | `DR_Extract_Account_PortalDetails` | | `DR_Extract_Acc_Det` | Abbreviations reduce readability | `DR_Extract_Account_Details` | --- ## Version and Environment Conventions Data Mapper names should be environment-agnostic. Do not include environment identifiers in the name: ``` Bad: DR_Extract_Account_Details_DEV Bad: DR_Extract_Account_Details_v2 Good: DR_Extract_Account_Details ``` Use OmniStudio versioning (built into the platform) to manage iterations. The Data Mapper name stays constant across environments and versions. --- ## Character Limits and Restrictions - Maximum name length: 80 characters - Allowed characters: letters, numbers, underscores - Must start with `DR_` - No spaces, hyphens, or special characters - PascalCase after each underscore delimiter