For example, Verteo Biopharma’s address data is sourced from a third-party integration. To populate all existing child accounts’ address information based on the data already loaded for parent accounts, Alice Admin enables address inheritance support and runs a batch process to update child account address records. All child account address records are populated with information from their parent accounts’ address records, simplifying data loading and ensuring consistency across parent and child account addresses.
When address inheritance is enabled and a new primary parent account is assigned to a child account, the primary address copied over from the parent account is set as a primary address for a child account.
Preparing Account Data
Admins must first load account data, parent account addresses, and account hierarchy information into Veeva CRM:
- Load all parent business accounts into the system.
- Load all child person accounts and business accounts into the system.
Ensure the Copy_Address_vod field is selected on all Child_Account_vod records where address inheritance should apply.
- Load addresses for all parent business accounts and, if applicable, any unique addresses for child business and person accounts into the system.
- Load the Child_Account_vod records linking parent business accounts with children business and person accounts into the system.
For more information on data loading, see Salesforce’s Data Loader documentation.
Configuring Address Inheritance Support
Ensure initial configuration is complete before enabling this functionality.
- Define the fields on the Address_vod object that should be copied from the parent business account address to the child business or person account address. This setting can be defined as a global setting or as a country-specific setting.
- As a global setting:
- Navigate to the Veeva Message ACCT_HIER_ADDR_COPY_FIELDS
- Clone this message and activate it per standard Veeva configuration (for more information on activating Veeva Messages, see Veeva Messages)
- Designate the specific Address_vod fields to be copied for your organization. Enter the desired field names in a comma separated list. For example: Id,Name,City_vod__c,Address_line_2_vod__c,State_vod__c,Zip_vod__c
Do not include the Primary_vod field in this setting.
- As a country-specific setting:
- Clone the ACCT_HIER_ADDR_COPY_FIELDS Veeva Message and rename it to ACCT_HIER_ADDR_COPY_FIELDS_[CountryCode]. For example, ACCT_HIER_ADDR_COPY_FIELDS_de for Germany.
The country code must match the two digit country code identifier from the Country_vod picklist on the Address_vod object.
- Designate the specific Address_vod fields to be copied for your organization. Enter the desired field names in a comma delimited list. For example: Id,Name,City_vod__c,Address_line_2_vod__c,State_vod__c,Zip_vod__c
- Ensure the country-specific Veeva Message is Active
When there is a country-specific Veeva Message, address inheritance copies the fields listed in the country-specific message instead of the global message.
- Set child account address fields to read-only:
- To prevent child account addresses from changing repeatedly when changes are made further up the account hierarchy:
- Create a record type with the same API name as the record type in use by the parent business account address, then add _CHILD as a suffix. For example, CompanyMaintained_CHILD
- Create record type-specific page layouts limiting edit permissions for the desired fields on the address record. When child address records are created via Address Inheritance, the system looks for the _CHILD Record Type value and applies the associated layout properties to the copied child address.
If there are no _CHILD record types, then the record type for the parent business account address is applied to the child account address.
- Add the Copy_Address_vod check box to Child_Account_vod page layouts, if users create parent-child account relationships using the Member Of related list on account records (optional). This gives users the option to manually enable address inheritance when creating child accounts.
- Alternatively, if address inheritance always applies to manually created accounts:
- Set the default value for the Copy_Address_vod field on the Child_Account_vod object to selected, eliminating the need to expose it in the page layout
- Select the ENABLE_PARENT_ACCOUNT_ADDRESS_COPY_vod Veeva Setting check box to enable address inheritance on all manually created child accounts
Copying Address Information to Child Accounts
To copy address information from parent to child accounts in bulk, admins can either schedule an Apex Class batch process, or enable real time address push for asynchronous updates. The batch process is an ongoing process. When users update parent address records, the batch process cascades updates from the parent address to the corresponding child address records.
To schedule the batch process:
- Create and schedule an Apex Class to enable the VEEVA_BATCH_CHILD_ACCOUNT_PUSH and VEEVA_BATCH_CHILD_ACCOUNT_DELETE batch address update components.
- For an example, see the EXAMPLE_FOR_ADDRESS_PUSH_SCHEDULING Apex Class
- Select the Schedule Apex button on the custom apex class created for batch updates. Enter the appropriate information, including your desired run time
- To prevent errors in the batch process, if the EXAMPLE_FOR_ADDRESS_PUSH_SCHEDULING Apex Class is set for a batch size of 10, limit the batch to approximately 25 child accounts and 60 addresses to be copied
- After the batch process is complete, deselect the Copy Address check box from the child accounts so the updated records will not be queried later if you attempt to run the job again.
Schedule the batch process according to your organization’s business processes. For example, if your organization processes updates to addresses from an external system nightly, then the batch job in Veeva should be scheduled to run after the update from the external system is complete.
For more information on scheduling apex batch jobs, see Salesforce’s Schedule Apex Jobs.
Enabling Real Time Address Push
To asynchronously update child accounts and process data changes without running an apex batch job, enable Real Time Address Push instead of creating an Apex Class:
- Configure the default value of the No_Address_Copy field on the Address_vod object to be deselected.
- Set the Enable_RealTime_Address_Push custom label value to true.
Real Time Address Push asynchronously updates child account address data whenever the parent account is modified. This allows administrators to process the account-level data changes without running an apex batch job.
Address Inheritance for Data Loaded Accounts
When address inheritance is enabled and a new account is created using the Salesforce Data Loader's web services API, the following occurs:
- All addresses from the selected parent business account are copied to the newly created child account record. If additional fields are not defined in the ACCT_HIER_ADDR_COPY_FIELDS Veeva Message, then the following fields are copied to child account address records by default:
- Name (Address Line 1)
- The Controlled_Address_vod flag on the child account’s address record is selected, populating the Controlling_Address_vod field with the parent address’s record ID
- The Copy_Address_vod check box remains selected on the Child_Account_vod record, ensuring any future updates to the parent address record are copied to the corresponding child account address records
Addresses are copied to child accounts based on the following conditions:
- The Controlling_Address_vod’s ID on the child address matches the parent address’s record ID
- The Controlled_Address_vod check box on the child address is selected
An account’s primary address cannot be inactive or have inactive child addresses. When marking the child of a primary parent address as inactive, admins must also remove the child address’s relationship to the primary address.
When a child account record is deleted, the address inheritance process deletes the controlled address from related Person Account records using the trigger VEEVA_CHILD_ACCOUNT_ADDRESS_CLEAN on the Child_Account_vod object.
Address Inheritance for Manually-Created Accounts
To manually create child account records, select the New Child Account button from the Member Of related list on a business account’s record.
If the Copy_Address_vod field is on Child_Account_vod page layouts, select the Copy_Address_vod check box to copy the parent account’s address information to the child account address.
All address processing occurs only online. Inherited addresses do not display for offline users until a subsequent sync and execution of the address batch process.
When users add a new parent account and select Save, and the parent account is the only parent for the child account, the new parent account is saved as the primary parent.
There may be some delay in copying the addresses depending on the number of records processed.
Overriding Address Inheritance when Data Loading Accounts
For organizations with managed data environments, admins can override address inheritance when importing records using the Data Loader. To override address inheritance and ensure a business address’s record is not copied to child records when data loading records:
- Set the Enable_RealTime_Address_Push custom label value to false.
- Select the No_Address_Copy_vod field on the Address_vod records for the desired business accounts.
- Import the appropriate records.
Once the import is complete, the value in the No_Address_Copy_vod field is cleared.
The No_Address_Copy_vod field is strictly for administrative use. It should not be added to any page layout. Since the field value is cleared after the record is imported, it could cause confusion for a user if exposed in the UI.