Developer Features in 25R1

We are pleased to bring you the following additions and enhancements to Developer Portal features in 25R1.

Service Announcements

Service Announcements are changes that may affect existing integrations. Organizations should assess these features against their existing integrations and make updates where necessary.

Java 17 for Vault Java SDK: Auto-Enablement

See Full Release Schedule

Over the next several releases, Veeva is upgrading Vault Java SDK to Java 17. Java 17 includes optimizations that can improve performance and efficiency compared to Java 8, allowing for reduced resource usage.

In this release, Vault is auto-enabling Java 17 compilation in all Vaults, with the option to temporarily disable Java 17 if code incompatibilities are found. When enabled, Vault compiles new SDK code deployments with Java 17 instead of Java 8. This means that enabling Java 17 does not automatically test your custom code for compatibility, as existing code is not recompiled. To test your code for compatibility with Java 17, redeploy any existing custom code to recompile with Java 17.

When Java 17 is enabled:

Learn more about how to upgrade your code to Java 17, including solutions to common Java 17 compilation errors.

Release Dates:

See the full release schedule for more information about these release dates.

TLS Cipher Suite and Version Changes

Release Date: 24R3.2; Dec 18, 2024

In the 25R1 release, we have modified the set of TLS 1.2 cipher suites supported by Vault servers, removing weak cipher suites, and adding support for TLS 1.3. These changes may affect some custom integrations, but not users accessing Vault with a supported browser. All customers and partners with affected integrations have been contacted directly by Developer Support.

Learn more about Veeva Vault cipher suite changes.

Picklist Limit Updates

Release Date: 24R3.2; December 18, 2024

In multi-value picklist fields on objects, users can select a maximum of 100 values. Prior to this change, users could select more than 1,000 values, which resulted in a less optimal user experience and performance.

To prevent immediate integration interruption, users can still edit existing multi-value picklist fields on object records with more than 100 values selected, as long as the new number of values selected is less than or equal to the quantity currently selected. For example, an existing multi-value picklist with 150 values selected could be updated to 149 selected, but not to 151. Once updated to 149, a subsequent update to the same multi-value picklist could not have 150 values selected.

To ensure the ongoing functionality of integrations, developers need to evaluate their code to ensure all updates to multi-picklist values do exceed 100 picklist values (or the existing number of values, whichever is greater).

Additionally, this feature raises the limit for the number of possible entries that can exist in a picklist (on objects or documents) from 1,204 to 2,000.

Release Highlights

Custom Pages

Release Date: 24R3.2; December 18, 2024

With Custom Pages, your organization can now build completely custom user interfaces in Vault. This enables you to create specialized user interfaces for specific use cases without setting up external infrastructure. For example, with Custom Pages, your organization can build complex data entry forms, aggregated data views, and integration portal interfaces.

Developers create Custom Pages with client-side and server-side code. On the client side, developers write Custom Pages in JavaScript with their preferred frameworks and libraries. On the server side, developers can leverage the power of Vault Java SDK to retrieve and manage Vault data. Integrations can also dynamically send users to Custom Pages within an integration flow.

To create a Custom Page, developers need to:

Learn more about Custom Pages.

Component Definition Query

Release Date: 25R1.0; April 11, 2025

The Component Definition Query API enables developers to build simple and scalable configuration tools using Vault API. Queries can be constructed to filter and extract component definitions at high speeds, allowing developers to store the configuration in external source code repositories.

This new API supports queries on Vault component records (vault_component__v) and retrieving their MDL (mdl_definition__v) and JSON definitions (json_definition__v). Developers can also query inbound VPK components (vault_package_component__v) for the definitions of inbound package component steps, allowing developers to understand which changes were executed as part of the package.

Component Definition Query:

POST /api/{version}/query/components

Word Formatted Outputs

Release Date: 24R3.2; December 18, 2024

