Advanced subscription properties
DM
You can click Advanced at the top of the subscription page to edit detailed settings in the Edit Module Properties dialog. This dialog contains, at a minimum, the required settings from the subscription, and default values for settings that haven't been specified.
The Edit Module Properties dialog includes properties that can be edited, as well as properties that should not be updated.
Available module properties
The following properties might be initially populated in the Edit Module Properties dialog, or they can be added. The default values can be changed.
Feed properties
"entity.model.cleanser[.ENTITY]":
"<value, value, ...>"
This property defines cleansing rules to apply in the model stage after all entities are extracted. The value is a comma (,) separated list of cleansers. The list implies the order.
If an [ENTITY]
is specified, the rules apply only to those entity types. Otherwise, the rules apply to the entire feed.
Example:
"entity.model.cleanser.ADDRESS": "address.loqate"
"entity.model.rules[.ENTITY]":
"<value, value, ...>"
This property defines model rules to apply in the model stage for a given file. The list implies the order.
If an [ENTITY]
is specified, the rules apply only to those entity types. Otherwise, the rules apply to the entire feed.
Example:
"entity.model.rules.HCP": "network:nex, network:cleanup"
"feed.adhoc": "<true/false>"
This property enables you to overwrite the default reprocessing behavior. If true
, the feed is not checked for prior processing, and the feed will be reprocessed.
The default is true
.
"feed.dcrProvided": "<true/false>"
This property identifies whether the DCR response file is provided in the subscription.
The default is false
.
"feed.exclude": "<format:file_pattern_1, file_pattern_2>"
This property represents a list of file name patterns, using glob or regex, to be excluded from the feed.
Example:
Use this property to exclude .xml files.
"feed.exclude": "glob:__MACOSX,.DS_Store, glob:*.xml"
"feed.file.include": "<file_location>*"
This property specifies the folder where the files (or a .zip file containing them) are stored.
Example:
If the files being processed are at file://company/inbound/test, the <file_location> would be test* with the asterisk (*) acting as a single or multiple word wildcard.
"feed.file.trimleading[.ALIAS]": "<value>"
Example:
If the feed file name is CRM_test_01012013.zip, a value of 4, removes CRM_ from the beginning of the file name prior to processing.
"feed.file.trimleading": "4"
"feed.file.trimtrailing[.ALIAS]": "<value>"
Example:
If the feed file name is CRM_test_01012013.zip, a value of 9 removes _01012013 from the end of the file name prior to processing.
"feed.file.trimtrailing": "9"
"feed.inactivateMissingItems": "<true/false>"
If true, all keys for any missing entity in the source feed are inactivated (even keys on sub-objects). If the entity is present, but has missing sub-objects, the keys from that source are inactivated for the missing sub-objects.
This property is false
by default.
Only use this property if you are certain that the feed always contains all records for the source.
For more information, see Source inactivation detection.
"feed.item[.ALIAS]": "<file_pattern>"
This property enables you to use an alias as the object name in the model map and normalization rules, instead of more complex file names.
Example:
Use ACCOUNT
instead of Account_qwerty_2345.
"feed.item.ACCOUNT": "Account_*"
"feed.multivaluedattribute.separator": "<value>"
The property defines the delimiter for multivalued fields. By default, the delimiter is a comma (,).
Example:
"feed.multivaluedattribute.separator: (string, default ",")"
"feed.primary.country": "<value>"
Indicates the default value for primary_country__v
if not otherwise specified in the feed.
There cannot be spaces in the value (for example, " US" or " US ").
Example:
"feed.primary.country": "US"
"feed.retain.null": "<true/false>"
Controls whether mapped fields are interpreted as a null value (a request to clear the attribute). This property is false
by default.
For use cases, see Null out values in source files.
"feed.stash": "<true/false>"
Controls whether source files are automatically archived when a job completes. This property is false
by default.
For information, see Archiving source files.
"feed.uri": "<file://URI_path>"
Represents the FTP location of the files being processed. The URI must point to the root folder.
Example:
If the files are located at file://company/inbound/test, the URI must be file://company/inbound. The format of the URI is based on the URI scheme used to access local files on a computer.
Job log properties
"job.log.export":"<true/false>"
If true, exports the job error log details in .csv file format.
This property is false
by default.
"job.match.additionalColumns": "<match/source:fieldName.childFieldName>"
Optionally include additional columns to the match log .csv file. The values are comma (,) separated list of column names. For more information, see Match analysis log.
Example:
"job.match.additionalColumns": "match:addresses__v.vid__v"
In this example, the Veeva IDs (VIDs) of matched addresses will be added to the match log.
Match properties
"job.match.dataCleansing": "<true/false>"
Determines whether data cleansing should be done before matching. This property is false
by default.
"job.match.dedup": "<true/false>"
Specifies whether blocking and classification are performed to deduplicate ASK A single incoming record matches multiple incoming or Network records without one clear "best" match. Ambiguous matches typically require human review. (fuzzy) or unmatched source records.
This property is false
by default.
For more information, see Deduplicating source data.
For fuzzy match against Veeva OpenData, see job.match.networkMasterLinkage
.
For fuzzy match against the current instance, see job.match.fuzzyMatch
.
"job.match.fuzzyMatch": "<true/false>"
Specifies whether match rules will run against records in the current instance.
This property is true
by default.
For fuzzy match for source deduplication, see job.match.dedup
.
For fuzzy match against Veeva OpenData, see job.match.networkMasterLinkage
.
"job.match.keyMatch": "<true/false>"
Identifies if matching based on Veeva ID or custom key A cross-reference between an identifier from an external system and a Network ID. is done before other types of match.
This property is true
by default.
"job.match.maxMatches": "<value>"
Sets the limit for the number of matches found before a job is stopped. The value must be less than, or equal to, (<=) the hard limit setting (the number of matches per job).
"job.match.networkMasterLinkage": "<true/false>"
Specifies whether the match rules (fuzzy match) will run against Veeva OpenData records. This will not match third party data against Veeva OpenData records.
For fuzzy match for source deduplication The process of merging duplicate records., see job.match.dedup
.
For fuzzy match against the current instance, see
job.match.fuzzyMatch
.
This property is false
by default.
"job.match.skipMerge": "<true/false>"
It is used with the following properties to run a job in simulation mode: job.immutable
and job.simulation
.
This property is true
when the Enable Simulation Mode setting is selected for a subscription.
This property is read-only to ensure that the value does not change if it is copied and pasted between subscriptions.
"job.match.usePreviousConfig": "<true/false>"
Determines that when a job is rerun, whether to load the previous match configurations or find the current best configurations.
This property is false
by default.
"job.match.withCandidateRecord": "<value>"
Specifies whether candidate records in your customer instance are included in fuzzy matching. Values are included and excluded.
The property value is included by default.
"job.match.withExternallyMastered": "<value>"
Specifies whether externally mastered (contract org) entities are included in fuzzy matching. Values are included or excluded.
"job.match.withVeevaMastered": "<value>"
Identifies whether mastered entities (either by Veeva OpenData or a third party data source) are included in fuzzy matching. Values are included or excluded.
This property uses the is_veeva_master__v
field with the value Yes/True to identify mastered entities. For example, "job.match.withVeevaMastered": "excluded"
, will prevent matching to any third party or Veeva mastered records where the is_veeva_master__v
field value is Yes/True.
Merge properties
"job.merge.allowCustomerOwnedChildren": "<true/false>"
Enables locally managed sub-objects (previously called child objects) on locally managed records to be added to Veeva owned records during merges. If the setting value is true
, locally managed sub-objects are retained and merged to the Veeva OpenData record. If the setting is false
, the locally managed sub-objects are inactivated and will not be included on the Veeva managed record. This property can be used with the job.merge.allowCustomerOwnedChildren.CHILD
property to determine the merge instructions for sub-objects.
This property is included in the default module properties for any new source subscriptions added using the Network instance user interface. It is also used during manual merges and bulk merge.
This property value is true
by default for all of the above jobs.
"job.merge.allowCustomerOwnedChildren.CHILD": "<true/false>"
Enables you to define a specific locally managed sub-object to be retained when the locally managed record is merged with a Veeva OpenData record. The sub-object name must be in uppercase format; for example, ADDRESS, PARENTHCO, LICENSE, CONDITION__C (custom sub-object).
Example: "job.merge.allowCustomerOwnedChildren.ADDRESS": "false"
. When the property value is false
, locally managed address sub-objects are dropped when the record is merged with the Veeva OpenData record. These dropped sub-objects will become Merge_Inactivated.
This property can be used with the job.merge.allowCustomerOwnedChildren
property to determine the merge instructions for sub-objects.
"job.merge.allowInvalidSourceRecordMerge": "<true/false>"
Use in bulk merge jobs to merge Invalid records into Valid records.
Example: "job.merge.allowInvalidSourceRecordMerge": "true"
. When the value is true, an Invalid record can be merged into a Valid record. The Invalid record is then transitioned to a merge loser (Merged_Into). Custom keys and valid sub-objects are moved from the Invalid record to the winning (Valid) record.
Must be used with the other bulk merge properties: "job.merge.allowSourceMerge": "true"
and "job.merge.mergeInstruction": "InclusiveMerge"
.
"job.merge.allowUpdatesForRecordsWithState": "<value>"
Determines what records can be updated during the subscription job.
This property value is ANY
by default.
Possible values: ANY
, VALID
, INVALID
, UNDER_REVIEW
, and MERGED_INTO
.
For more information, see Updating records by record state.
"job.merge.enable.childdedupe_tie_breaker": "<true/false>"
This property deduplicates sub-objects during data load. It ensures that when you have existing duplicate sub-objects (for example, addresses), Network selects the best duplicate to match on using tie breaker rules (based on status and primary fields). For more information about the tie breaker rules, see Deduplicating sub-objects.
The value for the new property is true
, by default, for all new subscriptions, even if you do not have source deduplication for sub-objects enabled in your subscription. The property is set to false for existing subscriptions.
This property is true
by default.
"job.merge.childDedup": "value"
Specifies whether duplicate sub-objects will be merged during the data load. Values can be any combination of ADDRESS, LICENSE, and PARENTHCO. Values must be in uppercase.
For more information, see Deduplicating sub-objects.
"job.merge.mergeInstruction": "value"
Passes merge instructions as a global job property.
Possible value: InclusiveMerge - All items (keys, sub-objects, attributes) are considered for merging. All attributes undergo regular survivorship handling.
For more information, see Bulk merge.
For manual merges (Find Suspect Match), the value is ExclusiveMerge
- All items are considered for merging but regular survivorship is not performed; items from the surviving record are retained. Items that are not present on the surviving record are merged over from the losing record.
"job.merge.restrictPostMergeRules": "<true/false>"
Restricts the type of attributes to which changes can be propagated. Only custom attributes will be updated when this property is true.
This property is true
by default.
"job.merge.treatNullAsAbsent": "<true/false>"
This is an instance wide property to treat NULL and EMPTY as the same. It can be overridden in a subscription
This property is true
by default throughout your Network instance. It means that if a field value is NULL, it will be treated as EMPTY. To override this setting for incoming data and populate field values with NULL, set this property to false
.
Example
When the property value is true
, NULL values are treated as EMPTY; any source updating the field with a value will win, regardless if a higher source set the value to NULL.
When the property value is false
, NULL is set as the field value and regular field survivorship rules apply. If a lower ranked source tries to change the field value, NULL survives.
Native properties
"native.additional.ids[.ALIAS]": "<prefix_1 [<, prefix_n>]*"
Source files can contain multiple entities in the same row. Use this property to define additional unique entity IDs for each entity in a single row.
Example:
"native.additional.ids.ACCOUNT" : "DEPT, HOSP"
This generates the following additional ENTITY_IDs for each native ACCOUNT record during the parse stage: DEPT_ENTITY_ID and HOSP_ENTITY_ID.
These two new IDs can be used to model relationships among these three entities in the model map.
"native.group[.FILE ALIAS].alias[.GROUP ALIAS]": "<attribute1, attribute2, ...>"
Source files can contain data where the same values are repeated multiple times in each row. Use this property to group columns with distinct rows in a source file. This is useful to do before the file hits the match stage because it minimizes the number of data groups that are created.
Use with the "feed.item[.ALIAS]" property.
Example:
"feed.item.alias.HCO_TMP": "VC_*"
"native.group.HCP_TMP.alias.HCO_ALIAS": "StandardizedID,DEA,ClassOfTrade,LocationName,Address,City,State,ZipCode"
An alias called HCO_ALIAS
is created that groups the specified attributes.
For more information, see Grouping data for normalization.
"native.key[.ALIAS]": "<value, value, ...>"
Native keys in Network are the primary keys for each entity in the incoming feed. The model map uses native keys to perform JOIN operations between different files, to extract information required in the Network external model format. They are also used to perform calculations between attributes that are contained in different files. A list of attribute names implies order.
Example:
"native.key.RELATIONSHIP":"amsid__v, parent_hco_amsid__v"
amsid__v and parent_hco_amsid__v will be used as the primary keys for RELATIONSHIP when joining files in the model map.
"native.record.date.[entity_type]": "<attribute_name>"
Identifies the column name that contains the last updated time of the record from the incoming file. The last updated time is used to calculate survivorship during matching. If there are two or more records from the same incoming source that match, then in the event of a disagreement, only the values on the most recently updated record will survive.
Example:
"native.record.date.HCP": "<last_updated>"
For more information and supported date formats, see Calculate survivorship with last updated time.
"native.transform.rules[.ALIAS]":
"<value, value, ...>"
A comma (,) separated list of the transformation rules applied in the native stage for any given source being processed. The list implies the order.
Example:
The [.ALIAS]
might be NPI or VCRM.
Parser properties
"parser[.ALIAS]": "<value>"
Controls the parser the loader uses to extract information from the files, for example, CSV, TXT, or JSON. If [ALIAS]
is not defined, the property applies to the whole feed.
Example:
"parser": "csv" - All files in the feed use .csv files.
"parser.FOO": "flat" - All FOO files in the feed use flat files
"parser.attribute.rules[.ALIAS]": "<value, value, ...>"
Represents the names of the attribute rules applied in the parser stage for any given source being processed. For example, the [ALIAS]
might be NPI or VCRM. The list implies the order.
Example:
Source file column headers are case sensitive. To add upper or lower case formatting to column headers:
"parser.attribute.rules": "network:force_lowercase_attributes"
"parser.csv.escapechar[.ALIAS]": "<value>"
For each parser supported in Network, this variable controls the escape char used in the files. If [ALIAS]
is not defined, the property applies to the whole feed.
"parser.csv.header[.ALIAS]": "<Column Name 1, Column Name 2, ...>"
Provides the list of column names for sources where the files do not include headers.
If [ALIAS]
is not defined, the property applies to the whole feed. The list implies the order.
"parser.csv.nullstring[.ALIAS]": "<string>"
For each parser supported in Network when the string value is encountered the field is nulled.
This property requires that feed.retain.null
is true and can be overridden by the parser.nullstring
property.
"parser.csv.quotechar[.ALIAS]": "<value>"
Defines the quotation character used within a .csv file. If [ALIAS]
is not defined, the property applies to the whole feed.
Example:
"parser.csv.quotechar.HCP": ","
"parser.csv.separator[.ALIAS]": "<value>"
Defines the separator for columns within a .csv file.
If [ALIAS]
is not defined, the property applies to the whole feed.
"parser.csv.skiprows[.ALIAS]": "<value>"
This property provides information about rows that should be skipped from processing. A setting of 0 means not to skip any rows. A value of 1 would skip the first row, for instances where the file contains a header.
If [ALIAS]
is not defined, the property applies to the entire feed.
"parser.fixed.header[.ALIAS]": "<5:ParentOrgID, 5:ChildOrgID, 1, ...>"
This property defines the fixed width columns and headers for any file inside the feed. It also provides the ability to not define a header, so the loader will assign a default name. For example, the third column in the property example does not have a name defined.
If [.ALIAS]
is not defined, the property applies to the whole feed. Order is implied by the list of attributes.
"parser.csv.nullable[.ALIAS]": "<attribute-name-list>"
When an empty ("") value exists for an attribute in the attribute list, this alias is set to null. Any fields in the .csv file that are empty but not in the attribute list will be treated as not having been specified in the source (and won't be set to null).
This property requires that feed.retain.null
is true and it overrides the parser.csv.nullstring
property.
Example:
"parser.csv.nullable.HCO": "hco_type__v, Building_ID"
For more information, see Null out values in source files.
"parser.select[.ALIAS]": "<attribute, attribute, ..>"
Provides a list of the attributes needed for extraction in a particular file. (The loader typically extracts everything.)
If [ALIAS]
is not defined, the property applies to the whole feed. The list implies the order.
Other properties
"job.immutable": "<true/false>"
It is used with the following properties to run a job in simulation mode: job.match.skipMerge
and job.simulation
.
This property is true
when the Enable Simulation Mode setting is selected for a subscription.
This property is read-only to ensure that the value does not change if it is copied and pasted between subscriptions.
"job.simulation": "<true/false>"
It is used with the following properties to run a job in simulation mode: job.immutable
and job.match.skipMerge
.
This property is true
when the Enable Simulation Mode setting is selected for a subscription.
This property is read-only to ensure that the value does not change if it is copied and pasted between subscriptions.
"job.nai.enabled": "<true/false>"
If true, triggers address inheritance for the subscription. For more information, see Address inheritance.
This property is false
by default.
"map.item.exclude": "<value>"
Prevents source files in the "Network FTP Path" either uploaded or created by transformation queries from moving to the parse stage of the job to avoid unnecessary processing.
Example:
If a transformation query creates a file called Invalid_Account, skip the file as the job moves to the parse stage.
"map.item.exclude": "Invalid_Account*"
"map.item.include": "<value>"
Ensures source files in the "Network FTP Path" either uploaded or created by transformation queries are processed during the parse stage of the job.
Example:
If a transformation query creates a file called Valid_Account, parse the file as the job moves to the parse stag.
"map.item.include": "Valid_Account*"
"map.item.trimtrailing[.ALIAS]": "<value>"
Removes trailing characters from the file to be processed.
Example:
If the file name is CRM_test_01012013.csv a value of9 removes _01012013 from the end of the file name prior to processing.
"map.item.trimtrailing": "9"
Restricted properties
The following properties might display in the Edit Module Properties dialog but they should not be changed. Contact Veeva Support for assistance before using any of these properties.
"archive.path": "${archive.directory}/${jobid}" |
"archive.provider": "vaos" |
"debug.archive.exit" |
"archive.directory": "/archive" |
"debug.keepexternal" |
"debug.keepvolumes" |
"entity.normalize.rules[.ALIAS]": "<value>" |
"feed.master": "<true/false>" |
"feed.rules": "mam_download: third_party_check" |
"istore.path": "${feed.directory}/istore" |
"istore.provider": "vh2os" |
"job.graph.clusterPartitionAlgorithm": "merge" |
"job.graph.exportClusterPartition": "<true/false>" |
"job.graph.merge": "<true/false>" |
"job.hash.function": "mm3" |
"job.match.blockAnalysis": "false" |
"job.match.countryFilter": "" |
"job.match.entityFilter": "" |
"job.match.export": "" |
"job.match.restrictToCountry": "true" |
"job.match.skipMerge": "false" |
"job.match.validation.rules": "mam_download:start_mam_download, mam_download:wait_mam_download" |
"job.merge.allowChildMatchByValue": "<true/false>" |
"job.merge.allowOverridableSystemAttributes": "<true/false>" |
"job.merge.excludeChildWithSameSourceOnValueCompare": "<true/false>" |
"job.merge.invokeChildPostMergeRules": "<true/false>" |
"job.merge.overrideAlternateIdentifier": "<true/false>" |
"job.merge.taskQueuingLimit": "10" |
"job.merge.unmatchAction": "<local/none/candidate>" |
"job.merge.updateIndex": "<true/false>" |
"job.model" |
"job.use.repo.home": "<true/false>" |
"root.directory": "/work" |
"script.Groovy": "/script" |
"uic.hidden": "false" |
"uic.readonly": "false" |
Null out values in source files
You can use advanced properties to null out specific fields coming from a source.
Use the following properties:
"feed.retain.null": "true", "parser.csv.nullstring.ALIAS": "<value>", "parser.csv.nullable.ALIAS": "<attribute-name>",
The "parser.cvs.nullable.HCP"
property should list the mapped fields from your .csv file headings.
Example
To add a "Null" value to the CustomField1 and CustomField2 fields, those fields must be included in the parser.csv.nullable.ALIAS property. If the field is not included, the value will be ignored.
"feed.retain.null": "true", "parser.csv.nullstring.HCP": "", "parser.csv.nullable.HCP": "CustomField1,CustomField2",
If you want to null out a value with blanks but your null value is not blank; for example, your null value is null__v, adjust the parser.csv.nullstring.ALIAS property so the value is null__v.
Example
"feed.retain.null": "true", "parser.csv.nullstring.HCP": "null__v", "parser.csv.nullable.HCP": "CustomField1,CustomField2",