Overview
When operating in a call center environment and using Microsoft Dynamics 365/Dataverse, providing crucial information to agents about the caller can improve the call handling outcome. Whether is it identifying a frequent complainer, providing upsell opportunities or simply wishing the caller a happy birthday providing relevant information to the agent will increase operational efficiency and customer service.
The North52 rules engine is great for determining what alerts should be created. However, it is also great for displaying these alerts in a custom user interface using North52 Quick Tile and custom templates which is what this article focuses on.
We assume that a custom alerts table is populated using a complex set of rules managed by North52 Decision Suite. These rules create alerts for situations like repeat callers, potential fraud, upsell options, etc.
When a form loads for the Account, the side pane is automatically opened to display the rules.

Rules for Alert Display
Rule # | Description |
---|---|
1 | Rules a displayed in a pane, the pane is automatically opened on load of the Account record. |
2 | A rule can be removed from display temporarily. |
3 | If a rule has Special Handling Instructions, these instructions can be expanded. |
4 | If a rule is Dismissible, the Alert can be dismissed and made inactive so that it does not show again. The user needs to provide a reason for dismissing the Alert and are shown a warning if no reason is provided. The reason and comments are saved into the Alert record. |
5 | A rule can have an expiry date, it is not displayed after this date. |
North52 Decision Suite Solution
The North52 Decision Suite solution works like this:
- A ClientSide Formula is set up on the Account table which determines which Alerts to show:
- Create alerts based on details on the Account e.g. birth date
- Use's Fetch XML to query relevant Alert records for the Account
- Creates the JSON output for the Quick Tile template to render
- Another ClientSide Formula is set up on the Account table which:
- On load creates and opens a pane with the Quick Tile web resource and Formula short code specified as parameters
- A further ClientSide Formula is set up on the Alert table to handle the dismiss functionality
- Verifies dismiss reason provided and provides error message if not
- Once verification passed, updates the Alert record values and inactivates the record
- An xCache record to store the Quick Tile configuration template
Set up Formulas and xCache
Formula - Display Alerts List
- Open the North52 App
- Navigate to Business Process Activities > Formulas
- Create a new Formula, setting the following values in the Formula Guide:
- Source Entity set to Account
- Set Formula Type to ClientSide - Calculation
- Select the Decision Table editor
- Change the Name of the formula to Account - ClientSide - Display Alerts List
- Click Save
- Create the following Decision Table sheet for determining the Alert display logic
Real-time Alerts sheet
The real-time Alerts are created using information related to the Account and not created from the persisted Alerts table (as defined in the next sheet)

Persisted Alerts sheet
The persisted Alerts display relevant Alerts information from the Alerts table. This decision sheet loops over each relevant alert found (from a Fetch XML query) and updates variables which are added to a JSON array.


Combine Alerts sheet
The variable alerts is added to the Alerts-1 UI Property and then added to the CreateControl-1 variable which is used by the Quick Tile template

Render QuickTile sheet
The function defined here renders the Quick Tile.

Formula - Expand Alerts Pane
- Create a new Formula, setting the following values in the Formula Guide:
- Source Entity set to Account
- Set Formula Type to ClientSide - Perform Action
- Select the Decision Table editor
- Change the Name of the formula to Account - ClientSide - Expand Alerts Pane
- Click Save
- Create the following Decision Table sheet for displaying the Alerts in a pane:
DecisionTable sheet
On load of the Account form a pane is created to show the Quick Tile web resource, the web resource pane is refreshed and expanded (to ensure it is reopened if someone temporarily closes it). The logic here could be further expanded to only expand the pane if there were alerts to show.

Formula - Dismiss Alert on Button Click
When a user clicks the Dismiss button (only shown when the Alert has been set to Dismissible) this Formula validates the dismissal information and then updates and deactivates the Alert.
- Create a new Formula, setting the following values in the Formula Guide:
- Source Entity set to Alerts
- Set Formula Type to ClientSide - Calculation
- Select the Decision Table editor
- Change the Name of the formula to Alert - ClientSide - Dismiss Alert on Button Click
- Click Save
- Create the following Decision Table sheets for determining the Alert Dismiss logic:
Check Required Fields sheet
When a user clicks the Dismiss button this sheet validate that a Dismiss Category has been provided, and if the category is Other, then ensures that a reason is also provided. An alert message is displayed to the user if the validation fails.