Word Formatted Outputs is a new feature that allows admins to design formatted outputs using a Microsoft Word file instead of an Adobe XFA PDF file as the input file. Learn more about the user and Admin-facing functionality of this feature in the Vault Help release notes.

This feature has added the input_file_type and output_format attributes to the Formattedoutput component type’s MDL. Existing Formattedoutput components will be migrated to the new model upon release. Vault still accepts any VPKs and MDL components using the old model and converts them to the new model upon deployment.

Global Changes

Global changes are features that affect multiple product areas or affect Vault holistically. For example, new functionality accessible through both Vault API and Vault Java SDK.

Roll-up Fields

Release Date: 24R3.2; December 18, 2024

Roll-up fields offer a powerful way to aggregate values from child records associated with a parent object via a parent-child object relationship, such as calculated expenses in an expense report. Roll-up fields deliver these calculated values over time without manual effort. Learn more about this feature’s user and Admin-facing functionality in the Vault Help release notes.

Previously, this functionality was only available with custom SDK code. If your organization currently utilizes custom SDK code which mimics Roll-up field functionality, we encourage you to take advantage of Roll-up fields instead and deprecate your SDK code solution. Updates to Roll-up fields on parent records are considered a change on the record. However, Roll-up field updates do not invoke Vault Java SDK triggers.

MDL

In MDL, Roll-up fields now include several new attributes: rollup('true'), rollup_relationship_name, rollup_source_field, rollup_function, and rollup_filter_criteria.

Vault API

You can set Roll-up fields using Record Migration Mode, but they otherwise behave as read-only. When you configure a Roll-up field, Vault calculates its value when an event occurs on the child records associated with it.

Developers can initiate a recalculation for Roll-up fields on a single object and check the status of a recalculation using Vault API. When performing a full recalculation on an object, Vault recalculates all Roll-up fields on the object asynchronously.

Recalculate Roll-up Fields:

POST /api/{version}/vobjects/{object_name}/actions/recalculaterollups

Retrieve Roll-up Field Recalculation Status:

GET /api/{version}/vobjects/{object_name}/actions/recalculaterollups

Vault Java SDK

This release brings the following changes to use the Vault Java SDK for Roll-up fields:

Enhanced Picklist Administration

Release Date: 24R3.2; December 18, 2024

As part of this feature, we are introducing additional attributes to the Picklist component type’s MDL. The new system_managed attribute will indicate that users cannot:

However, users may be able to change the labels of the picklist values, activate or inactivate them, and change the sequencing depending on the nature of restrictions placed on system and standard picklists.

As part of this feature, picklist values will now be returned via picklist APIs and SDKs sorted ascendingly based on their designated order (MDL order attribute). Picklist values that possess the same order value will be sorted in the order they were configured.

Picklist Dependencies

Prior to this release, dependencies between picklist values could only be specified on the fields that leverage picklist. Because these dependencies exist on the field (not picklist), there could be differing dependencies between two fields that leverage the same picklist. As part of this release, standard picklists can now have dependencies defined on the picklist, as opposed to the field. Learn more about the user and Admin-facing functionality of this feature in the Vault Help release notes.

Picklists that have dependencies defined will present a new controlling_picklist MDL attribute that details the picklist upon which the current one is dependent. In addition to the controlling picklist attribute on the picklist, the Picklistentry subcomponents will contain a new controlling_entries MDL multi-value attribute that details which values on the controlling picklist the dependent picklist’s value is dependent upon.

Vault API

The Retrieve All Picklists endpoint has been enhanced to indicate a picklist is system-managed:

GET /api/{version}/metadata/objects/picklists

The Retrieve Picklist Values endpoint has been enhanced to provide any defined system-managed dependencies:

GET /api/{version}/objects/picklists/:{picklist_name}

Vault Java SDK

Vault API v25.1

Vault API features added in 25R1 only affect API v25.1, unless otherwise noted.

New Platform Endpoints

SDK Debug Log API

Release Date: 24R3.2; December 18, 2024

