Align-CRM Integration

Align is designed to integrate with the Veeva CRM application with minimal user input. To access the Align Integration Administration Console, select Align Integrations from the Integrations menu. The console has three sections: Sync History, Veeva Align, and Veeva CRM.

The Sync History section displays list of jobs executed to move data between Align and Veeva CRM. It identifies the Veeva CRM org involved, the status, and the territories involved, when applicable. The job may have been initiated from this page or from other areas in Align.

The Veeva CRM section contains is a list of configured connections. It includes the connection status and the last time the connection was tested. From the Actions field, a user can initiate a Pull from CRM (Import) or a Push to CRM (Run). The connection status is revalidated every time a push or pull is executed.

The Align-to-CRM feature does not allow users to run two concurrent integration jobs. If a user attempts to start a push to or pull from CRM under those circumstances, a pop-up screen notifies them of the current job and they are prevented from proceeding with the request.
Scheduled jobs that conflict with a running job at their start date are canceled, and the owner is notified of the cancellation by a scheduler failure email and through process task records.
Finally, rules execution is blocked by currently running jobs. Running rules on any territory belonging to a CRM org blocks integrations to and from that CRM org.

Pulling Data from Veeva CRM into Align

After linking a CRM org to an Align instance, users can import data from CRM into Align. Align imports data from the following CRM objects into the corresponding Align objects: 

CRM Object Align Object
Account

account__aln

Address_vod__c address__aln
Child_Account_vod__c parent_hco__aln
Product_vod__c product__aln

Product_Metrics_vod__c

product_metrics__aln

User roster_member__aln

By default, Align tracks each object's import status separately. While the process task record for each import records the start time, end time, errors, and successes of the overall import, each object and Veeva CRM org pairing has its own unique record in the process_monitor__aln object. This record is updated with the current date each time the object's import during a pull from CRM completes without aborting, regardless of errors occurring during the import.

The next import attempts to retrieve all records inserted or updated since the date set for each object. Records that errored in a previous import are not included, and the retrieval date is not affected by errors logged on other objects.

Align records that originated in CRM deactivate if their CRM counterparts are deleted. However, it is possible a new CRM record will be created in the future that has the same External ID as a previously deleted record. When these new records with old IDs import into Align, they may initially be marked as errors due to an ID conflict. A later stage in the import process automatically reconciles the IDs.

Full CRM Refresh

By default, Align only imports CRM records with a Last Modified Date that is later than the last import. This improves performance by limiting the number of records imported into Align.

To initiate a full CRM refresh, meaning all records are imported into Align regardless of their Last Modified Date, set the full_crm_refresh__aln field on the Veeva CRM Org object to Yes. After a full refresh completes, this field reverts to its default value of No.

Users can also manually select an import_datetime_override__aln field value on the Veeva CRM org record. Users can set this field to a specific date and time in the past to import all objects inserted or edited since that date and time, allowing them to retry records that errored out in previous imports. This field is not related to the full_crm_refresh field value as it does not pull in all records from CRM, only records from the date specified in the field.

Accounts, Addresses, and Parent HCOs deleted from Veeva CRM since the last Pull are deactivated in Align. Their assignments are end dated. Accounts that were merged into other Accounts in CRM are deactivated in Align. Their assignments are not end dated, as they now belong to the Account that won the merge.

If an address or parent HCO is deleted from CRM, the respective status__v fields are set to inactive__v. Geography or hierarchy-based assignments are no longer generated for those records on subsequent rule runs. Assignments based on them will not be end-dated until the first rules run after the import.

For example, the Account record for Dr. Ackerman was deleted from CRM. During the next Pull, Align detects the deletion and sets the account's status__v field on the account__aln object to inactive__v. It will apply the same change to all address__aln and parent_hco__aln records associated with the account. Finally, it end-dates all manual assignments for the account. Users still need to execute an assignment preview on all territories that have been assigned this account so its rule-based assignments are end dated.

Roster members can also be deactivated if their corresponding CRM user is set to inactive. In this case, the corresponding status__v field on the roster_member__aln object is set to inactive__v, and all manual assignments for this roster member are end-dated.

Align retrieves the list of Territories and User Territories deleted in CRM. Their corresponding Territories and Roster Member Territories will not be deactivated in Align. Instead, Align inserts a new Integration Status record for each of these objects to mark their deletion from CRM. This record allows users to review the deletion and decide whether to end-date the records in Align or retain them as valid records.

This process also imports ObjectTerritory2Association records created in CRM but not yet represented in Align. The sync creates the appropriate Account Territory records in Align as long as both the relevant Account and Territory records exist in Align. Otherwise, the sync logs an error message. These assignments inherit their territory's end date.

This process imports all ObjectTerritory2Association records where the CreatedDate is after the last successful CRM Integration StartDate, taken from its Process Task record. Initially syncing Align to CRM imports all ObjectTerritory2Association records into Align as explicit assignments because there is no previous Process Task record. To avoid this process, users should delete all ObjectTerritory2Association records from CRM before syncing Align into CRM for the first time.

