Network Calculated primary addresses

Network Calculated is a primary type custom field configuration that you can assign to an address object to designate a "best" address. A record can only have one Network Calculated primary address. Network automatically moves the primary flag to another address if the current address is inactivated or invalidated. This ensures that a record always has an active and valid primary address defined.

This behavior might not be suited to business processes where business units or compensation are tied to a primary address. For example, a sales rep might not get compensated for sampling a doctor if Veeva OpenData inactivates an address and Network automatically recalculates and moves the primary address to another state or province in the same fiscal quarter. To manage the primary address yourself, use Unique Checkbox primary type fields.

On the Profile page, primary indicators display when a primary field is set for an address. The Primary badge and field name displays.

Process for Network Calculated primary addresses

To use this configuration to support your business processes, create the field and update your existing addresses in your Network instance.

  1. Create a Network Calculated primary field - Create a custom field that uses the Network Calculated configuration.
  2. Set an active and valid primary on existing records - Set a primary on existing addresses in your Network instance. Use the Data Updater or a source subscription to update address records.
  3. Edit primary addresses - Users can update the primary address field on the record profile. It can also be updated through data loading using the Data Updater or source subscription features.
  4. Network calculates primary - Network will calculate the primary address over time whenever an entity is merged (owner of address), existing primary status is updated to inactive, or the record state becomes Invalid/Deleted.

Create a Network Calculated primary field

To create a primary type field:

  1. In the Admin console, click Data Model and select the Customer Master domain.
  2. Click the Address object.
  3. In the Fields section, select a field that is already a primary type or click Add Field to create a new one.

  4. Type a Name and Description for a new field.
  5. In the Type field, select Primary.
  6. In the Configuration list, select Network Calculated.

    If you change the Configuration, a dialog displays to confirm that you want to change the behavior for this primary.

  7. The Enabled? checkbox is selected by default.
  8. In the Country Visibility and Field Rules section, select any countries that this primary field will be applied to and choose the Address object.

  9. In the Labels section, choose the Language and the Label for the custom field. The label displays on the profile page.
  10. Save your changes.

The custom field will now display on record profile pages. You can use this field to set the primary on existing addresses in your Network instance.

Set an active and valid primary on existing records

After you create a primary field to support your business processes, Network will not automatically calculate the field value. The primary will be calculated over time as records undergo changes and primary calculation is triggered.

To ensure that all existing records in your Network instance have a primary right now, use the Data Updater to set the field. You can identify the records that do not have an active and valid primary using reporting.

Step 1: Run a report to identify the objects in your Network instance

The report finds objects that have the following situations:

  • no primary is available on a record
  • inactive or invalid objects have been set to primary