These new endpoints allow developers to manage the SDK Debug Logs via Vault API, which can be used by external tools or to download the files without accessing the UI.

Retrieve All Debug Logs:

GET /api/{version}/logs/code/debug

Retrieve Single Debug Log:

GET /api/{version}/logs/code/debug/{id}

Download Debug Log Files:

GET /api/{version}/logs/code/debug/{id}/files

Create Debug Log:

POST /api/{version}/logs/code/debug/

Reset Debug Log:

POST /api/{version}/logs/code/debug/{id}/actions/reset

Delete Debug Log:

DELETE /api/{version}/logs/code/debug/{id}

Existing Platform Endpoints

Document Template Conversion Enhancements

Release Date: 24R3.4; February 7, 2025

Vault API now supports converting a basic document template into a controlled document template by specifying the template_doc_id__v, which automatically changes the value of the is_controlled__v attribute to true. These changes apply to the following existing endpoints:

Update Single Document Template:

PUT /api/{version}/objects/documents/templates/{template_name}

Update Multiple Document Templates:

PUT /api/{version}/objects/documents/templates

Optimizing Validate Session User API

Release Date: 24R3.2; December 18, 2024

To optimize the performance of the Validate Session User API, starting in v25.1 the response only includes attributes stored in Vault. For example, the endpoint no longer returns the domain name and domain status. Previous versions of the API are unaffected by this change, but developers are encouraged to use the Session Keep-Alive API to keep sessions active and to upgrade to v25.1 to optimize performance when session user information is required.

Document Migration Mode Support for Document Relationships

Release Date: 24R3.2; December 18, 2024

Document Migration Mode now supports Document Relationships when using Vault Loader (UI and CLI) and Vault API. This feature enhances Vault performance when migrating document relationships in Veeva Promomats.

Migration Package Deployment Enhancements

Release Date: 24R3.2; December 18, 2024

The Retrieve Package Deploy Results API now includes a URL to download a ZIP file containing all deployment success and failure logs without needing to access Vault UI.

Additionally, deployment logs are created as record attachment versions on the Vault Package (vault_package__v) object. Previously, each log file was a separate attachment. From this release, there is a single attachment, with each new log added a new version.

Audit Grouping ID in Object Audit API

Release Date: 24R3.4; February 7, 2025

This feature adds the grouping_id to the Object Audit API. Vault populates the grouping_id, which indicates that the audit entries with the same ID are grouped logically.

Application-Specific Endpoints

Vault PromoMats: Deprecating Create Document Update Job API for Standard Metrics

Release Date: 24R3.2; December 18, 2024

As of this release, we deprecated the Standard Metrics: Create Document Update Job endpoint in all Vault API versions.

Vault Clinical Operations: Global Procedure Definitions

Release Date: 24R3.2; December 18, 2024

This feature streamlines procedure management in Vault by allowing for a Vault-level library of global Procedure Definitions that can be used to create Procedure Templates. Learn more about the user and Admin-facing functionality of this feature in the Vault Help release notes.

With this feature, a Populate Procedure Definitions endpoint is now available to create Procedure Definitions for a specific study.

POST /api/{version}/app/clinical/ctms/populate-procedure-definitions

Vault Clinical Operations: Merge Global Directory

Release Date: 24R3.4; February 7, 2025

With this feature, a new endpoint is now available for Clinical Operations Vaults to request the merge of two records on the following Global Directory objects: Person, Contact Information, Organization, and Location. Before records are successfully merged, Vault API performs validation to protect the Global Directory’s data integrity. Merging Global Directory data allows for correcting duplicate records that may exist due to migrations, integrations, or day-to-day activities.

Initiate Clinical Record Merge:

POST /api/{version}/app/clinical/objects/{object_name}/actions/merge

Vault Safety Inbox Item Import for Product Quality Complaints

Release Date: 24R3.4; February 7, 2025

