# Veeva Importer

## Introduction

The Veeva Importer is one of the target adapters available in migration-center starting with version 3.7. It takes the objects processed in migration-center and imports them into a Veeva Vault. Currently, for every supported Veeva Vault, there is a specific importer type:

* Clinical: ClinicalImporter
* Quality: QualityImporter
* RIM: RIMImporter

Importer is the term used for an output adapter which is most likely used at the last step of the migration process. An Importer (such as the Veeva Importer) takes care of importing the objects processed in migration-center into the target system (such as the Veeva Vault).

An importer works as a job that can be run at any time and can even be executed repeatedly. For every run a detailed history and log file are created.

An importer is defined by a unique name, a set of configuration parameters and an optional description. Veeva Importers can be created, configured, started and monitored through migration-center Client, while the corresponding processes are executed in the background by migration-center Job Server.

{% hint style="info" %}
When the term "Veeva Importer" is used in the following, it refers to all three Veeva Importers. The name of the specific Veeva Importer will be used if there is a feature applicable just for that adapter.
{% endhint %}

## Prerequisites

### Network Prerequisites

The importer uses FTP to upload the content of the documents and their versions to the Veeva Vault environment. This means the content will be uploaded first to the Veeva FTP server, so the necessary outbound ports (i.e. 21 and 56000 – 56100) should be opened in your firewalls as described here:

