Best practices when configuring Power Platform and Dynamics CDS Data Origins – Part2

See the source image

9 Guideline

When creating Choice option set columns, create them at Global Choices for reusability.

Would a Lookup column be better? Main Pros/Cons:

Choices

  • For elements that are usually static (e.g. Gender)
  • Adding new items will require a release.
  • Easily deploy to target environments with solutions since items are considered as metadata whereas tables are data (but can easily import as well with Configuration Migration Tool)
  • Simpler UX in model-driven apps (irrelevant in canvas apps) as Choices are rendered as simple drop downs
  • Out-of-the-box multi-language support

Lookups

  • My preference. Future thinking, tables give more flexibility, especially if eventually need more metadata (e.g. Display Order). So many times, I had to convert and deprecate Choices to Lookups instead.
  • Supports out-of-the-box cascading drop down behaviors

Brief Rationale

For future proofing, you’ll never know when that Choice will become useful for another table or column


10 Guideline

When requiring many-to-many (N-N) relationships between data/tables, know your options as there are 3 methods:

  • Multi Choices multi-select option sets – simplest but most limited
  • Out-of-the-box N-N relationship – simpler UX but limited
  • Custom N-N relationship – a junction/intermediate table with Lookups on the two tables. More complex to set up but more flexible to change. My preference because can capture additional info about the relationship such as “Relationship Type” whereas is not supported with out-of-the-box N-N relationship. Gain more control with extensions (e.g. plugins).

Brief Rationale

Future proofing. Will give you more flexibility as your system evolves. Changing a column afterwards is difficult.


12 Guideline

Consistency (applies for Extensions as well)! This is something I’m very strict on. Discuss with your team and ensure consistency with naming conventions, form design, etc. Some of common easy standards are:

  • Prefix Power Automate flows and classic workflows (e.g. “Notifications – Follow-up on case with customer”)
  • Lower case on physical names of tables and columns. The developers will thank you! This will simplify their life especially when using the Web API.
Field.png
  • Suffix date time columns with “On” to follow Microsoft naming conventions (e.g. Created On). You don’t want a mix of styles like Created Date, Date Created, Created On!

Brief Rationale

Because you’ve done such a good job delivery awesome apps, as your system evolves having consistency will pay off and make it easier to maintain, understand, etc.

Better UX


13 Guideline

Hide model-driven command bar buttons if not used. Example:

CommandBar.png

If possible, hide buttons with privileges (e.g. hide New button with create privilege) otherwise can easily hide with the Ribbon Editor

Brief Rationale

Better UX with less clutter, confusion and potential issues.


14 Guideline

Automate any background (async) processes with Power Automate instead of classic workflows.

More info: https://docs.microsoft.com/power-automate/replace-workflows-with-flows

Following the same principle as #4, prevent all-purpose Power Automate flows. Scope flows to perform a single task based on a clear concise set of inputs and outputs. Register the flow on the exact step, fields/columns and rows/records filters:

flow trigger.png

Brief Rationale

Classic workflows are getting phased out. A cloud flow will also give you much more capabilities to automate.

Better scalability, performance and maintainability.


15 Guideline

Create custom roles based on the out-of-the-box “Basic User” security role.

There are different ways to model security; business/title-based roles and/or Add-on or feature type roles. For example:

– “Export to Excel” role with just export to excel privileges
versus

– “Customer Service Manager” with all the privilege the manager required to perform its tasks.
A topic for the future, but analyze which is best for your needs!

Brief Rationale

Ensures custom roles have the minimum set of privileges for users to use the system.


Labels (5):
#canvasapps #Dataverse #DataverseforTeams #PowerApps #PowerAutomate

Leave a Reply

Your email address will not be published. Required fields are marked *