To support the intake of Inbox Items for Product Quality Complaints, the Intake JSON endpoint now supports the following fields on the Case Adverse Event (case_adverse_event__v) object:

OmniConnect JS API

Telephony Support: Click to Dial

Release Date: 24R3.4; February 7, 2025

In MedInquiry Vaults with telephony functionality, users can now dial phone numbers from the Case and Case Contact pages. To support this in Vaults with custom telephony integrations, we’ve added the following methods to the Omniconnect JS API v25.1:

This feature also updates the existing onConnected method to accept isOutbound: true as part of the metadata object.

VQL

Order of Operation Support for Parentheses in FIND

Release Date: 24R3.4; February 7, 2025

Starting in v25.1, the VQL FIND() clause respects parentheses and operator precedence. This means that operations enclosed within parentheses are evaluated first, and logical conjunctions (AND) take precedence over logical disjunctions (OR).

For example, in FIND ('diabetes' SCOPE ALL AND ('insulin' SCOPE CONTENT OR 'endocrinology' SCOPE PROPERTIES)), VQL evaluates the operation in parentheses first.

TRIM() Picklist Namespace

Release Date: 24R3.2; December 18, 2024

With this release, you can use the new TRIM() VQL function with Picklist fields in the SELECT statement. This function removes the trailing namespace suffix from a picklist value name, such as __sys, __v, or __c. This transforms the query response for picklist names from picklist_value__c to picklist_value.

Filter by Reference Lookup Field in an Inner Join Subquery

Release Date: 24R3.2; December 18, 2024

Vault now supports reference lookups (joins using dot notation) in the WHERE clause of an inner join subquery. Developers can leverage this feature to retrieve values from an additional level of separation from the main query.

Example:

SELECT id
FROM component__c
WHERE id IN (SELECT parent_component__c FROM sub_components__cr WHERE sub_component_category__cr.name__v = 'VQL')

Vault Java SDK

Workflow Task Action Services SDK

Release Date: 24R3.4; February 7, 2025

This feature provides Vault Java SDK services to manage workflow tasks. This will enable developers to automate parts of a workflow execution. With the new services and interfaces, developers will be able to access:

Learn more in the SDK Documentation.

Notification SDK: Send Translated Emails to Persons

Release Date: 24R3.4; February 7, 2025

Developers can now send translated emails to Persons using the Vault Java SDK’s NotificationService. To accomplish this, we’ve deprecated the two existing methods for setting notification recipients and replaced them with two new methods. The new methods will accept a List<String> instead of a Set<String> and will handle duplicate detection automatically:

Object Metadata SDK: Object Prefix

Release Date: 24R3.4; February 7, 2025

Developers can now retrieve object metadata by the object prefix using the .withObjectPrefix() method. This is useful when trying to determine the metadata for an object based on the object record ID only, as the first three characters of a record ID correspond to the object prefix.

ObjectMetadataRequest objectMetadataRequest = 
objectMetadataService.newObjectRequestBuilder()
    .withObjectPrefix("00P") 
    .build();

Custom Web API: Set Errors

Release Date: 24R3.2; December 18, 2024

From this release, developers can set the errors node of the Custom Web API’s response using the webApiContext.newWebApiFailureResponseBuilder().This allows developers to create response patterns consistent with system and standard Vault APIs.

Query Describe for SDK

Release Date: 24R3.2; December 18, 2024

SDK developers now have access to Query Describe metadata when using Query Service to execute and validate VQL queries. Developers can leverage this to understand the data type of the fields returned.

Retrieve Picklist with Specified Language

Release Date: 24R3.2; December 18, 2024

The PicklistRequest.Builder is enhanced so that developers can pass a language when constructing their picklist request builder. With this feature, it is now possible to retrieve picklist labels in a specified language, instead of the Vault’s base language or the user’s language.

MDL

Email to Vault: Option to Always Run as Email Processor User

Release Date: 24R3.4; February 7, 2025