Pushing Data from Align into Veeva CRM

After linking a CRM org to an Align instance, users can push data from Align into CRM at the CRM org level or at the territory level.

Pushing data from Align determines which records are eligible to be sent to CRM based on the combination of the Send to CRM, Start Date/Time, End Date/Time, Last Modified Date, CRM is Deleted, and CRM Record ID (which is an Integration Status field) field values. The push to CRM performs the following operations:

  • Create CRM Territories, ObjectTerritory2Association, and UserTerritory2 records in CRM for Territories, Account Territory assignments, or Roster Member Territory assignments that are live.
  • Delete CRM Territories, ObjectTerritory2Association, and UserTerritory2 records from CRM if their corresponding Territories, Account Territory assignments, or Roster Member Territory assignments have reached their end date in Align.
  • Update existing CRM territories if the corresponding Align territories have been modified since the last Push to CRM process.

This process takes into account only records that have been modified (start-dated, end-dated, or changed) since the last successful push to CRM. Records that failed to update even though the last push was successful overall are also considered.

CRM assignments resulting from multiple overlapping Align assignments will not be deleted until the last Align assignment expires. Once the CRM record is deleted, the engine will create as many rows in the log files as there were Align assignments associated with it.

Pushing at the CRM org level exports all changes relevant to the CRM org. (Users must confirm the process in the subsequent pop-up screen.) Users can push at the CRM org level the Integrations tab:

Unlike pushing from the CRM org level, pushing from the Territory level exports only the changes associated with the selected territory and its descendants. Unrelated territories and assignments are not be exported. However, both push processes import all new ObjectTerritory2Association records into Align, regardless of which territory they apply to.

Users can push at the Territory level from the Territory page.

When using the User Management feature to master roster members in Align, the following behavior differences apply:

  • All Roster Members mastered by Align are included in pushes to CRM from the Align Integration Administration Console
  • Pushing to CRM from a Territory will include all Roster Members who have a currently active Roster Member Territory assignment to that Territory or its children. This includes only active Roster Members that are Mastered by Align.

Object Mapping

The following objects are mapped between Align and Veeva CRM, meaning when a user imports data from Align into CRM, the Align object's value populates the CRM object's value.

Align Object CRM Object
territory__aln Territory2
account_territory__aln ObjectTerritory2Association
roster_member_territory__aln UserTerritory2
territory_product__aln My_Setup_Products_vod__c

Field Mapping

The following fields are mapped between Align and Veeva CRM, meaning when a user imports data from Align into CRM, the Align field's value populates the CRM field's value.

Align Object Align Field CRM Object CRM Field
territory__aln name__v

Territory2

Name

territory__aln description__aln

Territory2

Description

territory__aln master_align_id__aln Territory2 Master_Align_Id_vod__c

SFDC populates the DeveloperName field on the Territory object in CRM with the value of the Label field on the Territory object.

This field only supports Roman Alphabet characters.

Integration Status

An integration_status_2__aln record is created for each attempt to push a territory or assignment change to CRM and also for each ObjectTerritory2Association record imported into Align. These records are used to compile a history of each assignment's integrations. Integration statuses are displayed in a separate section on the page of the objects they are assigned to. The following image displays the integration statuses associated with an Account Territory assignment record. Multiple integration statuses form the assignment's Integration History.

Integration statuses are associated with a particular Account/Territory or Roster Member/Territory pair but not with a specific Account Territory assignment record. All Account Territory assignments referring to the same Account and Territory share the same Integration History. This is because CRM stores a single assignment record for the same Account and Territory pair, regardless of how many corresponding assignments exist in Align.

Users cannot manually create or edit integration statuses.

Accounts are automatically stamped with the Veeva CRM org they were imported from, which is stored in the veeva_crm_org field on the Account__aln object. Accounts, Addresses, and Parent HCOs are stamped with the ID of their equivalent record in Veeva CRM.

If Align fails to send an account territory assignment to CRM because the account was deleted from CRM, Align deactivates the corresponding account__aln record and the related address__aln and parent_hco__aln records. All manual assignments are end dated.

Push Condition to Ignore Start Date

The push condition for certain MCCP objects allows for records of all start dates to be pushed to CRM. This grants users access to the cycles in CRM before the start date and allows users to edit cycle goals before the cycle begins. The following objects are supported by this condition:

  • mc_cycle__aln
  • mc_cycle_plan__aln
  • mc_cycle_plan_target__aln

User Assignment on CRM Push

Multichannel Cycle Plan (MCCP) records pushed to CRM are automatically assigned to owners. This allows users to test MCCP assignments more quickly and allows CRM Administrators to avoid having to manually reassign pushed records to the proper owner.

