Scenario Overview

Health Coverage Assistance through the Department of Health and Welfare provides health coverage or assistance in paying for health coverage for people who meet certain criteria.

This example shows how to set up a Decision Table to evaluate if a person is entitled to Health coverage or Assistance under the requirements laid down by the US State of Idaho.

Requirements shown below.


To be eligible you must fit into one of the following categories:

Category 1:

Be a child under 19 years old
Category 2:

Be a pregnant woman
Category 3:

Be an adult with a child under the age of 19
Category 4:

Be aged 65 or older
Category 5:

Be blind or disabled according to the Social Security Administration criteria

If you match one of the above categories then you must also meet the below criteria:

Rule 1: 

You must be a Citizen of, or legal immigrant to, the USA.
Rule 2:

You must be a resident of the State of Idaho
Rule 3:

Your household income must be less then the program income limits for your household size.
Rule 4:

Your resource limits must not exceed the program resource limits

In this example the Account entity has been renamed to Household  and modified accordingly.
Contacts have been renamed as Household Residents that live in the that Household


Household Resident

North52 Decision Suite Solution

The North52 Decision Suite solution works like this:

  • A formula of type Save - Perform Action is created on the Household Resident entity
  • The Source Properties are set to Employment Status, Current Savings, Monthly IncomeDisability Status, Pregnant and Immigration Status
  • The Event is set to Create & Update
  • Exit this Decision Table on First Match is turned On on all Decision Tables
  • Exit All Decision Tables on First Match is turned Off on all Decision Tables


Multi-Sheet Decision Table


Preliminary Requirements

All of the Conditions are of type OR as you only need to match one of them


Household Income Check - Adult

Note:  The Household Income requirement states that for every resident after 8 we should add $75 to the max income allowed for 8 residents.

Therefore we use the following 741 + (75 * ({Household Residents} - 8)).
For 10 residents it would evaluate to 741 + (75*(10-8)) = $891 dollars.


Household Income Check - Pregnant Adult


Household Income Check - Child 

Medicaid Eligibility


Calculations Table

The Calculations Table has 5 calculations to execute as part of this Decision Table

  • Age - Calculates the age of the Household Resident when the Decision Table executes
  • ChildrenUnder19 - Checks for any Household Residents with a child Connection Role to the Household Resident
  • Household Income -  Sums up the income and savings of all Household Residents living in the Household
  • Household Residents -  Counts how many Household Residents live in the Household
  • Resident in Idaho - Checks if the State / Provence field of the Household the Household Resident is living in is set to Idaho



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

  SetVar('HasChildUnder19', false ),
        FindRecordsFD('FindChildrenOfResident', false,SetParams([contact.contactid],
                     FindValue('connectionrole', 'name', 'child', 'connectionroleid'))),
        iftrue(DateDiff(CurrentRecord('birthdate'), UtcDate(), 'y') < 19, 
                SetVar('HasChildUnder19', true))),

Household Residents

FindCount('contact', 'new_primaryresidence', [contact.new_primaryresidence], 'contactid')
Household Income

  SetVar('HouseholdIncome', FindSum('contact',
                                   'new_monthlyincome', 0)),
  SetVar('HouseholdIncome', GetVar('HouseholdIncome') +
        'new_currentsavings', 0))
Resident In Idaho

                'address1_stateorprovince')), 'ID', 'IDAHO')


Fetch XML 

<fetch version="1.0" output-format="xml-platform" mapping="logical" distinct="true" >
  <entity name="contact" >
    <attribute name="fullname" />
    <attribute name="birthdate" />
    <attribute name="contactid" />
    <order attribute="fullname" descending="false" />
    <link-entity name="connection" from="record1id" to="contactid" alias="ae" >
      <filter type="and" >
        <condition attribute="record2id" operator="eq" uitype="contact" value="{0}" />
        <condition attribute="record2roleid" operator="eq" uitype="connectionrole" value="{1}" />


This example uses publicly available information on the owners website and has not been endorsed by the owner of the information.

Did you know?

TestShield Makes Test Automation a First Class Citizen in Dynamics 365

Test automation principles leads to improved communication, reliability and teamwork as you enhance the ever changing business processes. The team members need to roll out change requests on the existing system and build new applications making automated testing very important. 

Top 3 Benefits of Dynamics 365 Automated Testing:
  • Validated Business Processes: Dynamics 365 Automated Testing provides a robust approach to validate the business rules and process requirements of Dynamics 365 solutions
  • Better Engagement: Dynamics 365 Automated Testing ensures that end users get top-class user experience
  • Faster Delivery Time: Dynamics 365 Automated Testing assures fast delivery time by leveraging automation

The growing number of Dynamics applications that are being developed continuously presents a major challenge for Dynamics 365 testing. With such fast development, organizations need to ensure that these applications are thoroughly and constantly tested before being deployed.

Learn how TestShield helps automate testing in your Dynamics 365 projects