For inbound email addresses that allow Persons or Anyone as a sender, Vault Admins now have the option to always use the specified Email Processor User when running the email processor even if the sender’s email address belongs to a Vault User.

To support this, we’ve added the new run_as_processor_user(boolean) attribute to the Inboundemailaddress component.

Summary Email Enhancements and User-Driven Notifications

Release Date: 24R3.4; February 7, 2025

Vault now includes several enhancements to help reduce notification overload for users by using Summary Email notifications as a standard more frequently. Learn more about the user and Admin-facing functionality of this feature in the Vault Help release notes.

As part of this feature, the Notificationtemplate component MDL now defaults the email_preferences attribute to summary if no value is specified.

Enhanced Formatting Options for Overlay Templates

Release Date: 24R3.4; February 7, 2025

Admins can now customize page format, adjust font styling, select text alignment, and add logos when creating basic overlay templates that will apply to viewable renditions upon download. Prior to 25R1, Admins needed to leverage XFA templates to apply customizations like these to their overlay templates.

To support this, the MDL for the Overlaytemplate component type has additional attributes that store the values for the enhanced options in the component:

All existing VPK Packages and MDL will be backward compatible. However, if users view the component in the UI, they will see the new editor window, and upon save, the Overlaytemplate component attributes will be stored in the new attributes. Creating new XFA templates is not supported.

Enhanced Formatting Options for Signature Page Templates

Release Date: 24R3.2; December 18, 2024

This feature enables enhanced formatting options, such as the addition of logos or text styling, allowing developers to create signature page templates without Adobe XFA technology.

To support this feature, the Signaturepage component has the following new attributes that store the HTML for the appropriate parts of the signature page:

We’ve also added a new system-managed attribute schema_version to MDL to identify whether a Signaturepage uses the existing or new enhanced formatting options.

Upon release, existing basic templates will have their Rich Text attributes populated with data translated from existing values in header_01, header_02, signature_block_01, signature_block_02, footer_01, and footer_02, as applicable.

When schema_version is 0, existing attributes header_01, header_02, signature_block_01, signature_block_02, footer_01, and footer_02 will be used when generating signature pages using that template. Otherwise, Rich Text attributes will be used.

Any VPKs and MDL using the old header, signature block, and footer attributes will still be accepted. When schema_version is 0, richtext fields will be auto-populated with data translated from those fields upon execution. The same applies if schema_version is not 0 as long as no value is provided in the corresponding Rich Text attribute.

Application-Specific MDL

Veeva Quality: Deployment Enhancements for Quality Teams

Release Date: 24R3.2; December 18, 2024

A circular dependency between Quality Teams and formatted outputs when deploying configuration using a VPK has been resolved by introducing a new component and subcomponent: Qualityteamlifecycleassociation and Qualityteamrolelifecycleassociation. Existing Quality Teams will be migrated to the new components automatically upon release.

Release Date: 24R3.4; February 7, 2025

In Quality Vaults, Related Record Configurations now include a new section that defines reference records to be copied when the Create Related Record action executes, greatly reducing time spent doing manual data entry.

To support this feature, the Relatedrecordsetup MDL component type now includes the copy_attachments attribute and the new Relatedrecordreferencemapping subcomponent type.

Veeva QMS: Reason for Change: Support for Custom Objects

Release Date: 24R3.4; February 7, 2025

Admins can now configure the Reason for Change feature for custom objects. To support this feature, the Qualityreasonforchange component MDL has the following new attributes:

Veeva QMS: Quality Event Suggestions

Release Date: 24R3.4; February 7, 2025

To support this feature, the Qualityrecordcheck component’s display_fields attribute is now conditional. This means that if the Qualityrecordcheck is for Quality Event Suggestions, display_fields aren’t required, but they will remain required for recurrence checks and duplicate checks. In addition, two additional subcomponents have been introduced to capture the field and related record suggestions configuration: Qualityfieldsuggestion and Qualityrelatedrecordsuggestion.