MCCP are assigned to the following owners based on the following conditions:

  • Territory Active User – A Multichannel Cycle Plan belongs to a territory with only one active user
  • Align Integration User
  • The MCCP belongs to a territory without an active user
  • The MCCP belongs to a territory with multiple active users
  • Existing Owner
  • The MCCP is updated in CRM and belongs to a territory with multiple active users
  • The MCCP is end-dated, but no other user is assigned to the territory

Locking an MCCP Record from Align

The lock__aln field on the mc_cycle_plan__aln object allows Align administrators to designate an MCCP record as read-only before the record is pushed to Veeva CRM. This enables Align administrators to set a record as read-only before the push to Veeva CRM.

The lock__aln field on the mc_cycle_plan__aln object is mapped by default to the Lock_vod field on the MC_Cycle_Plan_vod object in Veeva CRM.

Veeva CRM Integration

Align uses a CRM connection to push and pull data. Users can integrate a CRM org with Align using the Align Integrations page.

Connecting multiple CRM orgs to an Align instance is not supported.

Configuration

To configure the connection between CRM and Align:

  1. Ensure the integration user is properly configured.
  2. Select Integrations in Align.
  3. Select Align Integrations.

  4. Select New in the Veeva CRM section.

  5. Enter the following information:

    • Name — Enter a name for the org. There are no parameters governing the org's name.
    • CRM Org Type — Select either Production or Sandbox to indicate the org type
    • Username / Password — Enter the CRM org credentials
    • External Id — Enter any value in this field. The value enforces uniqueness among org names.
  6. Select Save.
  7. Navigate to the appropriate Veeva CRM org.
  8. Grant administrators access to the Customize Application Administrative Permission.

Align imports data directly from the CRM org when a user selects the Import link next to the applicable record on the Align Integrations screen.

All records from the following objects are included in the import:

CRM Object or Field

Align Object

Notes

Account

account__aln

 

Address_vod

address__aln

 

User

roster_member__aln

 

Specialty_1_vod field on the Account object

specialty__aln object

Each distinct specialty picklist value is loaded as a record in the specialty__aln object

Specialty_2_vod field on the Account object

specialty__aln object

Each distinct specialty picklist value is loaded as a record in the specialty__aln object

Country Filters

Users can select a subset of countries to be mastered by Align for a specific CRM org. For example, a CRM org could cover all countries in Western Europe while users want to master assignments only for France and Germany. Users can assign a set of countries to a CRM org through the section titled CRM Org Countries on the Veeva CRM Org Details page. Users can only select active countries for this list.

Once users have selected a set of countries, imported objects will be subject to the following logic:

  • Accounts are imported only if the Country field references a selected country
  • All addresses for such Accounts are imported. Addresses belonging to accounts not selected are not imported even if they are assigned to a selected country.
  • Parent HCOs are imported only if both the Child and Parent Accounts belong to s selected country
  • All Product Metrics for selected Accounts are imported; product metrics are independent of countries
  • Account Territories are imported from CRM only if their Accounts are selected and if their Territories have a non-null value in the Master Align ID field (indicating they were originally created by Align)
  • All Roster Members are imported regardless of country; Roster Members can be tasked with either regional or global territories

This selection also affects pushes to CRM. Align only pushes to CRM Territories when the Country is set to one of the selected countries, and it only pushes to CRM Account Territories when the Territory and Account belong to one of the selected countries.

Users can remove an item from the list of selected countries by deactivating that country's record from the Veeva CRM org's details page. Once a country's record is deactivated for an org, Align no longer imports records for that country from CRM and no longer masters that country's territories and assignments in CRM. However, deactivating all selected countries for an org makes the org's integration revert to the default behavior: Align imports all records for the org from CRM and masters Territories and assignments for the org regardless of country.

Users must run a Full Refresh Import after adding a new country to the list of selected countries for a Veeva CRM org. This ensures all Account, address, and Child Account records for the Veeva CRM org are received.

Inactive SFDC Users

To avoid validation errors, when a CRM user is set to “inactive,” current roster member Territory and roster member Territory Model assignments are end dated when, on the roster_member_territory__aln object, the start_date__aln field value is less than the current date and the end_date__aln field value is greater than the import process start time.

Future assignments are not end date by CRM imports.

This feature is enabled by default.

Mapping Custom Fields

Align enables admins to map custom fields between Align and Veeva CRM, enabling more versatile connections between the two systems.

Custom mappings are case sensitive.

For example, the Align admin is building the connection between Align and Veeva CRM. In both the Territory__aln object in Align and the Territory2 object in Veeva CRM, there is a custom field named field_force_name__c. By navigating to the Custom Fields section, the admin can map these two fields to each other.

To map custom fields between CRM and Align:

  1. Navigate to the Align Objects tab.
  2. Navigate to the Custom Fields section.

    Only fields ending in __c display in this section.

  3. Enter the appropriate fields for both CRM and Align.
  4. Select Save.

Only the mapping of custom fields may be modified.