Vault Loader allows you to perform bulk Create, Update, and Delete actions on object records in your Vault. Loader also provides an Upsert action that lets you create new records and update existing records using a single CSV input. You can also create and update users with the User and Person objects. To learn about managing users with the User object, see Managing the User and Person Objects. Learn more about managing object record attachments.
Loading Object Records
Before loading object records, prepare the CSV input file containing object record field names and values.
To load object records:
- In the left panel of the Loader tab, click Load.
- For the CSV File, click Choose and select the CSV input file.
- In the Object Type drop-down, select the object on which to perform bulk actions.
- In the Action Type drop-down, select Create, Update, Upsert, or Delete.
- In the Key Field drop-down, select any unique fields from the specified object. This option is only required for the Delete, Upsert, and Update actions.
- Optional: Select the Record Migration Mode checkbox. Record Migration Mode allows you to migrate object records in a noninitial state and with minimal validation, create inactive records, and set system-managed fields such as Created By. Record Migration Mode does not bypass record triggers.
- Optional: Select No Triggers to bypass record triggers in Record Migration Mode.
- Optional: Select the Include updated field values in the output log for verification checkbox to include supported VQL fields in the output logs. VQL query validation will impact performance.
- Optional: Click Map Fields to access the field mapping grid. You can also load a previously saved mapping by clicking the Map Fields drop-down button and selecting Load Saved Mapping.
- Click Start Load.
Before processing the request, Vault validates the selected CSV file. If the file is valid, Vault begins processing the request. When finished, you’ll receive a Vault notification and email with request details and CSV output files.
Field Mapping
With field mapping, you can choose to map specific fields of the selected object type you wish to load to the columns in your CSV input file. This is especially useful when importing records from another vault whose field names may not exactly match those on the target vault, or when importing data from a source outside of Vault. For example, imagine you are migrating batch data with existing batch IDs from a legacy system to Vault. You can map the external_id__v
field to a column on your CSV called “old batch id” when creating Batch object records.
The field mapping grid contains the following columns:
- Field Name: The name of the object field in the target vault. Lookup fields appear below their associated object reference field and are designated with an arrow icon.
- Field Label: The label that appears for the field in object records in the target vault UI.
- Type: The field type in the target vault.
- CSV Column: The value in the CSV column header. If you used Vault Loader Extract to generate the CSV, these values will match the field names in the source vault.
Searching & Filtering Columns
You can choose to show only certain types of fields in the field mapping grid by selecting one or more checkboxes in the Filter section. You can enter a page number above the field mapping grid to jump to a specific page, or use the navigation arrows. Use the Search box to search for a specific field.
Setting the CSV Column
Vault automatically maps CSV column headers to similar field names. To change these mappings, select a column header from the applicable CSV Column drop-down list to map that column to the desired object field. Select (no mapping) to remove a mapping and make the field blank in the newly created or updated record. Click Clear Fields to remove all mappings, or click Save Mapping to save the current field mapping for future use.
Mapping Object Reference Fields
Vault maps object reference fields using a lookup field on the referenced object. In the example above, the Product (product__c
) field is populated by mapping the product__c.generic_name__c
field to the generic name CSV column. You can only map one lookup field per object reference field. If all lookup fields are set to (no mapping) for an object reference field, it will be blank in the newly created or updated records or, if the object reference field is required, the load will fail.
Auto-Formatting
Since Vault requires certain fields to be in a specific format, Loader uses auto-formatting to convert field values to Vault’s standard format before completing a load. Loader uses auto-formatting for the following field types:
- Boolean: Loader ensures that all boolean field values are either True or False prior to loading
- Picklist: When mapping data to a picklist, Loader uses the picklist name (public key) for lookup prior to loading. If you don’t provide a public key for the picklist, Loader can also use the picklist label for lookup.
Additional Details
- Vault uses yellow highlighting for required CSV columns.
- The drop-down lists in the CSV column displays (no mapping) for available columns of the CSV.
- Already mapped fields are unavailable in the field mapping grid.
How to Delete Object Records
To delete with Vault Loader, you will upload a CSV input file that lists the records you wish to delete. CSVs for delete actions only require the ID field. The rest of the process works as described in Loading Object Records. You cannot delete User object records, but you can make user accounts inactive in one or more individual Vaults by setting the user’s Vault membership to false. Learn more about Vault membership assignments.
Cascade Delete
When deleting records for certain objects, Vault can cascade delete an entire hierarchy of related records. When deleting records for an object that uses the cascade deletion setting, you can only delete one record (and its related records) in a single load. This means you cannot use the cascade delete setting on multiple object records.
You cannot use the cascade delete option when bulk deleting records.
How to Log Object Record Deletions
Object record deletions may be reviewed by navigating to Admin > Logs > Object Record Audit History. This tab displays the date and time of the deletion, the username which performed the deletion, the record, and the event of the deletion.
The Delete action permanently deletes an Object Record. When a user deletes an object record, the object record audit history captures information about deleted records, such as their object type and field values. Filters may be applied to narrow down the results further.
In the event the Audit Trail is not turned on in the Options section of the Vault object, the Delete event action will not appear in the Object Record Audit History, as the Audit Events are not captured on the object.
The following shows the Delete action which is the equivalent of deleting an object record. When a user deletes an Object Record, the Object Record Audit History captures information about deleted records, such as their Object Type and Field values. Filters may be applied to narrow down the results further.
How to Retrieve Object Records
It is not possible to retrieve deleted Object Records and their related references. Object Record related Attachments cannot be restored.
Object Record Deletion Limitations
Object, Object Record, Object Relationship, and Object Field restoration are not possible in Vault. In the event any of these Vault elements are deleted, they become inaccessible.
Create Records in a Specific Lifecycle State
Vault Loader allows you to specify a lifecycle state when creating or updating object records. When preparing your CSV file, you can specify a lifecycle state (state__v
) or state type (state_label
) field value to import records in the specified state using the Create, Update, and Upsert actions.
To create or update a record in a specific lifecycle state, select the Record Migration Mode checkbox before loading your CSV. Vault executes minimal validation when creating or updating records in migration mode. You must have the Vault Owner Actions: Record Migration permission to import records in a specific state.
Preparing CSV Input Files
Fields vary between objects. The following list includes the fields that are always or usually required, as well as several sample fields that cover the different field types. We recommend using Loader to extract column headers and basing your CSV input on that file. Use Record Migration Mode to relax certain constraints when creating and updating object records.
Column Header | Field | Example Value | Notes |
---|---|---|---|
id |
ID | 00P000000000101 | Required for updating or deleting records. In update and delete actions, this is required for all rows. In upsert actions, you can leave this blank for new records but must fill it in for existing records. To set the id in create actions, enable Record Migration Mode. |
name__v |
Name | WonderDrug | Required for record creation unless the object uses auto-naming. |
object_type__v |
Object Type | 00P000000000304 | Sets the object type using the object field name as the column header and the ID value of the record; if left blank, the object record will use the “base” type, for example, Base Product. |
object_type__vr.api_name__v |
Object Type > Name | pharmaceutical__v |
Sets the object type using the relationship name (object_type__vr ) plus object field name (api_name__v ) as the column header and the object type name value (not label); if left blank, the object record will use the “base” type, for example, Base Product. |
campaign__c |
Campaign | 00P000000000101 | References an object record using the object field name (campaign__c ) as the column header and the ID value of the record. Learn more about loading object reference fields. |
campaign__c.name__v |
Campaign > Name | Rise Above | References a related object record using the field on the object you’re updating (campaign__c ) plus the name field on the related object (name__v ) as the column header. When creating object records with Vault Loader, you cannot reference related object field values to create values for fields that use a Lookup type field in a dynamic reference constraint. Instead, you must use the reference object field name as a column header and provide record IDs as values as shown in the above example for camapign__c . |
doc_reference__c |
Document Reference Field (Versioned) | 1457_0_1 | References a field on a specific version of a document. |
doc_reference_unbound__c |
Document Reference Field (Unversioned) | 1457 | References a field on the latest version of a document. Learn more about unbound document fields. |
family__c |
Product Family (picklist) | Wonder | References a picklist option using the picklist value name or label. |
generic_avail__c |
Generic Available | false | Indicates “No” for a Yes/No type field. |
date_approved__c |
Date Approved | 2017-01-29 | Dates must be formatted as YYYY-MM-DD. |
datetime_approved__c |
DateTime Approved | 2017-08-04T19:53:00.000Z | DateTime values must be formatted as {YYYY-MM-DD}T{HH:MM:SS.SSS}Z and use 24-hour time. Time must be in UTC, not in your time zone. DateTimes must end with the .000Z UTC expression; the zeros may be any number. |
rich_text__c |
Rich Text Field | <a href="https://veeva.com">Veeva Website</a> |
Rich Text fields support up to 32,000 plaintext characters, with an additional 32,000 characters reserved for HTML markup. In the Vault UI, users can only enter HTML markup through the buttons in the Rich Text Editor, however, manual HTML is supported in Vault Loader CSV input files. |
state__v |
Lifecycle State | draft_state__c |
Specifies the lifecycle state of the record. Only available for Create, Update, and Upsert actions with Record Migration Mode enabled. You can also provide object lifecycle state labels to the state__v column and Loader will look up the public key name given that the state labels are unique. |
state_label |
Lifecycle State Type | base:object_lifecycle:initial_state_type |
Specifies the lifecycle state type of the record. When providing both a state and state type, the state_label value must map to the provided state__v value. For example, if the state__v value is set to draft_state__c , the state_label value must already be set to draft in the destination Vault. Only available for Create, Update, and Upsert actions with Record Migration Mode enabled. |
See example inputs:
How to Load Object Reference Fields
You can reference an object record using any object field, for which the value must be unique. Do not include more than one column header for each object reference, or use field mapping to select a single column. If your CSV contains a blank value for an object reference field, the field will be blank in the newly created or updated record or, if the object reference field is required, loading the record will fail.
How to Load User Records
You can use Vault Loader to create and update User records with the user__sys
object. This allows you to update custom fields on User records, as well as standard fields such as Manager. Because Vault synchronizes User records with Legacy User accounts, Vault automatically updates Legacy User accounts when you create or update User records. For example, if you update the language__sys
field on a User record for John Smith, Vault also updates the same field for John Smith’s Legacy User account.
To create, update, or upsert users:
- In the left panel of the Loader tab, click Load.
- For the CSV File, click Choose and select the CSV input file.
- In the Object Type drop-down, select Users from the Objects section.
- In the Action Type drop-down, select Create, Update, or Upsert.
- Click Start Load.
When creating new User records, the following fields are required in all Vaults:
Name | Field | Example Value | Notes |
---|---|---|---|
email__sys |
ewoodhouse@email.com | The user’s email address. | |
first_name__sys |
First Name | Elaine | The user’s first name. |
last_name__sys |
Last Name | Woodhouse | The user’s last name. |
username__sys |
User Name | ewoodhouse@veepharm.com | The user’s Vault username (login credential). For example, ewoodhouse@veepharm.com. |
language__sys |
Language | 0LU000000000101 | The user’s preferred language. |
locale__sys |
Locale | 0LO000000000104 | The user’s location. |
timezone__sys |
Timezone | america_los_angeles__sys |
The user’s time zone. |
license_type__sys |
License Type | full__v |
Optional: The user’s license type. If omitted, default value is full__v . |
security_profile__sys |
Security Profile | 0SP000000000106 | The user’s security profile. For example, Vault Owner. |
status__v |
Status | active__v |
The status of the user. |
Limits
Vault Loader does not support the following for user_sys
:
- Create Cross-domain users
- Reset Password
- Activate or deactivate a user at the domain level
- Manage Vault membership
To perform the above actions, see Vault Loader: Create & Update Legacy Users.
File Validation
Before beginning the Vault Loader job to create, update, or delete object records, Vault checks that the selected CSV file meets certain criteria:
- If creating object records, the total number of records in the Vault, plus new records created by the CSV, would not exceed your Vault’s limits
- If creating object records, includes at least one record
- Is not empty
- Does not contain empty columns
- Includes a valid header row (Invalid header rows are those with no columns that match to metadata for the records you’re loading.)
- If using the Delete, Upsert, or Update actions, the columns specified as the Key Field must be mapped.
If your file is not valid, Vault displays a notification, stops the process, and allows you to select a new CSV file. If some of the column headers do not match metadata for your Vault, the notification will allow you to stop the load or ignore those columns and proceed.