D365FO X++ tip for developers: Feature callouts and their limitations

Intro

Feature callouts are a useful way to call attention to new features that have been added in new versions of your solution.

Creating a feature callout

To implement a feature callout in D365FO, you only need to call the following method:

SystemNotificationsWhatsNewManager::AddWhatsNewWithActionLink(
    '{EB751265-389F-431E-9E60-F213B7E80FF8}', // GUID of the callout.
    'Check out Print management utilities!', // Title of the callout.
    'Manage the Print management settings from a list view, where you can filter them, edit the print destination settings in grid, and perform editing and deleting in bulk.', // Body text of the callout.
    identifierStr(DocPrintMgmtUtils), // The name of the form control for the callout to point to.
    'https://ax.docentric.com/d365-how-to-manuals/d365-print-management/d365-print-management-utilities/'); // The link that will be opened when the user clicks on the Learn more button on the callout. If it's an empty string, the Learn more button will not be shown.

Which will produce the following result:

The SystemNotificationsWhatsNewManager::AddWhatsNewWithActionLink() method should be called when the control that you want the callout to point to is visible.

In most cases, this will be the init() method of a form.

But, if for example the control is on a different tab page, you would have to call the callout method when the pageActivated() method of the control is called.

To generate a GUID, you can use Visual Studio’s built-in feature:


Limitations

The feature callouts framework has several limitations that should be taken into account when planning new feature callouts:

  1. You can’t put more than 1 callout on the same control (only the last triggered callout will be shown).
  2. You shouldn’t put a callout on a FormTabPageControl control (it will be displayed somewhere in the corner of the page).
  3. You shouldn’t put callouts on “pop-up” forms, like the Print Destination Settings form (they won’t be rendered on the screen, possibly because they are “behind” the form).
  4. You shouldn’t put callouts on form controls that are inside a FormActionPaneTabControl control (they will only be displayed correctly if the Action Pane is pinned open).

Resources

Microsoft documentation here.