A sure fire topic to pack a room at any CRM conference is “Best Practices For Data Quality in a CRM” or “10 Tips to Improve Data Quality In SFDC”. That is certainly because it is constant source of irritation with users and administrators. The lack of data quality is easy to understand. It is the effect that comes by many means. As data comes into CRM from other systems, and by bad data entry from users. Other systems are pushing and pulling the data in and out the the CRM platform with little to no guidelines in the interface for how all of this data should behave. Which is why users are who are looking for contacts discover duplicates, or just plain incorrect information. When trying to find a phone number users will dial a contacts home number when intending to call the office. Incorrect e-mail addresses, bad fax numbers, and incorrect addresses are all common issues in even the best training. At best when users interact with systems like this they lose confidence in the accuracy of the data, at worst we are offending customers by communicating to them through the wrong phone numbers, or UPPERCASING their names and address. Nothing says “We are carefully listening, and care for you Mr. Customer” like when we send an e-mail that opens:
There are 2 common methods developers use fix these problems.
- Plugin’s & CallOuts: These are server based solutions that upon commitment of data enrich or correct the data. For example if a new billing address is updated at the account level the new information cascades to the contact records.
- Java: Checking for bad data when entered. Like ALL CAPS, or invalid Phone formats, or checking for valid Postal Code – City – State combinations.
Both of these methods require a developer to open Visual Studio. That is unless you are using Scribe Online or Scribe insight. This article will demonstrate how Scribe Online can cascade updated data to children records to keep the phone numbers correct on a Contact when an update is made to a Parent Account in Dynamics CRM. An upcoming article will address how Scribe Insight can be used to improve the quality of the formatted data that is at rest in Salesforce.com.
First go to Scribe Online and Make a Connection to Dynamics CRM and in the Query Block choose the following Values:
- Account Entity
- Process only records updated since last run based on the ModifiedOn field
- Include Related Entitles choose:
- Contact | Choose the Contact_Customer_Accounts Child relationship.
- Contact | Choose the Account_Primary_Contact Parent relationship
These values will choose any Accounts and all of the Children Contacts and the single Contact that is called the Primary contact. At this point you are ready to build the Scribe Online Stack. The source and the target are the same CRM system. You will need the following 4 blocks under the Query Block:
- For Each Result – as required for each map
- Update Contact – this will be for the Primary Contact
- For Each Child Loop Block – to loop through all of the Children Contact Records
- Update Contact – this is the actual update block for these Children Contact Records
The first update block will be for the Primary contact. When doing updates one is required to provide matching criteria in order for the system to know what contact to update, set it to the Account.Account_Primary_Contact.Conactid.
On the Fields Tab map the appropriate fields from the Account down to the Contact. In this example we are choosing to use the Address 1 Block to reflect the Business main address. So in this manner any changes to the Account will be pushed out to all the contacts.
In order to update ALL of the child entities found one would place the For Each Child block next and then nested an Update Contact Block in that Loop. On the Update Contact one will use ContactID as the match on account.contact_customer_accounts.contactid . On this mapping one should use the same mapping the previous field maps. These mappings pull down the Account (parent) values to Contact (child) objects.
It is suggested that all of the fields receiving data updates from the Account in the CRM interface be made “Read Only” to the users. This will also help improve quality of data for the users as they will not be entering data into fields that will later be updated by the engine. Now many are sure to ask. “Can’t this be done with the Dynamics CRM workflow engine? Why should we use a third party tool to make this work?” Although the Dynamics CRM workflow is very powerful there is no native function to to cascade field changes to ALL of the child entities. However, Scribe Online has the ability to loop through multiple child Objects without a single line of code. Finally, this solution takes about 30 minutes to test and deploy.