To create a report to find these objects:

  1. On the Network menu bar, click Reports > SQL Query Editor.
  2. In the text box, type the SQL query below.

    Replace the object references (address) with the applicable object and the primary field name, oncology_primary__c, with the name of your primary custom field.

    Note: The address_ordinal__v field is only available on the address object. Remove this condition for non-address primary fields.

            oncology_primary__c /*Displaying the Oncology Primary located on the Rank 1 Address*/
            address INNER JOIN (
                            oncology_primary__c IS NULL
                            OR oncology_primary__c <> 'Y'
                        AND entity_vid__v NOT IN (
                                    address_status__v = 'A'
                                    AND record_state__v IN (
                                    AND oncology_primary__c = 'Y'
                    GROUP BY
            ) entity_with_no_primary
                ON address.entity_vid__v = entity_with_no_primary.entity_vid__v
            address_ordinal__v = 1
  3. Click Run.

This query extracts all of the active and valid records. The objects can be set to primary in the subscription file.

Considerations for address report results:

Values in the address_ordinal__v field are maintained by Veeva OpenData for OpenData addresses or by the record owner for non-OpenData addresses.

  • If there are multiple objects on the same entity with address_ordinal__v = 1, both addresses will be in the report.
  • If none of the addresses on the entity have address_ordinal__v = 1, the entity won't be displayed in the report.

Step 2: Set a primary on active and valid objects

Use the Data Updater to set the objects that you want to be primary - this could be the object that has been recently updated or the object that has the highest Veeva ID (VID). For addresses, typically the rank 1 addresses are set to primary.

  1. Create a .csv file that contains the fields below.

    vid_v oncology_primary__c
    9988776655 Y
  2. Create a Data Updater job that includes this .csv file.

    Note: For address jobs, the Verify and clean address option must not be enabled.

  3. Run the Data Updater job.

After the job runs, the records will be updated with a primary.

Setting a primary address on record profiles

All Network users can use the profile page to assign a primary field to an address. For example, a Field Services Manager who manages territories and compensation can edit an address to assign a primary field for specific therapeutic areas.

To assign a primary:

  1. Click the address summary card to expand the details.
  2. Find the primary field name, click the Value field, and choose Yes/True from the list.
  3. Click Apply to save your update and submit a data change request to local data stewards for review.

Note: After the primary value has been set for a field, any update to the primary field value other than Y (Yes/True) or N (No/False) will be disregarded. For example, if the value is changed to U (Unknown), that change is disregarded.

Other ways primary can be set on records

A primary can be set on an object using the following Network features:

  • Change request API
  • Data change requests
  • Merge and unmerge
  • Data Updater
  • Veeva OpenData updates (subscriptions, downloads, sync)

Duplicate primaries in the Network UI

All users can edit Unique Checkbox and Network Calculated primary fields on record profiles. If the primary field is updated, a data change request is created and sent to local data stewards to accept or reject the change.

To ensure that a field is set to primary on only one object, Network changes the primary value if a field is set to Yes/True multiple times on a record.

This is the only situation where Network will move the primary on a Unique Checkbox configuration that doesn't use any of the Network calculation options.


On an HCP record, the Primary Address for Cardiology field is set to Yes/True for 6941 W Archer Ave.

A user edits the record and sets the same primary field to Yes/True for 1180 W Wilson St Ste E.

To ensure that there's only one Primary Address for Cardiology defined on the record, Network automatically toggles the field value to No/False on the 6941 W Archer Ave address.

The same behavior occurs on data change requests.

When does Network calculate primary address?

Network calculates the primary when new addresses are added to your Network instance or when specific fields (listed below) are changed on an address object.

Address fields

Network calculates primary when the following address fields change on an existing record:

  • address_status__v - Any change to the address status field value will trigger Network to calculate; for example, an address becomes inactive. Inactive object states include Inactive and any custom status values in your Network instance. (address_status__v= I).
  • record_state__v - Any change to the address record state value will trigger Network to calculate; for example, an address becomes invalid (record_state__v = INVALID). Invalid object states include Deleted, Invalid, and any custom state values in your Network instance.

    Addresses with the following record states are not considered for primary calculation: MERGED_INTO, PARENT_MERGED, MERGE_INACTIVATED, MERGE_ADDED.

  • <primary_address>__c - Any change to the primary address field value will trigger Network to calculate.

    If a user sets an existing primary address to False, it is excluded when Network calculates a new primary address.

Changing any other address fields, such as Address Line 1 or Address Type, will not trigger any of the calculation rules.


Network will calculate a primary if the address fields (listed above) are changed during the following events:

  • New address object is added or specific fields (listed above) on an existing address are changed using source subscriptions, data change requests, or the Network API
  • Merging records manually using Find Suspect Match
  • Merging records in bulk through source subscriptions
  • Unmerging records
  • Downloading records from Veeva OpenData (using OpenData subscriptions or the Ad Hoc Download or Download from OpenData buttons on a record).
  • Syncing a record with Veeva OpenData (using the Sync with OpenData button).

Note: Network does not automatically recalculate primary if Veeva OpenData changes the ordinal of the address ranking.

Understanding how Network calculates primary address

Network uses a set of business rules to determine what address will be set to primary for a record.

The primary address business rules might run before or after the address ordinal rules. As a result, when addresses have the same ordinal, the flow that determines which address is set as primary might be different. If the address ordinal rules run first, each address will have a unique rank, so the highest ranking address will be set as primary. If the primary address rules run first, each address will have the same rank, so Network proceeds to check the last updated time.

The following diagrams contain various scenarios and outcomes for setting a primary address.

One or more addresses are set to primary

No primary address is set