### Example Contract Line Token Table
Source: https://vaultcrmhelp.veeva.com/doc/Content/CRM_topics/Events/Speakers/SpeakerContractGeneration
Provides an example of how contract line and contract tokens are used within a table in a .docx template, and the resulting output in a PDF.
```markdown
Service Name | Rate | Service Quantity | Total
---|---|---|---
{{contract_line__v.service_name__v}} | {{contract_line__v.em_rate__v}} {{contract__v.local_currency__sys}} | {{contract_line__v.em_service_quantity__v}} | {{contract_line__v.em_total_payment__v}}
Contract Total | | | {{contract__v.em_total_payment__v}}
```
--------------------------------
### Example CTL File for FTPS Upload
Source: https://vaultcrmhelp.veeva.com/doc/Content/CRM_topics/Multichannel/CLM/ManagingContent/ManageinCRM/UploadContentFTPS
An example control file (CTL) used for uploading CLM content via FTPS. It specifies user credentials, filename, and additional metadata for the content. The format adheres to requirements for successful processing by Vault CRM.
```text
USER=datasteward@customer.com.sandbox
PASSWORD=mypassword
EMAIL=user@company.com
FILENAME=Cholecap-1-Intro.zip
clm_id__v=VeevaCLM
Name=Cholecap – Events
product__v=a00S0000002i4oO
slide_version__v=1.0.0
description__v=Cholecap - 5 53% Fewer Adverse Events
```
--------------------------------
### End-to-End Scheduled Job Example URL
Source: https://vaultcrmhelp.veeva.com/doc/Content/CRM_topics/Align/Configuration/AlignScheduler
Provides an example of a fully formatted URL for an end-to-end scheduled job, including territory-specific parameters. This URL is used when configuring an External URL Call job type in Align.
```text
https://lambda.veeva-vcrm.com/api/latest/process/run?vaultid=${Vault.id}&vaulturl=${Vault.domain}&territoryId=XYZ000000000001&jobName=DailyJob&jobInstanceId=${job_instance_id__v}&lowerLimit=0&upperLimit=10000
```
--------------------------------
### Verify Domain Configuration using nslookup (Windows)
Source: https://vaultcrmhelp.veeva.com/doc/Content/CRM_topics/Multichannel/ApprovedEmail/ConfiguringAE/CreateSendingDomain
Command-line examples using 'nslookup' on Windows systems to verify DNS records for email sending domains. This serves a similar purpose to 'dig' in confirming correct DNS record setup.
```Windows Batch
nslookup CNAME email.customer-domain.com
```
```Windows Batch
nslookup TXT customer-domain.com
```
--------------------------------
### Example MCCP Display Fields Configuration
Source: https://vaultcrmhelp.veeva.com/doc/Content/CRM_topics/CyclePlans/MCCP/Executing/DisplayBy
An example of a semicolon-delimited list of MCCP fields configured in the 'scheduler_configure_display__v' Veeva Setting or a corresponding Veeva Message. This demonstrates how to include fields like 'channel_interactions_remaining__v' from the target object and 'team_last_activity_date__v' from the product object.
```text
MCCP_target.channel_interactions_remaining__v;MCCP.product.team_last_activity_date__v;
```
--------------------------------
### Linear-Additive Discount Calculation Example
Source: https://vaultcrmhelp.veeva.com/doc/Content/CRM_topics/OrderManagement/PricingRules/Discounts/InLevelAddition
Demonstrates the calculation for Linear-Additive In-Level Addition Mode where discounts are summed directly. This is useful for understanding how multiple discounts combine linearly.
```plaintext
Discount = discount_override__v1 + discount_override__v2 + ... + discount_override__vn
Example:
2% + 3% + 6% = 11%
```
--------------------------------
### Sample Default Field Format
Source: https://vaultcrmhelp.veeva.com/doc/Content/CRM_topics/CallSampling/Config/ConfiguringCS
This example illustrates the required format for the 'sample_default__v' field on 'account__v' records. It uses a semicolon-delimited list of products and their default quantities. Each product entry follows the pattern '[Textual String of Sample]::[Default Quantity];;'. This configuration allows for setting default quantities when products are added to the Samples and Promotional Items section on a call report.
```Text
Cholecap 10mg::1;;Cholecap 20mg::2;;Cholecap 30mg::2
```
--------------------------------
### Price-Additive Discount Calculation Example
Source: https://vaultcrmhelp.veeva.com/doc/Content/CRM_topics/OrderManagement/PricingRules/Discounts/InLevelAddition
Illustrates the calculation for Price-Additive In-Level Addition Mode where discounts are applied iteratively. This method accounts for the diminishing impact of subsequent discounts.
```plaintext
Discount = 1 - ((1 - discount_override__v1) * (1 - discount_override__v2) * ... * (1 - discount_override__vn))
Example:
1 - ((1 - 0.02) * (1 - 0.03) * (1 - 0.06)) = 9.69%
```
--------------------------------
### Control Panel Configuration Example in JSON
Source: https://vaultcrmhelp.veeva.com/doc/Content/CRM_topics/Multichannel/CLM/CreatingContent/DefineAR
This code snippet demonstrates a typical configuration for a control panel in VaultCRM. It includes settings for a slider that controls animations and buttons that trigger specific actions. Dependencies include the structure of the control panel, slider, buttons, animations, audios, and labels.
```json
{
"animation_control_panel":{
"type":"control_panel",
"id":"control_panel.interactions",
"slider":{
"type":"slider",
"id":"slider.main",
"animations":[
{
"type":"animation",
"id":"Codesign-anim"
},
{
"type":"animation",
"id":"group1-anim"
}
]
},
"buttons":[
{
"actions":[
{
"type":"animation",
"id":"Codesign-anim"
},
{
"type":"animation",
"id":"group1-anim"
}
]
}
]
},
//Animations that play when triggering the associated action
"animations":[
{
"type":"animation",
"id":"NovaSeq_2_a_Left_Door-anim",
"autoplay":false,
"repeat_count":1
}
],
//Audio files the play when triggering the associated action
"audios":[
{
"type":"audio",
"id":"audio.fgfr",
"file_name":"Pipeline.mp3"
}
],
//Labels that display depending on the triggered action.
"labels":[
{
"type":"label",
"id":"label.monitor",
"text":"This is the MONITOR"
}
]
}
```
--------------------------------
### Approved Email Token Formatting Examples (Vault CRM)
Source: https://vaultcrmhelp.veeva.com/doc/Content/CRM_topics/Multichannel/ApprovedEmail/CreatingContent/FormattingDateTime
Demonstrates how to apply custom formats to date and time tokens within Vault CRM's Approved Email system. These examples show the structure for specifying format elements and their resulting output.
```Vault CRM Tokens
{{parentCallDatetime(MMMM d, yyyy)}}
{{parentCallDatetime(MM d, yyyy)}}
{{parentCallDatetime(MMM d, yyyy)}}
{{parentCallDatetime(MMMM d, yyyy)}}
{{parentCallDatetime(MMMM d , yyyy)}}
{{parentCallDatetime(MMMM dd , yyyy)}}
{{parentCallDatetime(eee , MM/dd)}}
{{parentCallDatetime(eeee , MM/dd)}}
{{parentCallDatetime(eee, h:mm a)}}
{{parentCallDatetime(eee, hh:mm a)}}
{{parentCallDatetime(eee, H:mm)}}
{{parentCallDatetime(eee, HH:mm)}}
{{parentCallDatetime(eee, h:mm a)}}
{{parentCallDatetime(eeee, MMMM d yyyy @ h:mm a)}}
```
--------------------------------
### HTML Email Template Structure Example
Source: https://vaultcrmhelp.veeva.com/doc/Content/CRM_topics/Multichannel/ApprovedEmail/CreatingContent/CreatingAETemplates
This HTML structure provides a basic template for Approved Emails. It includes essential meta tags, a title, inline CSS styling, and a table structure required for email fragments. Ensure UTF-8 encoding and proper commenting practices.
```html
My Title
{{insertEmailFragments}}
```
--------------------------------
### Example Rendered Token Text in English
Source: https://vaultcrmhelp.veeva.com/doc/Content/CRM_topics/Multichannel/Engage/Meet/JoinViaZoom
This shows how the {{insertEngageAndZoomJoinURL[en_US]}} token renders in English, including both Engage and Zoom meeting details. This text appears in the email sent to attendees.
```text
Join Meeting [Engage URL]
Meeting ID: [Engage ID]
Password: [Meeting Password]
If you prefer to join using Zoom [Zoom URL]
Zoom Meeting ID: [Zoom Meeting ID]
Password: [Password]
```
--------------------------------
### Verify Domain Configuration using dig (Unix)
Source: https://vaultcrmhelp.veeva.com/doc/Content/CRM_topics/Multichannel/ApprovedEmail/ConfiguringAE/CreateSendingDomain
Command-line examples using 'dig' on Unix-based systems to verify DNS records for email sending domains. This helps confirm that CNAME and TXT records are correctly configured and resolving as expected.
```Shell
dig CNAME email.customer-domain.com
```
```Shell
dig TXT customer-domain.com
```
--------------------------------
### Veeva Tab Configuration: Populate TAB_NAV_DISPLAY Message
Source: https://vaultcrmhelp.veeva.com/doc/Content/CRM_topics/Getting_Started/MobileDeviceSetup/TabVisibility
This example demonstrates how to populate the `TAB_NAV_DISPLAY` Veeva Message with a semicolon-delimited list of tabs to control their visibility for Business Admin users. Ensure the list is correctly formatted for the desired tab order and display.
```plaintext
MyAccounts;;MySchedule;;Media;;MedicalInquiryFulfillments;;SurveyTargets;;CallObjectives;;AccountPlans;;Email;;MedicalInsights;;MedicalInteraction;;EMEvents;;MedicalEvents;;MyPlan;;MySamples;;CoachingReports;;AdvancedCoachingReports;;TerritoryFeedback;;Documents;;Files;;GoOnline;;MyCyclePlan;;Suggestions;;MyTasks;;Speakers;;AccountProfiling
```
--------------------------------
### Example Field Set Syntax for Monitoring Rules
Source: https://vaultcrmhelp.veeva.com/doc/Content/CRM_topics/ApprovedNotes/UsingAN/MonitoringRules
Demonstrates the correct format for populating the field_set__v value when configuring a Monitoring Rule. This field specifies which fields across different Vault CRM objects should be monitored. Ensure integration users have appropriate read permissions for all listed fields and objects. Field API names must match case.
```text
call2__v.next_call_notes__v;;chat_message__v.message__v;;medical_event__v.description__v
```
--------------------------------
### Example VMOC WHERE Clause for Recent Calls
Source: https://vaultcrmhelp.veeva.com/doc/Content/CRM_topics/Getting_Started/MobileDeviceSetup/Sync/VMOCs
Demonstrates how to use a WHERE clause in a VMOC to filter records based on a date condition. This example limits synced calls to those made within the last 90 days.
```vql
WHERE call_date__v >= LAST_DAYS:90
```
--------------------------------
### Example Formula Field Expression for Primary Child Account
Source: https://vaultcrmhelp.veeva.com/doc/Content/CRM_topics/Call_Reporting_2/Executing/Activities/ChildAccounts
This example demonstrates a formula field expression for the 'primary__v' field on the 'child_account__v' object. It checks if the child account's primary parent matches the current parent account, returning 'Yes' or 'No'.
```formula
If(Id(child_account__vr.primary_parent__v)=Id(parent_account__v), "Yes", "No")
```
--------------------------------
### Define Sample Send Card Format with Regular Expression
Source: https://vaultcrmhelp.veeva.com/doc/Content/CRM_topics/CallSampling/Config/ConfiguringBRCs
This example demonstrates how to define a regular expression for validating sample send card numbers using Veeva Messages. The provided regex enforces a 10-digit numeric format.
```regex
^[0-9]{10}$
```
--------------------------------
### Run SQL Query Against Vault CRM Data Lakehouse (SQL)
Source: https://vaultcrmhelp.veeva.com/doc/Content/CRM_topics/General/DataLakehouse
This snippet demonstrates a basic SQL query to retrieve data from the Vault CRM Data Lakehouse. It assumes the necessary setup has been completed and uses a common table name for accounts.
```sql
SELECT * FROM ACCOUNT__V LIMIT 10;
```
--------------------------------
### Example HTML Structure for Approved Email Fragments
Source: https://vaultcrmhelp.veeva.com/doc/Content/CRM_topics/Multichannel/ApprovedEmail/CreatingContent/CreatingAEFragments
This HTML structure demonstrates the basic requirements for an Approved Email fragment. Fragments must be enclosed in a `
` tag, and content should be within `
` tags. It shows how to include links to Vault documents using tokens like `{{PieceLink}}` and `{{ISILink}}`.
```html
```
--------------------------------
### Automatic Expense Estimation Formula
Source: https://vaultcrmhelp.veeva.com/doc/Content/CRM_topics/Events/EventBusinessRules/ExpenseEstRulesExample
This code snippet illustrates the formula used by the system to automatically calculate the 'estimate_vod' for speaker lodging. The formula multiplies the 'cost__v' by the number of 'Nights of Event', demonstrating a concrete example of the calculation.
```Formula
estimate_vod = cost__v * Nights of Event
estimate_vod = 150.00 * 2 = 300.00
```
--------------------------------
### Custom Unsubscribe Header URI Examples
Source: https://vaultcrmhelp.veeva.com/doc/Content/CRM_topics/Multichannel/ApprovedEmail/ManagingContent/OneClickUnsubscribe
Examples of custom URIs for the unsubscribe email header, supporting HTTPS and MAILTO protocols. These URIs can include object reference tokens for personalization.
```email-header
```
```email-header
,
```
--------------------------------
### Token-Based Link Labeling in Approved Email
Source: https://vaultcrmhelp.veeva.com/doc/Content/CRM_topics/Multichannel/ApprovedEmail/CreatingContent/LabelingLinks
This example shows how to include the 'LinkName' parameter when generating links using the 'approvedEmailAction' token in Approved Email. The 'LinkName' parameter is appended to the existing token URL for tracking purposes.
```html
```
--------------------------------
### Reference PDFs in HTML Key Messages - JavaScript
Source: https://vaultcrmhelp.veeva.com/doc/Content/CRM_topics/Multichannel/CLM/DisplayingPres/DisplayPDF
Content creators can programmatically reference PDF documents within HTML key messages using JavaScript. These examples demonstrate setting the document location to open the PDF.
```javascript
document.location = "/assets/my_pdf.pdf"; // this works fine
```
```javascript
document.location.href = "/assets/my_pdf.pdf"; // this works fine
```
--------------------------------
### Sort Event Speakers by Field and Order
Source: https://vaultcrmhelp.veeva.com/doc/Content/CRM_topics/Events/AE/EventSpeakerEventSessionToken
Use the `sort` parameter to specify a field and sort order for the `em_event_speaker__v` records. Defaults to sorting by `first_name__v`. Example: {{EventSpeaker[fields=speaker_formatted_name__v, em_speaker__vr.biography__c;sort=speaker_formatted_name__v, asc]}}.
```html
{{EventSpeaker[fields=speaker_formatted_name__v, em_speaker__vr.biography__c;sort=speaker_formatted_name__v, asc]}}
```
--------------------------------
### Configuring Custom Document Types and Subtypes in Vault CRM
Source: https://vaultcrmhelp.veeva.com/doc/Content/CRM_topics/Multichannel/Engage/Share/ISIPIDoc
This example shows the format for specifying custom document types and subtypes for ISI and PI documents within the Vault CRM CLM Admin Console. It demonstrates how to link specific API names to document and subtype fields. Subtypes are optional.
```plaintext
type = 'document_type_api_name__c' and subtype = 'subtype_api_name__c'
# Example for ISI Document Type and Subtype:
type = 'promotional__c' and subtype = 'safety_information__c'
# Example for PI Document Type and Subtype:
type = 'regulatory__c' and subtype = 'pi__c'
# Example with optional subtype:
type = 'promotional__c'
```
--------------------------------
### Create 'Assign Calls' Workflow in Vault CRM
Source: https://vaultcrmhelp.veeva.com/doc/Content/CRM_topics/CallPlanning/Managing/CallBooking
This code defines the creation of a new object workflow named 'assign_calls__c' for the 'Call' lifecycle. It includes steps to add a 'Start' control that prompts for the 'ownerid__v' field, and an 'Assign' action step that updates 'assigner__v' and 'assignment_datetime__v' fields.
```Workflow Configuration
Workflow Type: Object Workflow
Label: Assign Calls
Name: assign_calls__c
Lifecycle: Call
Use workflow for single object record: Unchecked
Workflow Steps:
Start Node:
Edit Button:
Add Control:
Control picklist: Select Prompt for Fields
Field: ownerid__v
Required: Checked
Assign Step:
Label: Assign
Name: assign__c
Type: Action
Description: Executes the assign action
Rules:
Rule 1:
Condition Type: Always
Perform Action: Update field
Field: assigner__v
Set to value: RecordByLabel(@WorkflowOwner.name__v)
Rule 2:
Condition Type: Always
Perform Action: Update field
Field: assignment_datetime__v
Set to value: Now()
End Type: End workflow
Configuration Status: Active
```
--------------------------------
### Example Zoom Dial-in Numbers in Engage Invitation
Source: https://vaultcrmhelp.veeva.com/doc/Content/CRM_topics/Multichannel/Engage/Meet/AddDialIn
This snippet demonstrates the output of the {{insertZoomDialInNumbers[en_US]}} token when used in an Approved Email invitation. It displays available phone numbers for different regions, along with the Meeting ID. This helps attendees easily join the audio portion of an Engage meeting via dial-in.
```plaintext
Phone Number(s):
+1 669 900 6833 (US San Jose)
+1 646 876 9923 (US New York)
+1 301 715 8592 (US Washington DC)
+1 312 626 6799 (US Chicago)
+1 778 907 2071 (Canada)
+1 204 272 7920 (Canada)
Meeting ID: 8613634421
```
--------------------------------
### Retrieve HTML from Attachment Field using customContent Token
Source: https://vaultcrmhelp.veeva.com/doc/Content/CRM_topics/Multichannel/ApprovedEmail/CreatingContent/InsertingQueriedData
This example demonstrates how to use the {{customContent}} token to retrieve HTML content from a .txt file stored in an attachment field (formulary_table__c) on the formulary_data__c object. The token executes a SOQL query to fetch the specific file content based on the account ID, allowing for personalized HTML insertion into emails. Ensure the attachment file is a .txt and under 1.2MB for successful retrieval.
```Salesforce Token
{{customContent[SELECT formulary_table__c FROM formulary_data__c where account__c = '{{account__v.id}}']}}
```
--------------------------------
### Linking Between Slides and Presentations using gotoSlide
Source: https://vaultcrmhelp.veeva.com/doc/Content/CRM_topics/Multichannel/CLM/CreatingContent/CreateHTML/CustomSlideNav
Enables navigation to specific slides within the same or different presentations using the gotoSlide JavaScript function. It can be implemented within an HTML tag's href or by updating the document location. This function respects user-specific settings like My Setup and product restrictions when launched from a Call or Account, but not from the Home Page. It supports jumping to Staged or Approved versions based on the originating presentation's status.
```javascript
gotoSlide(media_file_name__v);
```
```html
Go to Slide
```
--------------------------------
### Filter Event Speakers by Status
Source: https://vaultcrmhelp.veeva.com/doc/Content/CRM_topics/Events/AE/EventSpeakerEventSessionToken
Use the `status` parameter to filter the list of Event Speakers based on their `status__v` fields. Multiple statuses can be specified, separated by commas. Example: {{EventSpeaker[fields=speaker_formatted_name__v, biography__c;status=approved__v, invited__v]}}.
```html
{{EventSpeaker[fields=speaker_formatted_name__v, biography__c;status=approved__v, invited__v]}}
```
--------------------------------
### Marking Registration Fields as Required
Source: https://vaultcrmhelp.veeva.com/doc/Content/CRM_topics/Events/Attendees/RegistrationForm
This example shows how to designate specific fields as mandatory for registrants on a registration form. Appending `` to a field name marks it as required. This is useful for collecting essential information like city and state.
```text
city__v__c;;state__v__c
```
--------------------------------
### Specify Event Speaker Fields for Table Columns
Source: https://vaultcrmhelp.veeva.com/doc/Content/CRM_topics/Events/AE/EventSpeakerEventSessionToken
Use the `fields` parameter to define a comma-separated list of `em_event_speaker__v` fields to display as table columns. At least one field must be specified. Supports up to five levels of relationship references. Example: {{EventSpeaker[fields=speaker_formatted_name__v, em_speaker__vr.biography__c]}}.
```html
{{EventSpeaker[fields=speaker_formatted_name__v, em_speaker__vr.biography__c]}}
```
--------------------------------
### Restrict Calls Against Multiple Account Types (Veeva Settings)
Source: https://vaultcrmhelp.veeva.com/doc/Content/CRM_topics/Call_Reporting_2/Restrictions/RcType
This example illustrates how to restrict calls against multiple account types by listing them in the `allowed_call_record_types__v` Veeva Setting, separated by double semicolons. This configuration allows for granular control over which account types users can log calls against.
```plaintext
professional__v;;personaccount__v;;hospital__v;;
```
--------------------------------
### Linking Vault Documents within Approved Email Fragments
Source: https://vaultcrmhelp.veeva.com/doc/Content/CRM_topics/Multichannel/ApprovedEmail/CreatingContent/CreatingAEFragments
This example shows how to create a link to a specific Vault document within an Approved Email fragment using the `{{$Vault Document ID}}` token. The fragment will only send if the linked document is in a 'Steady State', ensuring compliance.
```html
```
--------------------------------
### Vault CRM: Example Inventory Impact Formula for Sample Adjustments
Source: https://vaultcrmhelp.veeva.com/doc/Content/CRM_topics/SampleManagement/ManagingSampleRelatedData/ManagingPicklistandFieldValues
This formula demonstrates how to modify the inventory impact calculation based on adjustment reason, transaction type, and submission status. It's used in the inventory_impact_quantity__v field on the sample_transaction__v object. It accounts for specific conditions to subtract quantities correctly.
```VQL
If(type__v = "adjustment__v"&& reason__v = "lost__v" && sample_transaction_status__v = "submitted__v", quantity__v, 0)
```
--------------------------------
### Create Email Address Formula Field (Vault CRM)
Source: https://vaultcrmhelp.veeva.com/doc/Content/CRM_topics/Multichannel/ApprovedEmail/ConfiguringAE/CreateSendingDomain
Examples of custom formula text fields to generate valid email addresses on the User object within Vault CRM. These formulas are used to match sender and subdomain domains for DMARC compliance. Adjust formulas based on user data complexity.
```Vault CRM Formula
first_name__sys & '.' & last_name__sys & '@subdomain.com'
```
```Vault CRM Formula
Left(email__sys,Find("@",email__sys)-1) & '@[subdomain.com]'
```
--------------------------------
### Sample Scene Configuration in JSON
Source: https://vaultcrmhelp.veeva.com/doc/Content/CRM_topics/Multichannel/CLM/CreatingContent/DefineAR
Defines a sample scene with models, their paths, assets, scaling, normal maps, and animation control panel settings. This JSON structure outlines the core components of a scene.
```json
{
"scenes":[
{
"id":"scene.L001",
"name":"Veeva Codesign",
"debug_mode":false,
"models":[
{
"id":"LogosCodesignVeeva",
"name":"LogosCodesignVeeva",
"path":"Models",
"assets":"Logos",
"file_extention":"dae",
"scale":[
0.025,
0.025,
0.025
],
"normal_maps":[
{
"obj_name":"file3",
"texture_name":"CodesignStudio.tga"
},
{
"obj_name":"file4",
"texture_name":"site.tga"
}
],
"logo":"logo.png",
"animation_control_panel":{
"type":"control_panel",
"id":"control_panel.interactions",
"buttons":[
"..."
]
}
}
]
}
]
}
```
--------------------------------
### Configure Email Alerts for Monitored Text Violations
Source: https://vaultcrmhelp.veeva.com/doc/Content/CRM_topics/ApprovedNotes/UsingAN/ReviewingViolations
Admins can configure Vault CRM's entry action capabilities to send email alerts to compliance users when specific conditions are met on monitored text records. This example demonstrates a basic configuration for open and recently modified records assigned to the current user and categorized as 'kickback__v'.
```Vault CRM Entry Action Condition
monitored_text__v.state__v = 'open' AND monitored_text__v.modified_date__v > 2 days
monitored_text__v.assignee__v = AND monitored_text__v.category__v = "kickback__v"
```
--------------------------------
### Sample Card Number Validation Regular Expression
Source: https://vaultcrmhelp.veeva.com/doc/Content/CRM_topics/CallSampling/Config/ConfiguringCS
This regular expression is used to validate sample card numbers within the Veeva Message 'SAMPLE_CARD_REG_EXPRESS;;CallReport'. It enforces specific formatting rules, such as starting with a capital letter followed by exactly four numeric characters. This helps in reducing data entry errors by ensuring sample card numbers adhere to a defined pattern.
```Regex
\b[A-Z][0-9]{4}\b
```
--------------------------------
### Insert Call Sample Table Token
Source: https://vaultcrmhelp.veeva.com/doc/Content/CRM_topics/Multichannel/ApprovedEmail/CreatingContent/ConfigTokens
Renders a table of call sample records. Columns can be specified as parameters. This token is supported in 'Receipts' entry points.
```email-templating
{{insertCallSample[product__v.name__v,quantity__v]}}
```
--------------------------------
### Creating Interactive CLM Content with HTML, CSS, and JavaScript
Source: https://vaultcrmhelp.veeva.com/doc/Content/CRM_topics/Multichannel/CLM/CLMOverview
Content creators can build reusable, interactive customer-approved content for CLM presentations using standard web technologies. This involves HTML for structure, CSS for styling, and Veeva's multichannel JavaScript library for interactivity. The generated content is hosted in PromoMats/MedComms and integrated with Vault CRM.
```html
Interactive CLM Content
Welcome to our Presentation
```
```css
body {
font-family: Arial, sans-serif;
margin: 20px;
}
h1 {
color: #336699;
}
#content-area {
margin-top: 20px;
padding: 15px;
border: 1px solid #cccccc;
background-color: #f9f9f9;
}
```
```javascript
/* Veeva Multichannel JavaScript Library (Conceptual) */
// This is a placeholder for the actual Veeva library functions.
// In a real scenario, you would import or include the Veeva library.
var Veeva = {
CLM: {
getData: function(callback) {
// Simulate fetching data
setTimeout(function() {
callback({
"slideTitle": "Introduction",
"slideText": "This is the first slide of our CLM presentation."
});
}, 500);
},
openLink: function(url) {
console.log("Opening link: " + url);
window.open(url, '_blank');
}
}
};
/* Custom script.js */
function renderSlide(data) {
document.getElementById('content-area').innerHTML = \
'
' + data.slideTitle + '
' + \
'
' + data.slideText + '
';
}
function nextSlide() {
// In a real CLM, this would navigate to the next slide data.
// For this example, we'll just re-render with new dummy data.
Veeva.CLM.getData(function(data) {
renderSlide(data);
});
}
// Initial slide load
Veeva.CLM.getData(function(data) {
renderSlide(data);
});
```
--------------------------------
### Reference Shared Resource in HTML
Source: https://vaultcrmhelp.veeva.com/doc/Content/CRM_topics/Multichannel/CLM/CreatingContent/SharedResources
Demonstrates how to reference shared resources like images, scripts, and stylesheets within HTML files using a specific path structure. This method is used by Content Creator Users to link to externally managed assets.
```html
```
--------------------------------
### Landing Page JavaScript for Multichannel Activity Tracking
Source: https://vaultcrmhelp.veeva.com/doc/Content/CRM_topics/Multichannel/ApprovedEmail/ReportAE/TrackMCActivitesAE
This HTML snippet containing JavaScript must be added to the external, customer-owned landing page. It ensures that Multichannel Activities are appropriately tracked by embedding an iframe viewer for the multichannel message. The script dynamically loads the necessary Veeva JavaScript and initializes the Multichannel Message frame.
```html
```
--------------------------------
### Define AR Scene Structure in JSON
Source: https://vaultcrmhelp.veeva.com/doc/Content/CRM_topics/Multichannel/CLM/CreatingContent/DefineAR
This JSON snippet demonstrates the structure for defining an AR scene within the AR_configuration.json file. It includes the scene's ID, name, and a placeholder for associated models. This configuration is fundamental for setting up AR presentations.
```json
"scenes" : [
{
"id" : "scene.L001",
"name" : "Veeva Codesign",
"models" : [...]
}
]
```
--------------------------------
### Touch Trigger Configuration in JSON
Source: https://vaultcrmhelp.veeva.com/doc/Content/CRM_topics/Multichannel/CLM/CreatingContent/DefineAR
Sets up touch triggers for interacting with models, specifying the trigger type, ID, associated object name, and a list of actions (e.g., animations, audio playback) to perform upon activation.
```json
"touch_triggers":[
{
"type":"trigger",
"id":"trigger.left.door",
"obj_name":"NovaSeq_2_a_Left_Door",
"actions":[
{
"type":"animation",
"id":"NovaSeq_2_a_Right_Door-anim"
},
{
"type":"audio",
"id":"audio.right.door.start"
}
]
}
]
```
--------------------------------
### Token Syntax for Vault CRM Speaker Contracts
Source: https://vaultcrmhelp.veeva.com/doc/Content/CRM_topics/Events/Speakers/SpeakerContractGeneration
Demonstrates the various token formats supported in .docx speaker contract templates for Vault CRM. These tokens dynamically populate contract information based on event, speaker, contract, or user data.
```text
{{ObjectAPIName.FieldAPIName}}
{{currentDate}}
{{currentTime}}
{{timeZone}}
```
--------------------------------
### JSON: AR Scene Audio File Configuration
Source: https://vaultcrmhelp.veeva.com/doc/Content/CRM_topics/Multichannel/CLM/CreatingContent/DefineAR
Configures audio files to be played when specific actions are initiated in an AR scene. Requires specifying the audio type, ID, and the associated sound file name.
```json
"audios":[
{
"type":"audio",
"id":"audio.shot",
"file_name":"ArrowHit02.wav"
}
]
```
--------------------------------
### Populate Allowed Products Field by Call (Vault CRM)
Source: https://vaultcrmhelp.veeva.com/doc/Content/CRM_topics/Call_Reporting_2/Restrictions/AllowedProd
This code snippet demonstrates how to populate the 'allowed_products__v' field on 'call2__v' records to define allowed products by call. It uses a double semicolon delimiter for the product list. This configuration ensures that only specified products can be detailed or sampled on a call.
```CRM
Populate the **allowed_products__v** field on the appropriate call2__v records with a double semicolon delimited list of the products that are allowed to be detailed or sampled, to define allowed products by call (optional). The format of the products in the field must be as follows: Product1;;Product2;;Product3;;. For example, Cholecap;;Restolar;;Narbrax;;
```
--------------------------------
### Define Object Recognition Triggers in JSON
Source: https://vaultcrmhelp.veeva.com/doc/Content/CRM_topics/Multichannel/CLM/CreatingContent/DefineAR
Lists the names of objects used to trigger object recognition software when placing a model. This array contains configuration objects for each reference object.
```json
"reference_objects":[
{
"name":"eyeball_marker_rounded_small.arobject"
},
{
"name":"eyeball_marker_dark.arobject"
}
]
```
--------------------------------
### Approved Email Receipt Template Tokens for Call Samples
Source: https://vaultcrmhelp.veeva.com/doc/Content/CRM_topics/Multichannel/ApprovedEmail/SendAE/EmailReceiptsforSignatureTransactions
This snippet demonstrates how to use the `insertCallSample` token within an Approved Email Receipt template to display call sample details. It shows how to add custom table headers and filter transaction line items based on product type and other attributes. This is useful for organizing multiple sample tables within the email.
```html
{{insertCallSample[tableHeader=Samples Left Behind,filterProductType=Sample,Quantity_vod__c,Product_vod__r.Sample_U_M_vod__c,Product_vod__r.Name,Product_vod__r.Manufacturer_vod__c,Product_vod__r.Distributor_vod__c]}}
```
--------------------------------
### Insert Call Sample Formatted Date/Time Token
Source: https://vaultcrmhelp.veeva.com/doc/Content/CRM_topics/Multichannel/ApprovedEmail/CreatingContent/ConfigTokens
Allows specifying date and time formats for call sample records when they are Date or Date/Time types. Refer to 'Formatting Tokens to Display Date and Time' for format details. Supported in 'Receipts'.
```email-templating
{{insertCallSample[Column1,Column2(FORMAT)]}}
```
--------------------------------
### Insert Call Sample Filtered Table Token
Source: https://vaultcrmhelp.veeva.com/doc/Content/CRM_topics/Multichannel/ApprovedEmail/CreatingContent/ConfigTokens
Filters call samples based on a specified product type before rendering them in a table. Different columns can be specified for each filtered table. Supported in 'Receipts'.
```email-templating
{{insertCallSample[filterProductType=Sample,quantity__v,product__v.name__v,product__v.manufacturer__v]}}
```
```email-templating
{{insertCallSample[filterProductType=Educational Material,quantity__v,product__v.name__v]}}
```
--------------------------------
### Disable Calls for a Single Account Type (Veeva Settings)
Source: https://vaultcrmhelp.veeva.com/doc/Content/CRM_topics/Call_Reporting_2/Restrictions/RcType
This example demonstrates how to disable all call report entry points for a specific account type by listing only the account object type in the `allowed_call_record_types__v` Veeva Setting. This is useful when calls are not supported for a particular account type.
```plaintext
professional__v
```
--------------------------------
### Populate Allowed Products Field by Territory (Vault CRM)
Source: https://vaultcrmhelp.veeva.com/doc/Content/CRM_topics/Call_Reporting_2/Restrictions/AllowedProd
This code snippet illustrates how to populate the 'allowed_products__v' field on 'tsf__v' records to define allowed products by territory. Similar to call-specific configuration, it uses a double semicolon delimiter for the product list. This ensures that users can only detail or sample specific products for accounts within a given territory.
```CRM
Populate the **allowed_products__v** field on the appropriate tsf__v records with a double semicolon delimited list of the products that are allowed to be detailed or sampled, to define allowed products by territory (optional). The format of the products in the field must be as follows: Product1;;Product2;;Product3;;. For example, Cholecap;;Restolar;;Narbrax;;
```
--------------------------------
### JSON: AR Scene Model Definition
Source: https://vaultcrmhelp.veeva.com/doc/Content/CRM_topics/Multichannel/CLM/CreatingContent/DefineAR
Defines a model within an AR scene, specifying its ID, name, path, assets, and file extension. The file extension must be either '.dae' or '.obj'. This structure is used to list multiple models.
```json
"models":[
{
"id":"LogosCodesignVeeva",
"name":"LogosCodesignVeeva",
"path":"Models",
"assets":"Logos",
"file_extension":"dae"
}
]
```
--------------------------------
### Custom Text Content Token Picklist
Source: https://vaultcrmhelp.veeva.com/doc/Content/CRM_topics/Multichannel/ApprovedEmail/CreatingContent/ConfigTokens
Allows picklist values to be populated by Content Tokens from Account, User, or User_Detail__v objects. Special characters like { and } are replaced with #. HTML tags are not supported.
```email-templating
{{customText[##accTitle## ##accFname## ##accLname##, ##accCredentials##|##accTitle## ##accLname##|##accFname##]}}
```
--------------------------------
### Configure Allowed Call Record Types (Veeva Settings)
Source: https://vaultcrmhelp.veeva.com/doc/Content/CRM_topics/Call_Reporting_2/Restrictions/RcType
This example shows how to configure the `allowed_call_record_types__v` Veeva Setting to restrict call reporting for specific account and call object types. It uses a double semicolon delimited list format. This setting is crucial for enforcing call restrictions at the administrative level.
```plaintext
hospital__v,meeting_brief__v,event__v;;
```
--------------------------------
### Sorting Contract Lines in Templates
Source: https://vaultcrmhelp.veeva.com/doc/Content/CRM_topics/Events/Speakers/SpeakerContractGeneration
Shows how to define the sort order for contract line records within a .docx template. Sorting can be based on multiple fields in ascending or descending order.
```text
{{contract_line__v.service_name__v}}
{{contract_line__v.service_name__v}}
```
--------------------------------
### Embed Vault Viewer in Web Page using HTML and JavaScript
Source: https://vaultcrmhelp.veeva.com/doc/Content/CRM_topics/Multichannel/ApprovedEmail/CreatingContent/EmbedVaultViewer
This snippet demonstrates how to embed the Vault Viewer into a web page using an HTML div and a JavaScript script. It loads the Vault Viewer API and initializes the viewer within the specified div. The height, width, and an error message can be customized.
```html
```
--------------------------------
### JSON: AR Scene Animation Control Panel
Source: https://vaultcrmhelp.veeva.com/doc/Content/CRM_topics/Multichannel/CLM/CreatingContent/DefineAR
Defines the control panel for animations within an AR scene. It includes navigation buttons (Next, Previous) and a slider, each with associated actions. This allows for user interaction to control animations.
```json
"animation_control_panel":{
"type":"control_panel",
"id":"control_panel.interactions",
"buttons":[
"..."
],
"slider":{
"type":"slider",
"id":"slider.main",
"animations":[
"..."
]
}
}
```
--------------------------------
### Configure Long Allowed Call Record Types List (Veeva Message)
Source: https://vaultcrmhelp.veeva.com/doc/Content/CRM_topics/Call_Reporting_2/Restrictions/RcType
This example shows how to handle allowed object type lists exceeding 255 characters by referencing a Veeva Message. The `allowed_call_record_types__v` setting is set to 'ALLOWED_CALL_RECORD_TYPES;;Common', and the detailed list is populated within the specified Veeva Message, using the standard object type formatting.
```plaintext
ALLOWED_CALL_RECORD_TYPES;;Common
```
--------------------------------
### JSON: AR Scene Label Definition
Source: https://vaultcrmhelp.veeva.com/doc/Content/CRM_topics/Multichannel/CLM/CreatingContent/DefineAR
Defines textual labels or descriptions to be displayed in an AR scene, typically at the bottom center of the screen. Formatting is not supported for the label text.
```json
"labels":[
{
"type":"label",
"id":"label.eyeball",
"text":"The Eyeball"
}
]
```
--------------------------------
### Configure Walk-in Fields Syntax
Source: https://vaultcrmhelp.veeva.com/doc/Content/CRM_topics/Events/Attendees/Walk_inAttendees
Defines the syntax for specifying fields to be populated by walk-in attendees during event registration. This ensures that required fields like 'last_name__v' are correctly identified and enforced. The syntax uses a semicolon-separated list of field API names, with '' appended to mark fields as required.
```text
;FieldName1;FieldName2;
;last_name__v;first_name__v;
```
--------------------------------
### JSON: AR Scene Anchor Configuration
Source: https://vaultcrmhelp.veeva.com/doc/Content/CRM_topics/Multichannel/CLM/CreatingContent/DefineAR
Defines anchor points for proximity triggers in an AR scene. Actions are initiated when the camera is within a specified distance of an object. Parameters include position offset and activation radius.
```json
"anchors":[
{
"type":"anchor",
"id":"anchor.eyeball",
"obj_name":"II__Eyeball",
"position":[
0,
0,
0
],
"distance":0.4,
"actions":[
{
"type":"label",
"id":"label.eyeball"
}
]
}
]
```
--------------------------------
### Custom Text Formatted Date/Time Picklist
Source: https://vaultcrmhelp.veeva.com/doc/Content/CRM_topics/Multichannel/ApprovedEmail/CreatingContent/ConfigTokens
Enables the display of Date or Date/Time fields within a picklist with specified formatting. Refer to 'Formatting Tokens to Display Date and Time' for format details. HTML tags are not supported.
```email-templating
{{customText[##ContentToken1##|##ContentToken2(FORMAT)##]}}
```
--------------------------------
### Configure Price-Additive In-Level Addition Mode
Source: https://vaultcrmhelp.veeva.com/doc/Content/CRM_topics/OrderManagement/PricingRules/Discounts/InLevelAddition
To enable Price-Additive In-Level Addition Mode, set the rebate_in_level_addition__v field to 1. This mode applies discounts iteratively.
```apex
UPDATE veeva_settings__v SET rebate_in_level_addition__v = 1 WHERE Id = 'your_veeva_settings_id';
```
--------------------------------
### Update Current Records on Exit in CLM
Source: https://vaultcrmhelp.veeva.com/doc/Content/CRM_topics/Multichannel/CLM/CreatingContent/CreateHTML/CreateUpdate
Demonstrates how to use the updateCurrentRecordsOnExit function to update multiple records (Account and KeyMessage) when exiting CLM content. It shows how to format the data using the formatUpdateCurrentRecords helper function. Note that attachment fields are not supported with these functions.
```javascript
com.veeva.clm.updateCurrentRecordsOnExit = function() {
var object1 = Account;
var values1 = {};
values1.Preferred_Statin__c = Juvastatin!;
var object2 = KeyMessage;
var values2 = {};
values2.Customer_Field__c = Saved information;
var objectArray = [object1, object2];
var valuesArray = [values1, values2];
return com.veeva.clm.formatUpdateCurrentRecords (objectArray, valuesArray);
}
```
--------------------------------
### Custom Text Picklist Token
Source: https://vaultcrmhelp.veeva.com/doc/Content/CRM_topics/Multichannel/ApprovedEmail/CreatingContent/ConfigTokens
Generates a picklist field with user-defined options. Blank values can be included by using a space. Direct HTML tags are not supported within the token's values.
```email-templating
{{customText[Hello|Dear|Hi]}}
```
```email-templating
{{customText[option1| |option2]}}
```
```email-templating
{{customText[option1|option2| ]}}
```
--------------------------------
### RSVP Landing Page JavaScript Integration
Source: https://vaultcrmhelp.veeva.com/doc/Content/CRM_topics/Events/AE/ApprovedEmailforEM
This JavaScript snippet is required on customer-hosted landing pages for RSVP links. It dynamically loads the Veeva multichannel message API and initializes an iframe to display the event response interface. The script targets a specific div with the ID 'multichannelmessage'.
```javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
```
--------------------------------
### Generate SSH Key Pair with OpenSSH
Source: https://vaultcrmhelp.veeva.com/doc/Content/CRM_topics/Multichannel/Engage/Connect/RequestECReports
This command generates an SSH key pair (public and private keys) using OpenSSH on Mac, Linux, or Windows 10. It's used for securing SFTP connections to Veeva. The '-P ""' option ensures no passphrase is set, which is often required for automated integrations.
```bash
ssh-keygen -P "" -m PEM -f custom_key_name
```