Deactivate Alert sheet
When validation succeed, this sheet updates the Alert and deactivates it. North52 ‘virtual’ fields are passed from the Quick Tile form elements and button and used in the update (virtual fields are prefixed n52 in the rendered output in the name attribute of the HTML form element):
- [n52demo_alert.n52identifier] = GUID of the Alert record to update
- [n52demo_alert.n52dismisscategory] = value of the Dismiss Reason Category select
- [n52demo_alert.n52dismissreason] = value of the Dismiss Reason text input field

Refresh Pane sheet
This sheet refreshes the pane with the Quick Tile web resource to re-render the alerts after the update. The dismissed alert will no longer show.

xCache - Quick Tile Template
The Quick Tile template which contains the rendering logic for the Alert display. For more information on Quick Tile templates review this support article.
- Open the North52 App
- Navigate to Business Process Activities > N52 xCache
- Create a new xCache record
- Enter QuickTileTemplate for the Category
- Add AlertList to the Base Key so that the full BaseKey name is QuickTileTemplate_AlertList
- In the Value Information tab enter your the following into the Value (Secured) field:
<div style="padding:0 10px">
{{#each tiles}}
{{#each alerts}}
<div id="alert{{@index}}" class="panel panel-{{level}}" style="margin-bottom:10px;width:calc(100% - 1px)">
<div class="panel-heading">
<h3 class="panel-title" style="margin:0">{{name}}<span class="glyphicon glyphicon-remove pull-right" style="cursor:pointer;padding-left:5px" data-n52dismiss="alert{{@index}}"></span> {{#if url}}<a href="{{url}}" target="_top"><span class="glyphicon glyphicon-new-window pull-right"></span></a>{{/if}}</h3>
</div>
<div class="panel-body">
{{#if endDate}}
<div class="well well-sm" style="margin-bottom: 10px">
<span class="date-label">Ends:</span>
<span class="text-muted">{{endDate}}</span>
</div>
{{/if}}
<p style="white-space: pre-line">{{description}}</p>
{{#if specialHandlingInstructions}}
<details class="panel panel-default" style="margin-bottom:10px;border:1px solid #ddd;border-radius:4px">
<summary class="panel-heading" style="cursor:pointer;user-select:none;display:block;width:100%;margin:0;padding:10px;background-color:#f5f5f5;border-bottom:1px solid #ddd;list-style:none;outline:none">
<h3 class="panel-title" style="margin:0;display:inline;font-size:12px;font-weight:600">Special Handling Instructions</h3>
<span style="float:right;font-size:12px;color:#666">▼</span>
</summary>
<div class="panel-body" style="white-space:pre-line;padding:15px">{{specialHandlingInstructions}}</div>
</details>
{{/if}}
{{#if dismissable}}
<select class="form-control" style="margin:0 0 3px 0" data-n52bind="{{@index}}" name="n52dismisscategory">
<option value="" disabled selected>Select Dismiss Category</option>
<option value="859980000">Not Relevant</option>
<option value="859980001">Duplicate Alert</option>
<option value="859980002">Other</option>
</select>
<textarea class="form-control" data-n52bind="{{@index}}" name="n52dismissreason" rows="2" placeholder="Enter dismiss reason"></textarea>
<button class="btn btn-danger btn-xs pull-right n52button" style="margin-top:5px" data-n52shortcode="TSW" data-n52identifier="{{recordId}}" data-n52bind="{{@index}}">Dismiss</button>{{/if}}
</div>
</div>
{{else}}
<div class="panel panel-default" style="width: calc(100% - 1px);padding:0 5px">
<div class="panel-body text-center text-muted"><em>No active alerts</em></div>
</div>
{{/each}}
{{/each}}
</div>
- Click Save