[http://vaulthelp.vod309.com/wordpress/admin-user-help/admin-basics/accessing-your-vaults-ftp-server/](http://vaulthelp.vod309.com/wordpress/admin-user-help/admin-basics/accessing-your-vaults-ftp-server/)

[https://support.veeva.com/hc/en-us/articles/216008767-Error-Connection-refused-by-server-Unable-to-Connect-to-FTP-Site-Using-Vault](https://support.veeva.com/hc/en-us/articles/216008767-Error-Connection-refused-by-server-Unable-to-Connect-to-FTP-Site-Using-Vault)

### Planning the Migration

In order to be able to successfully migration documents into Veeva Vault using migration-center each vault must have the Migration Mode setting enabled. Please contact Veeva Product Support for more details about how to enable Migration Mode for your Vault.

Before starting the ingestion into Veeva Vault you should inform Vault Product Support about this by filling this form:

[https://docs.google.com/forms/d/e/1FAIpQLSf5ef7zgyG-d3-r5ZYxFRnfNRNdxRptXUReDebwDI7P0B-\_SA/viewform](https://docs.google.com/forms/d/e/1FAIpQLSf5ef7zgyG-d3-r5ZYxFRnfNRNdxRptXUReDebwDI7P0B-_SA/viewform)

You should use the form 3 business days in advance of any migration and at least one week in advance of any significant migration. A significant migration includes over 10,000 office documents, 1,000 large documents (like video) or 500,000 object records.

In addition, if Migration is being run during “off hours” for the Vault’s location, or weekends, you should ensure that Vault Product Support is aware of requested activity.

## Veeva Importer Properties

To create a new Veeva Clinical Importer job click on the New Importer button and select “Veeva Clinical” from the adapter type dropdown list. Once the adapter type has been selected, the parameters list will be populated with the Veeva parameters. The other types of Veeva Importer can be created in a similar way by selecting the corresponding adapter type.

The Properties window of an importer can be accessed by double-clicking an importer in the list or selecting the Properties button or entry from the toolbar or context menu.

![](https://2125442758-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LXwpM5nhZwVq8kDixeu%2F-MEXPhGMlET33ueijXi7%2F-MEXVKECuD55vQ48jK2y%2FCapture.JPG?alt=media\&token=a360b960-eaa0-42c2-be7f-cfdf7c5bee6e)

### Common Importer Parameters

| **Configuration parameters** | **Values**                                                                                                                                                                                                                                                                           |
| ---------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| Name                         | <p>Enter a unique name for this importer</p><p><strong>Mandatory</strong></p>                                                                                                                                                                                                        |
| Adapter type                 | <p>Select the “Veeva Clinical” adapter from the list of available adapters</p><p><strong>Mandatory</strong></p>                                                                                                                                                                      |
| Location                     | <p>Select the Job Server location where this job should be run. Job Servers are defined in the Jobserver window. If no Job Server was selected, migration-center will prompt the user to define a Job Server Location when saving the importer.</p><p><strong>Mandatory</strong></p> |
| Description                  | Enter a description for this importer (optional)                                                                                                                                                                                                                                     |

### Veeva Importer Parameters

| **Configuration parameters** | **Values**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| ---------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| username\*                   | <p>Veeva username. It must be a Vault Owner.</p><p><strong>Mandatory</strong></p>                                                                                                                                                                                                                                                                                                                                                                                                                     |
| password\*                   | <p>The user’s password.</p><p><strong>Mandatory</strong></p>                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| server\*                     | <p>Veeva Vault name. Ex: fme-clinical.veevavault.com</p><p><strong>Mandatory</strong></p>                                                                                                                                                                                                                                                                                                                                                                                                             |
| proxyServer                  | The name or IP of the proxy server if there is any.                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| proxyPort                    | The port for the proxy server.                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| proxyUser                    | The username if required by the proxy server.                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| proxyPassword                | The password if required by the proxy server.                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| attributeMappingLocation     | The path of the configuration file that will be used for setting the references to the existing master data objects when importing documents. See [Setting References to Existing...](#setting-references-to-existing-master-data-objects-in-veeva) for more details.                                                                                                                                                                                                                                 |
| preserveVersionBinding       | Indicates if the version binding will be preserved when importing virtual documents from Documentum as binders in Veeva Vault. See [Working with Binders](#working-with-binders) for more details.                                                                                                                                                                                                                                                                                                    |
| importRelations              | Indicates if relations between documents will imported. If checked, the relations between the documents being imported will be imported as well. If not checked the relations will not be imported. They can be imported in another run by assigning the same migsets to the importer.                                                                                                                                                                                                                |
| batchSize\*                  | <p>The number of documents or versions that will be imported in a single bulk operation.</p><p><strong>Mandatory</strong></p>                                                                                                                                                                                                                                                                                                                                                                         |
| skipUploadToFTP              | <p>If not checked, the importer will copy the documents content to the FTP server during import from the location where they have been exported by the scanner. </p><p>If checked, the importer presumes the documents content was copied to the FTP server prior starting the import. In this case all paths of the content in the system rules <em>mc_content_location, mc_rendition_paths, attachments or  submissionFilePath</em> must be set with the corresponding paths on the FTP server.</p> |
| loggingLevel\*               | <p>Sets the verbosity of the log file.</p><p>Values:</p><p>1 - logs only errors during scan</p><p>2 - is the default value reporting all warnings and errors</p><p>3 - logs all successfully performed operations in addition to any warnings or errors</p><p>4 - logs all events (for debugging only, use only if instructed by fme product support since it generates a very large amount of output. Do not use in production)</p><p><strong>Mandatory</strong></p>                                 |

On the **| Migsets |** tab, the user can select the migration sets to be imported with this importer. Depending on the chosen Adapter Type only the migration sets compatible with this type of importer will be displayed and can be selected for import. Also, only migration sets containing at least one object in a validated state will be displayed (since objects which haven’t been validated cannot be imported).

![](https://2125442758-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2Fhelp%2F-M7JNOUYX3OoBTEHuS8n%2F-M7JQ0V1HveULtkURe01%2F3.png?generation=1589480530020263\&alt=media)

Available migration sets can be moved between the two columns by double clicking or using the arrows buttons.

### Additional Importer Configuration

For configuring some additional parameters that will apply to all importers runs, a configuration file (config.properties) provided in the folder …\lib\mc-veeva-importer. The following settings are available:

| **Configuration name**             | **Description**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| ---------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| threshold\_burst\_limit\_remaining | <p>This is set with the number of API calls remaining for the current 5-minutes burst limit before the importer enters in sleep mode and waits for the next burst interval.</p><p><strong>Default value = 500</strong></p>                                                                                                                                                                                                                                                                                                                  |
| threshold\_daily\_limit\_remaining | <p>This is set with the number of API calls remaining for the current 24-hours daily window before the importer stops importing objects.</p><p>An appropriate message is logged in the report log when daily limit is reached.<br><strong>Note:</strong> Set this value to 0 to enable the automatic pause and resume feature of the importer. When set to 0, the importer will pause for "waiting_time" hours when there are less than 1,500 API calls left before it resumes processing.</p><p><strong>Default value = 50000</strong></p> |
| client\_id\_prefix                 | <p>This is the prefix of the Client ID that is passed to every Vault API call. The Client ID is composed from this prefix followed by the id of the job run. The Client ID is always logged in the report log.</p><p><strong>Default value = fme-mc-importer</strong></p>                                                                                                                                                                                                                                                                   |
| request\_timeout                   | <p>The time in milliseconds the importer waits for response after every API call.</p><p><strong>Default value = 60000</strong></p>                                                                                                                                                                                                                                                                                                                                                                                                          |
| wait\_time                         | <p>Waiting time when reaching the daily limit. This parameter is used just when the threshold_daily_limit_remaining is set to 0. The value is represented in hours.</p><p><strong>Default value = 4</strong></p>                                                                                                                                                                                                                                                                                                                            |

{% hint style="info" %}
For applying the changes in the config.properties file the Job Server needs to be restarted.
{% endhint %}

## Working with Objects

Vault Objects are part of the application data model in Veeva Vault. Vault Objects are usually configured to be referenced in the document fields. For example, the Product document field corresponds to the Product object and is associated with all document types.

Veeva Importer allows importing object records from any supported source system to any supported Veeva Vault. For that, a migset of type “\<Source>toVeeva\<type>(object)” must be created. Ex: Veeva Quality Importer works with migsets of type “\<Source>toVeevaQuality(object)”.

### Rules for System Attributes

The following rules for system attributes are available when importing objects.

| **System Rule** | **Description**                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| --------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| name\_\_v       | <p>It must be set with the name of the object being imported. For some objects the “name__v” field is configured to be generated automatically by Veeva Vault when object is created. Usually, “name__v” is configured to be unique so if duplicated values are provided to the importer the affected objects fail to import.</p><p><strong>Optional</strong></p>                                                                                                  |
| object\_name    | <p>The name of the object. Ex: study__v, study_country__v</p><p><strong>Mandatory</strong></p>                                                                                                                                                                                                                                                                                                                                                                     |
| target\_type    | <p>The name of the migration-center internal object type that is used in the association. Ex: veeva-quality-object</p><p><strong>Mandatory</strong></p>                                                                                                                                                                                                                                                                                                            |
| attachments     | <p>Can be used to set file attachments to the object just in case it allows that (The <em>"Allow attachments"</em> option has to be set on <strong>true</strong>). </p><p>You must provide the full path (UNC or local filesystem on the job server) to the attachment file. Multiple files can be specified.</p><p>If the parameter <strong>skipUploadToFTP</strong> is checked, you must provide the FTP paths to the files.</p><p><strong>Optional</strong></p> |

Any editable object fields can be set using the normal transformation rules.

On Delta Migration, the existing attachments of an object will be replaced with those that are set on the "attachments" system attribute otherwise, the object will keep its attachments.

## Working with Documents

Veeva importer allows importing documents from any supported source system to any supported Veeva Vault. For that, a migset of type “\<Source>toVeevaClinical(document)” / “\<Source>toVeevaQuality(document)” / “\<Source>toVeevaRIM(document)” must be created.

Importing documents with multiple versions is supported by Veeva importer. The structure of the versions tree is generated by the scanners of the systems that support this feature and provide means to extract it. The order of the versions in Veeva Vault is set through the system rules: major\_version\_number\_v and minor\_version\_number\_\_v.

{% hint style="info" %}
All objects from a version structure must be imported since each of them references its antecedents, going back to the very first version. Therefore, it is advised to not drop the versions of an object between the scan and the import processes as this will generate inconsistencies and errors. If an object is intended to be migrated without versions (i.e. only the current version of the object needs to be migrated) than the affected objects should be scanned without enabling the respective scanner’s versioning option.
{% endhint %}

### Rules for System Attributes

The following rules for system attributes are available when importing documents.

| **System Rule**             | **Description**                                                                                                                                                                                                                                                                                                      |
| --------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| type\_\_v\*                 | <p>The Type from the Veeva Document Types tree</p><p><strong>Mandatory</strong></p>                                                                                                                                                                                                                                  |
| subtype\_\_v                | The SubType from the Veeva Document Types tree                                                                                                                                                                                                                                                                       |
| classification\_\_v         | The Classification from the Veeva Document Types tree                                                                                                                                                                                                                                                                |
| file\_extension             | <p>Optional rule for:</p><p> - setting the extension of the imported document in case the source content does not have any extension in the filesystem.<br> - overriding the existing extension from the source content on the filesystem</p>                                                                        |
| lifecycle\_\_v\*            | <p>The name of the lifecycle that should be attached to the document.</p><p><strong>Mandatory</strong></p>                                                                                                                                                                                                           |
| status\_\_v\*               | <p>The name of the lifecycle status</p><p><strong>Mandatory</strong></p>                                                                                                                                                                                                                                             |
| major\_version\_number\_\_v | Rule for indicating the major version number                                                                                                                                                                                                                                                                         |
| minor\_version\_number\_\_v | Rule for indicating the minor version number                                                                                                                                                                                                                                                                         |
| mc\_content\_location       | <p>Optional rule for importing the content from another location than the one exported by the scanner. </p><p>If the <strong>skipUploadToFTP</strong> parameter is checked in the adapter definition then the adapter will suppose that this parameter contains the FTP path for every document.</p>                 |
| mc\_rendition\_paths        | <p>Path on the filesystem or FTP where the renditions are located.</p><p>Must be the same number of values as mc_rendition_types. See <a href="https://app.gitbook.com/@migration-center/s/help/~/drafts/-MDPPHw7Is1cBl857aXa/importers-1/veeva-importer#renditions">Renditions</a> for more details.</p>            |
| mc\_rendition\_types        | <p>The rendition type from the available Veeva types for the specified document type.</p><p>Must be the same number of values as mc_rendition_paths.</p>                                                                                                                                                             |
| name\_\_v                   | The name of the document                                                                                                                                                                                                                                                                                             |
| parent\_section             | Optional rule used for specifying the section names in the binders where the documents will be imported.                                                                                                                                                                                                             |
| permissions                 | <p>Allows setting permissions for the imported document.</p><p>The format is the following:</p><p>{Role_name}.{USERS or GROUPS}=username1,username2,…</p><p>Example:</p><p>reviewer__v.users=user1@vvtechpartner.com,user2@vvtechpartner.com</p><p>mc_custom_role__c.groups=approver_group__c</p>                    |
| attachments                 | <p>Should be set with the file paths of the attachments to set for the current document. </p><p>If the parameter <strong>skipUploadToFTP</strong> is not checked then the values should contain the paths on the filesystem to the files otherwise, the rule will contain the FTP paths of the attachment files.</p> |
| target\_type\*              | <p>The name of the object type from the migration-center’s object type definitions. Ex: veeva-rim-document</p><p><strong>Mandatory</strong></p>                                                                                                                                                                      |
| mc\_content\_location       | This rule offers the possibility to overwrite the location of the objects content.                                                                                                                                                                                                                                   |

### Renditions

When importing documents using the Veeva importer you have the option of migrating existing renditions adding different content as renditions. This is done using the two system rules available in the migset: ”mc\_rendition\_paths” and ”mc\_rendition\_types”. Each of these two rules can have multiple values and you need to set the same number of values for both rules. Doing otherwise will cause the importer to throw an error.

If the parameter **skipUploadToFTP** is not checked then the ”mc\_rendition\_paths” rule will need to contain a path on the filesystem to the content just like for the ”mc\_content\_location” attribute otherwise, the rule will contain the FTP path of the desired content.

The ”mc\_rendition\_type” will need to specify the name of the rendition type from Veeva. The specific types of renditions available are specified in the document type definition in Veeva.

{% hint style="info" %}
”mc\_rendition\_type” needs the internal name of the rendition type (e.g. large\_size\_asset\_\_v).
{% endhint %}

### Relations

Veeva Importer allows importing "dm\_relation" objects scanned by Documentum Scanner as Veeva Vault relations. The internal name of Veeva Vault relations that will be created should be configured in the configurations file "relations-mapping.properties" located in the jobserver folder ./lib/mc-veeva-importer.

{% code title="relations-mapping.properties" %}
```
DctmRelation=supporting_documents__c
```
{% endcode %}

{% hint style="info" %}
The internal name of available Veeva Vault relations can be found in the Vault configuration menu. The internal name must be used instead of the label.
{% endhint %}

The relations will be imported after all documents and versions are imported. If a document part of a relation could not be imported, the relation will not be imported so the document being parent in the relation will be moved in status "Partially Imported". The documents in the status "Partially Imported" can be submitted to the importer again but their relations will be imported only after the documents being children in the relations are imported.&#x20;

More information about how relations are working in the Veeva Vault can be found here: [About document relationships](https://vaulthelp2.vod309.com/wordpress/admin-user-help/documents-admin-user-help/about-document-relationships/).

## Working with Binders

Binders allow users to organize and group documents in a flexible structure. Binders are comprised of sections, which can nest to build a hierarchical structure, and links to documents in Vault.

Veeva importer allows you to import Virtual Documents scanned from Documentum as Binders in any supported Veeva Vault. For that a migset of type “DctmtoVeeva\<type>(binder)” must be created.

The following features are currently supported:

* Create binders from scratch by preserving the hierarchical structure of the Virtual Document
* Create binders based on a template so the sections are generated as they are defined in the template
* Importing Virtual Documents version as Binder versions
* Import the content of the Virtual Document as the first child of the Binder
* Preserving version binding (implicit and symbolic) for documents and binders

When importing Virtual Documents as Binders all normal documents that are referenced by the Virtual Documents should be imported before or together with the binders (in the same importer run).

{% hint style="info" %}
Setting version labels as minor or major does not work for binders!
{% endhint %}

### Rules for System Attributes

The following rules for system attributes are available when importing binders.

| **System Rule**             | **Description**                                                                                                                                                                                                                                                                                   |
| --------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| type\_\_v\*                 | <p>The Type from the Veeva Document Types tree</p><p><strong>Mandatory</strong></p>                                                                                                                                                                                                               |
| subtype\_\_v                | The SubType from the Veeva Document Types tree                                                                                                                                                                                                                                                    |
| classification\_\_v         | The Classification from the Veeva Document Types tree                                                                                                                                                                                                                                             |
| lifecycle\_\_v\*            | <p>Should be set with the name of the lifecycle where the document will be attached.</p><p><strong>Mandatory</strong></p>                                                                                                                                                                         |
| status\_\_v\*               | <p>The name of the lifecycle status</p><p><strong>Mandatory</strong></p>                                                                                                                                                                                                                          |
| major\_version\_number\_\_v | Rule for indicating the major version number (does not work for binders)                                                                                                                                                                                                                          |
| minor\_version\_number\_\_v | Rule for indicating the minor version number (does not work for binders)                                                                                                                                                                                                                          |
| mc\_content\_location       | <p>Optional rule for importing the content from another location than the one exported by the scanner.  </p><p>If the <strong>skipUploadToFTP</strong> parameter is checked in the adapter definition then the adapter will suppose that this parameter contains the FTP path of the file.</p>    |
| name\_\_v                   | The name of the document                                                                                                                                                                                                                                                                          |
| permissions                 | <p>Allows setting permissions for the imported document.</p><p>The format is the following:</p><p>{Role_name}.{USERS or GROUPS}=username1,username2,…</p><p>Example:</p><p>reviewer__v.users=user1@vvtechpartner.com,user2@vvtechpartner.com</p><p>mc_custom_role__c.groups=approver_group__c</p> |
| template\_name              | The name of the template the Binder will be created from. Leave it empty to create the binder from scratch.                                                                                                                                                                                       |
| target\_type\*              | <p>The name of the object type from the migration-center’s object type definitions. Ex: veeva-clinical-document</p><p><strong>Mandatory</strong></p>                                                                                                                                              |

### Version Binding

When importing Documentum Virtual Documents as Veeva Vault Binders, the binder components can be bound to a specific version. When checking “preserveVersionBinding” in the importer configuration, the binder components are bound to the same version as they are bound in Virtual Documents in Documentum. The components will be bound to the latest version in Veeva Vault in the following cases:

* The version binding is not specified in the “version\_label” attribute of the “dmr\_containment” object in the Documentum
* The version binding is specified in Documentum but “preserveVersionBinding” was not enabled in Documentum

{% hint style="info" %}
Circular references between binders are not allowed in Veeva Vault and therefore the importer will throw an error when trying to import circular references. To avoid that, the circular references should be fixed in the source system before scanning the Virtual Documents.
{% endhint %}

### Importing Documents to Binder Sections

Creating binders with sections is possible by specifying a template name that contains sections. The documents can be imported to sections by setting the “parent\_section” system rule in the migset containing the normal documents. In case of hierarchical sections, the sections will be defined separated by slash “/”. Ex: Section1/Section1.1/Section1.1.1

## Working with RIM Submissions

Veeva RIM Importer allows you to import Submission Archives in RIM Vault. For that, a migset of type “DctmtoVeevaRIM(submission)” must be created. The importer does not create the submission definition but import submission archives to existing submission. The zip file to be imported must contain the “Submission” folder and “Application” folder.

The following rules for system attributes are available when importing binders.

| **System Rule**        | **Description**                                                                                                                                                                                                                                       |
| ---------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| application\_number    | Application number the submission belongs to                                                                                                                                                                                                          |
| submission\_\_v        | The submission name                                                                                                                                                                                                                                   |
| submission\_file\_path | <p>The path to the zip file containing the submission archive. </p><p>If the <strong>skipUploadToFTP</strong> parameter is set in the adapter definition then the adapter will suppose that this parameter contains the FTP path of the zip file.</p> |
| target\_type           | The name of the object type from the migration-center’s object type definitions: veeva-rim-submission                                                                                                                                                 |

## Working with Veeva Vault Specific Features

### Setting the Document type/subtype/classification

{% hint style="danger" %}
There is a known limitation regarding setting classification elements when the Veeva Vault configuration contains elements with the same label on the same level. In other words, Veeva platform allows you to have, for example, 2 types with the same label and different names (My Type - my\_type\_\_c, My Type - my\_type1\_\_c). In order to prevent any issue, we strongly  recommend the type, subtype and classification elements to be unique.
{% endhint %}

When performing a job with the Veeva importer you must specify the “target\_type” and the type/subtype/classification for the documents. Due to how the Veeva document types are structured, the object type definition in migration-center will act as a container for all the necessary target attributes from Veeva. Therefore the object type definition will be set for the ”target\_type” system rule, but the actual type of the document will be defined by the values set for the type\_\_v / subtype\_\_v / classification\_\_v system rules.

### Required Attributes Based on Vault Type

Depending on which type of Veeva Vault you are importing into (Clinical, Quality or RIM) there are several attributes which are mandatory, and you will need to associate transformation rules with valid values, as follows:

* Clinical: product\_\_v, study\_\_v, blinding\_\_v
* Quality: country\_\_v, owning\_department\_\_v, owning\_facility\_\_v
* RIM: none

{% hint style="info" %}
The values for these attributes need to be the actual label value and not the internal name or id (i.e. “Base Doc Lifecycle” instead of “clinical\_doc\_lifecycle\_\_c”.\
This applies to all of the attributes mentioned above.
{% endhint %}

### Lifecycles

Each document type in Veeva can have one or multiple Lifecycles associated with it. When importing a document of a certain type you need to specify, using the ”lifecycle\_\_v” attribute, which of the available lifecycles must be set for the document.

To find out or modify the available lifecycles for a specific type you need to navigate in Veeva to the Admin section -> Configuration tab -> Document Types and open the specific type you are interested in.

From the same Configuration section you will find Document Lifecycles, here you can select a lifecycle and see the specific lifecycle states which you can set for the ”status\_\_v” attribute.

### Permissions

The available permissions for a specific document are specified by the lifecycle which is attached to that document. To see what available permissions there are, you need to go to the Admin interface -> Configuration -> Document Lifecycles then select the lifecycle and go to the tab Roles. These are the permissions you will be able to set with the Veeva Importer if you attach this particular lifecycle to the document you are importing.

The format is the following:

{Role\_name}.{USERS or GROUPS}=username1,username2,…

Example:

reviewer\_\_v.users=user1@vvtechpartner.com,user2@vvtechpartner.com

mc\_custom\_role\_\_c.groups=approver\_group\_\_c

### Setting References to Existing Master Data Objects in Veeva

Veeva supports document/object attributes that reference master data objects by their internal ID. Usually these internal IDs are unknown when migrating documents/objects from a source system to Veeva. Thus, the migration-center let the users set other values than “_ID_” for the referenced objects. By default, the user should provide the value of the field name\_\_v for the referenced objects. Setting the value of other fields is possible through a configuration file that is specified in the importer parameter: **attributeMappingLocation**.

The configuration file should have the following structure for document attributes:

```
<document_field_name>=<object_name>,<object_lookup_field>
```

For example, when setting the field “country\_\_v” the user may want to set in migration-center the country abbreviation value. In this case, the following line should be added in the configuration file:

```
country__v=country__v,abbreviation__c
```

The configuration file should have the following structure for object attributes:

```
<object_field_name>.<object_name>=<ref_object_name>,<object_lookup_field>
```

If you want to use the "name\_\_v" instead of "id" when you set the "country\_\_v" field from "location\_\_v" object then the following line should be added in the configuration file:

```
country__v.location__v=country__v,name__v
```

The field of the object (abbreviation\_\_c, country\_\_v) that will be set in the configuration file should be defined as unique in the Object definition in Veeva Vault otherwise the lookup functionality may not work properly.

Setting an object field that refers to a specific Veeva document version can be done by setting the document id so it shouldn't be specified in the configuration file.

### Attachments

The system rule “attachments” allows the user to import attachments for the documents. It should be set with the fully qualified paths of the attachments.

If a document has two or more attachments with the same name but different content, the importer will create multiple versions for the same attachment.

## Delta Migration

Objects that have changed in the source system since the last scan are scanned as update objects. Whether an object in a migration set is an update or not can be seen by checking the value of the _Is\_update_ column – if it’s 1, the current object is an update to a previously scanned object (the base object). An update object cannot be imported unless its base object has been imported previously.

Currently, update objects are processed by Veeva importer with the following limitations:

* Only document and object updates can be imported. The updates for Binders are reported as errors by the importer
* Only metadata is updated for the documents. The content, renditions, permissions and classifications are not updated.
* New versions of documents are fully supported
* New fields can be added by an update to existing Veeva Objects

Beside the delta mechanism described above, the importer allows importing new versions to documents based on “external\_id\_\_v” system rule. If that’s set, the importer will behave in the following way:

1. **A document with the same external id exists in the vault**\
   \
   The importer adds the document being imported as a new version to the existing document. The new version can only be imported if a version with the same major and minor value doesn’t already exists.\

2. **A document with the same external id cannot be found in the vault**
   1. If the document being imported is a root version (level\_in\_version\_tree = 0) then a new document is created.
   2. If the document being imported is not a root version (level\_in\_version\_tree > 0) then the documents fail to import, and an appropriate error message is logged.
3. **Object names must be unique. Thus, the importer will report an error if an update tries to change the name of the object to an existing one.**

## Log Files

A complete history is available for any Veeva Importer job is available from the respective items’ History window. It is accessible through the History button/menu entry on the toolbar/context menu. The History window displays a list of all runs for the selected job together with additional information, such as the number of processed objects, the start and ending time and the status.

![](https://2125442758-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2Fhelp%2F-M7JNOUYX3OoBTEHuS8n%2F-M7JQ0V21uJfWm34tu0G%2F4.png?generation=1589480530023684\&alt=media)

Double clicking an entry or clicking the Open button on the toolbar opens the log file created by that run. The log file contains more information about the run of the selected job:

Version information of the migration-center Server Components the job was run with

The parameters the job was run with

Execution Summary that contains the total number of objects processed, the number of documents and folders scanned or imported, the count of warnings and errors that occurred during runtime.

Log files generated by the Documentum Adapter can be found in the Server Components installation folder of the machine where the job was run, e.g. _…\fme AG\migration-center Server Components \<Version>\logs_

{% hint style="info" %}
The amount of information written to the log files depends on the setting specified in the ‘loggingLevel’ start parameter for the respective job.
{% endhint %}
