Update Child Records in a One:Many Relationship in Dynamics 365 CRM

In Dynamics 365 CRM applications like Sales and Field Service, it’s common to want to automatically update multiple contacts based on a change to an account or to make automatic changes to other kinds of records in any “parent-child” relationship.

I have helped multiple clients with a tried-and-tested customization for this need because there is no easy out-of-the-box option for it.

This automation approach can save time and reduce manual entry errors. Keep in mind that this method updates ALL child records in bulk that have the same field type as the parent.

Table of Contents

Note: There are five different Dynamics 365 apps that serve various CRM needs, including Dynamics 365 Sales, Dynamics 365 Customer Service, and more. In some contexts, you may also see these products referred to as “Customer Engagement” or “CE” apps. The following approach works for any of those apps.

How to Manually Bulk Update Child Records (And Why Not To)

Technically, your people can manually update all the child records of a certain parent, for instance, by multi-selecting all those records, clicking the bulk edit button in the command bar, and updating the records to the specified value. I would recommend this approach if you were either:

  • Updating only a select set of records of the child relationship.
  • Updating more than 1 field for a set of records.

However, there are some limitations to that approach:

  • Manual entry errors.
  • Time taken for staff on a repetitive task.
  • Subgrids/views may not grab all the records you need to update.

If you need to overcome those limitations, read on to learn about the automation approach we use.

Use Cases

The following automation can apply to any parent-child, one:many relationship, including:

  • Changing contacts based on changes to their account (in Sales).
  • Changing work order products based on changes to their work order (in Field Service).
  • Changes to custom tables to apply metrics based on their metadata, enabling better reporting in Power BI, advanced find views, and other key reporting metrics.

This automation can be useful in many scenarios, including:

  • You want any update to an account’s address to update the address for each of its contacts automatically.
  • You have tiers or types of clients, and you want any change to the tier or type for each account to apply to each contact as well.
  • You are adding a new field to records (and you want all the child records to have the same value for that field as the parent records).

How to Update Child Records in a One:Many Relationship

The solution for this involves the Solution: Dynamics 365 Workflow Tools.

Once the Solution file is downloaded and imported into your organization (always take a backup of your Dynamics 365 instance prior to doing this), setting up a Process/Workflow for this is very straightforward.

  • Open the Solution file you would like to include your new Process/Workflow in, expand Processes, and click ‘New.’
  • Provide a Process Name, Category (Workflow), and Entity. The Entity should be the parent in your one:many relationship. When working with Account (one) and Contact (many), set Entity to Account, and then ‘OK’.
Screenshot creating a new process/workflow.

When building out the rest of your Process/Workflow, make appropriate selections for Scope and trigger events under the ‘Start When’ section. For this example, I am going to leave Record is Created checked and set Main Phone as a trigger under the Record Fields Change area.

Next, the logic in the process/workflow is built out.

  • Select ‘Add Step,’ scroll down and highlight the msdyncrmWorkflowTools (version), and select: Update Child Records. Once selected, click the ‘Set Properties’ button.

Make the following updates:

  • Parent Record URL – Set to: Account – Record URL (Dynamic)
  • Relationship Name – Set to: contact_customer_accounts
  • Parent Field Name – Set to: telephone1
  • Child Field Name to Update: telephone1

Note: The correct settings here will depend upon what entities and relationships you are working with. Make the appropriate adjustments for your own scenarios.

If you are updating more than one field from the Parent to Child records in the same workflow, you will have to create a new step/action for each field you plan to update. For Example, one step for Street 1 on an Address, one step for City on an Address, etc.

Save and Close when the settings have been established. Make any other updates to your Process/Workflow as you see fit. Activate the Process/Workflow when done.

Now, when we update the Main Phone on the Account, the newly created Process/Workflow automatically updates the related contacts.

Account:

Screenshot of an Account summary showing Account Name as "My Account" and a phone number.

Contact:

Screenshot in a Contact Summary showing the full name, account name, and phone number.

Limiting Business Process Flows

Another example I have used in the past is an indicator or flag on certain records to limit business process flows. For instance, I helped a company using Dynamics 365 Field Service set logic so that I could reference some information from the related Service Account from a Work Order on the Booking when it’s ready to be Scheduled.

This enabled the company to create Work Orders for certain customers, but it would alert the Dispatcher or Manager when they tried to schedule/create a Booking for the Work Order, indicating that the related Service Account had a Credit Hold.

If there’s a Credit Hold on an Account, I would also pass this same value to the related Work Orders so that Dispatchers/Managers can see the Account has a Credit Hold but can override that if they would like on an exception basis (for instance, if the work that needs to be completed is an emergency). Otherwise, it would alert the business that Work Orders shouldn’t be scheduled for this Service Account.

Setup

To set this automation up, you’ll first need to create a Yes/No custom field for the Service Account and the Work Order tables. This can be named to fit your organization needs, but our case was named “Credit Hold”.

Create the workflow described above to update the child records On Create and On Change of this field on the Account table. Surface this field on the Work Order form so other Users can see this field and can toggle it on or off per Work Order or per Customer.

Then, build a real-time workflow to show an error when a Booking record is created if this custom field = “Yes” on the related Work Order.

If you have any questions about automations or other improvements to your Dynamics 365 CRM applications, please connect with us.

 

Dynamics 365 CRM How-To eGuide

41 pages of step-by-step instructions for 6 different key tasks in Dynamics 365 CRM apps. Includes interactions with Power Apps and Power Automate!

Get eGuide

Dynamics 365 CRM How-To eGuide

Get eGuide