### 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 Creates a link to a Promotional Piece Vault document Creates a link to an Important Safety Information Vault document ``` -------------------------------- ### 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
Creates a link to the Vault document with an ID of 20. Creates a link to the Vault document with an ID of 87.
``` -------------------------------- ### 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]}}

 

{{insertCallSample[tableHeader=Samples Ordered,filterProductType=BRC,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 ```