Scenario Overview

In this scenario we will demonstrate how to set up a Decision Table that will segment Contacts into various Age Groups using their Birthday. We also show how we will populate the Next Birthday field so that the segmentation process can run each year.

This scenario will demonstrate how to use a Calculation as an Action.

For this article it is assumed that you have at least basic familiarity with Decision Tables and/or have read the following articles:

Note: We will not detail step-by-step instructions here on how to set up Conditions or Actions, please read the above articles if you need detailed configuration steps.

The Contacts will be grouped according to the below segments,

Age in YearsAge Group
1 to 3Toddler
4 to 12Child
13 to 19Teenager
20 to 39Young Adult
40 to 59Middle Aged
60 to 99Senior Citizen


N52 Formula Manager Solution

The Formula Manager solution works like this,

  • A formula of type 'Save - Perform Action' is created on the Contact entity
  • The Source Property is set to 'Birthday'
  • The Event is set to 'Create & Update'
  • The Decision Table will calculate the age in years of the Contact
  • It will then use that Age to update an OptionSet value
  • Finally it will use another Calculation to set the Next Birthday field on the Contact record

Calculations Table

The Calculations table has 2 separate calculations:

  • CalcAge - used to calculate the Age of the Contact
  • CalcNextBirthday - used to calculate the Contact's Next birthday




DateDiff([contact.birthdate], UtcDate(), 'y')           

if ( AddYears([contact.birthdate], DateDiff([contact.birthdate], UtcDate(), 'y') ) > UtcDate(),                                   

          AddYears([contact.birthdate], DateDiff([contact.birthdate], UtcDate(), 'y') ),

          AddYears([contact.birthdate], DateDiff([contact.birthdate], UtcDate(), 'y') +1 ) 

Set up the Decision Table

Now that we have configured our Calculations we need to build the decision table.

Since we are interested only in the Age of the Contact it is the only Condition.
The Actions are set to the Age Group field and the Next Birthday field.

We populate each Decision Table row with the {CalcNextBirthday} Action as want to update the Next Birthday field as well as setting the Age Group OptionSet.

Did you know?

You can easily copy/clone test data in TestShield

Once you have set up test data with TestShield it is easy to create a copy/clone and make changes. It is centrally stored so that all users creating tests can use the test data in their tests. This approach dramatically reduces the time it takes to create tests, enabling teams to deliver Dynamics 365 projects faster and at less cost.

Learn more about TestShield