[Model-driven apps – Client Scripting] How to interact the client API with a PCF control in a form using the OnOutputChange event?
Sep20

[Model-driven apps – Client Scripting] How to interact the client API with a PCF control in a form using the OnOutputChange event?

In this blog, we will discover a new addition to the Client API. This event is the “OnOutputChange” that allows triggering a handler after a PCF control has notified the change of its outputs. This event is valid for controls that live in model-driven app forms. The use of this event creates communication between PCF controls and the Client API. Using this event enables us to solve several… Continue Reading Mehdi El...

Read More
[Power Apps – PowerFx] Let’s try to deep link a Power apps to WhatsApp and Ms Teams using Named Formulas
Sep18

[Power Apps – PowerFx] Let’s try to deep link a Power apps to WhatsApp and Ms Teams using Named Formulas

You will see in this blog how we can initiate a Ms Teams call or a Whastapp chat from a Canvas app. Also, we will use the new concept “Named Formulas” to implement this scenario. Of course, we don’t have to use named formulas to implement this use case, this will give a first overview and the different possibilities and limitations regarding Named Formulas. Scenario: For the… Continue Reading Mehdi El...

Read More
[Model-driven apps] Deep link a MDA to open on a specific form tab
Sep12

[Model-driven apps] Deep link a MDA to open on a specific form tab

Have you ever needed to open a form with a focus on a tab or a section dynamically from a url ? This blog explains in detail an approach to implement this functionality. You’ll need a few lines of JS code, don’t worry the API client will do all the work for us. Scenario: We will use the Account table and the standard Account form. The goal is to automatically navigate to an “X” tab by… Continue Reading...

Read More
[Model-driven apps] Deep link a MDA to open on a specific tab
Sep12

[Model-driven apps] Deep link a MDA to open on a specific tab

have you ever needed to open a form with a focus on a tab or a section dynamically from a url ? This blog explains in detail an approach to implement this functionality. You’ll need a few lines of JS code, don’t worry the API client will do all the work for us. Scenario: We will use the Account table and the standard Account form. The goal is to automatically navigate to an “X” tab by… Continue Reading...

Read More
[Model-driven apps – Virtual Tables] How to resolve the AAD User’s lookup issue in MDA forms before Microsoft’s fix?
Jun23

[Model-driven apps – Virtual Tables] How to resolve the AAD User’s lookup issue in MDA forms before Microsoft’s fix?

Microsoft has recently introduced a virtual table called AAD User. This table allows to retrieve any user in an organization’s Azure Active Directory. This feature is available on all environments, no action is required to use it. One possibility is to create lookup columns of type AAD User. This will allow to create relationships between a Dataverse record and a user that is part of the… Continue Reading Mehdi El Amri’s...

Read More
[Model-driven app – Custom Pages] How to fix the UserNotLoggedIn error when loading a custom page on the iOS native player?
Jun16

[Model-driven app – Custom Pages] How to fix the UserNotLoggedIn error when loading a custom page on the iOS native player?

As you know, Model-driven apps can be used on different clients, like Android smartphones and tablets or iOS iPads and iPhones. Recently, I had the opportunity to test Custom pages with the Native player from Microsoft on Android and iOS. This worked perfectly on Android, but not on iOS. Indeed, an error message is displayed while loading the Custom Page. In the following demo, I have a… Continue Reading Mehdi El Amri’s...

Read More
[Model-driven apps – In-App notifications] Only System Administrators can view notifications, What about the other users ?
May04

[Model-driven apps – In-App notifications] Only System Administrators can view notifications, What about the other users ?

In-app notifications for model-driven apps is a feature that has historically been highly requested by the Dynamics 365 community for the past few years. To meet this long awaited need, Microsoft has introduced this feature for Dynamics 365 CE but not only, also for model driven applications, a Power Apps license is enough to take advantage of this feature. According to this blog by Adrian… Continue Reading Mehdi El Amri’s...

Read More
[Model-driven apps – Power Fx] How to open multiple rows in new tabs using Power Fx commands ?
Apr10

[Model-driven apps – Power Fx] How to open multiple rows in new tabs using Power Fx commands ?

According to the roadmap published by Microsoft, Power Fx commands for model-driven apps will go into general availability from May 2022. This blog will discuss an example using modern commands, and I hope it will encourage you to adopt this new way to customize the command bar and buttons. As mentioned in the blog title, let’s see how it is possible to create a new button that will open… Continue Reading Mehdi El...

Read More
[Power Automate – Dataverse] How to execute a fetchXml query that includes options not supported by the List rows action?
Mar16

[Power Automate – Dataverse] How to execute a fetchXml query that includes options not supported by the List rows action?

Dataverse list rows connector allows to retrieve rows from a Dataverse table. This connector can filter rows using OData expressions or fetchXml queries. Unfortunately, the connector does not support all fetchXml requests. This blog will discuss an approach to execute this kind of unsupported queries. Let’s look at what the documentation says:The distinct operator and aggregation… Continue Reading Mehdi El Amri’s...

Read More
[Canvas Apps – Dataverse] How to get distinct values from datasource ?
Mar12

[Canvas Apps – Dataverse] How to get distinct values from datasource ?

Power Apps Canvas Apps offers the Distinct function that returns unique values from a table or data source. Unfortunately, this function may not work as expected if the data source contains a large data set. Let’s look at this with an example by reproducing the issue: Let’s take the Dataverse table ‘Contact‘ and its column ‘Address 1: Country/Region‘The idea is to display all countries…...

Read More
[Model-driven apps – Client Scripting] How to avoid calling the same function twice when creating a new record ?
Mar01

[Model-driven apps – Client Scripting] How to avoid calling the same function twice when creating a new record ?

Model-driven apps offer a client API that allows us to implement some business logic in JavaScript. The client API accepts to attach functions to events such as form loading, data changing and more. Generally, we have two possibilities to register a function for a given event. Either in a static way, using configuration. Or dynamically, by registering functions for an event during the form… Continue Reading Mehdi El Amri’s...

Read More
How to calculate media file size in a PowerApps CanvasApp ?
Jan14

How to calculate media file size in a PowerApps CanvasApp ?

This blog will discuss how to calculate the size of a media file in a canvas app. This can be useful if needed to do some validation on the size of the media that will be uploaded by a user. The demo below shows the scenario where the app displays the size of an image as a notification when a user has uploaded it from his device. Demo : How it works ? The Add picture control is… Continue Reading Mehdi El Amri’s Article on...

Read More
Optimistic Concurrency in Model-Driven Apps Forms
Jan09

Optimistic Concurrency in Model-Driven Apps Forms

This blog will discuss a proposed implementation of Optimized Concurrency for Model-Driven Apps forms. My implementation is executed on the model-driven app only, using the client API and the new Asynchronous capabilities that the API offers. I won’t go into the details of my analysis that led to this implementation proposal. However, I was strongly inspired by two blogs, which caught my… Continue Reading Mehdi El...

Read More
Dynamics 365 CRM [Dataverse] – How to cancel the merge cascade for a given relationship ?
Jan01

Dynamics 365 CRM [Dataverse] – How to cancel the merge cascade for a given relationship ?

In the previous blog, we saw the possibility to force the merge of two accounts if the subordinate account is attached to an active offer. Today we will see how to cancel the merge cascade for a given relationship. Before going further, we will see the standard behavior of the merge. Indeed, after the merge, all child records that are linked to the subordinate record are attached to the… Continue Reading Mehdi El Amri’s...

Read More
Dynamics 365 For Sales: How to merge Accounts if the subordinate record is associated with one or more active quotes?
Dec17

Dynamics 365 For Sales: How to merge Accounts if the subordinate record is associated with one or more active quotes?

Merging records on Dynamics 365 CRM is a very powerful feature that prevents duplicate records. I was asked to study this feature for a client who wanted to clean up his customer records, and we reached a point where we had to merge accounts that were related to active quotes. If you didn’t know it, Dynamics 365 For Sales disallows this operation by showing this error message: After… Continue Reading Mehdi El Amri’s...

Read More
Transform your Model-driven app to a multi-session app using settings solution component
Dec02

Transform your Model-driven app to a multi-session app using settings solution component

This blog will discuss new component added to Power Apps. It is about the “Settings” component. Indeed, this component allows adding a configuration layer for a model-driven application. This allows to easily activate or deactivate a feature for a model-driven app. For more information on this component, I invite you to read this excellent blog from Power Apps team < h4 id=”scenario”>Scenario:…...

Read More
Unpack Canvas App Error PA3005: Connection ‘XXX’ does not have a corresponding data source… How to get around this issue ?
Nov01

Unpack Canvas App Error PA3005: Connection ‘XXX’ does not have a corresponding data source… How to get around this issue ?

This blog will discuss a workaround to solve the “PA3005” error that occurs when attempting to unpack a Canvas App. Indeed, this error occurs when validating the *.msapp source file of some CanvasApps. Below is the output of the command when I tried to unpack my “mySuperCanvasApp.msapp”: The tool returns the validation error: Connection ‘UsersList_1’ does not have a corresponding… Continue...

Read More
How to pass an object from a model app driven app to a custom page?
Oct25

How to pass an object from a model app driven app to a custom page?

According to the current documentation, we can pass a dataverse record as a parameter. This is still very beneficial for some scenarios. But what if we want to pass a set of parameters without using an existing record. After several attempts, I managed to pass an object containing some properties from the model driven app to the custom page using the navigateTo method. The next video… Continue Reading Mehdi El Amri’s...

Read More
Tired of creating a new console application to connect to Dynamics 365 CRM/Dataverse? Use a template!
Oct10

Tired of creating a new console application to connect to Dynamics 365 CRM/Dataverse? Use a template!

Sometimes we are asked to create console applications that interact with Dynamics CRM/ Dataverse, and like every new developer, we create a new project and look for a piece of code on the internet to start, or we copy existing code from an old project. I used this approach during all my projects, today I say stop, I want something more automatic and practical to start any new project of this… Continue Reading Mehdi El...

Read More
How to display a Power Apps | Canvas app in full screen without the title bar?
Sep21

How to display a Power Apps | Canvas app in full screen without the title bar?

Recently, I was asked to open a PowerApps | Canvas app without the title bar at the top of the screen. After some research, I found an answer from matthew devaney that proposed to add the “&hidenavbar=true” parameters to the URL of the application. This works perfectly and allows us to hide the title bar. Today, I’m going to present a method that will allow us to achieve the same need… Continue Reading...

Read More
Implementing triggers for Power Automate flows that are not supported by the Dataverse connector
Sep06

Implementing triggers for Power Automate flows that are not supported by the Dataverse connector

The Dataverse connector allows us to trigger Power Automate Cloud flows based on events that occur on Dataverse. These events include the creation, deletion and modification of a record or the execution of an action or from a step in a business process flow. Generally speaking, these triggers serve a large variety of requirements and give the flexibility to implement efficient triggers…. Continue Reading Mehdi El Amri’s...

Read More
Dynamics 365 Developer Toolkit reborn as Power Platform Tools for Visual Studio 2019
Aug17

Dynamics 365 Developer Toolkit reborn as Power Platform Tools for Visual Studio 2019

Kokulan's Blog Power Platform Developers who were using the Dynamics 365 Developer toolkit had issues connecting to online Dataverse instances after the regional discovery service was deprecated in June 2021. This toolkit was last updated in 2017 July and its source is not on GitHub. After the regional discover service deprecation this effectively stopped connecting to online instances,… Continue Reading Mehdi El...

Read More
Pass data from Custom page dialog to the parent model driven app
Aug03

Pass data from Custom page dialog to the parent model driven app

The new Custom Page component can be opened as a dialog in a model driven app. This feature will allow app makers to quickly create intuitive dialogs without code with a rendering that is close to the standard model driven app’s dialogs, since it uses Fluent UI controls that are also used by Model Driven Apps. In today’s post, we’ll see how we can pass an object from a Custom page… Continue Reading Mehdi El...

Read More
Let’s add terms and conditions to a Model Driven App using Custom Page
Jul29

Let’s add terms and conditions to a Model Driven App using Custom Page

This blog will discuss a new component for Power Apps Model Driven Apps called Custom Page. In fact, this component joins the family of existing pages like Forms, Views and Dashboards. This new type of page is based on the Canvas Apps container and will surely add power, flexibility and a lot of possibilities to model driven apps. The images below shows the rendering of a Custom page from… Continue Reading Mehdi El Amri’s...

Read More
First look at the multi-tab panel (sidePanes)
Jul14

First look at the multi-tab panel (sidePanes)

In this blog, we will discuss a new feature that will be available in the Powerplatform Wave 2 2021 release, it is about the side panel that appears on the right side of an MDA, you can find the announcement of this new feature on the following documentation: Model driven apps support multiple app side panes Please note that this new feature is not yet documented. Do not use this approach… Continue Reading Mehdi El Amri’s...

Read More
Integrate the approval center into a model driven app/Dynamics 365 CE
Jun16

Integrate the approval center into a model driven app/Dynamics 365 CE

Power Automate provides a standard solution to manage approvals in a Dataverse environment. Approval requests can be easily generated from cloud flows. Users have the ability to view and respond to approval requests from email, teams or the approval center which is accessible from the power automate website only. Today, I will present a way to respond to approvals from a model driven app… Continue Reading Mehdi El Amri’s...

Read More
Connect Microsoft Dynamics 365 Developer Toolkit to a Dataverse environment using Global Discovery service (deprecation of the Regional Discovery service)
Jun14

Connect Microsoft Dynamics 365 Developer Toolkit to a Dataverse environment using Global Discovery service (deprecation of the Regional Discovery service)

Many of us use the Microsoft Dynamics 365 Developer Toolkit for plugin development. This tool helps developers avoid manual tasks and helps them focus on implementing the business logic. Unfortunately, this tool is no longer working since the switch from Regional Discovery service to the Global Discovery service. Actually, the error “FCB ‘EnableRegionalDisco’ is disabled” is generated when… Continue...

Read More
How to get the type of the regarding field of an activity using Power Automate Cloud Flow ?
Jun09

How to get the type of the regarding field of an activity using Power Automate Cloud Flow ?

The activities have a field named Regarding which is of type Multi-table lookups. This field supports several types like account, contact, lead (…). This post will discuss how to get the type of lookup used or in other words which table is used with Power Automate Cloud Flows. For the demo, I created a simple flow that is triggered when a task is created. Then I store the type of the… Continue Reading Mehdi El Amri’s...

Read More
Apply a business logic to the Opportunity Close Quick Create form according to the context of the opportunity closure
Jun08

Apply a business logic to the Opportunity Close Quick Create form according to the context of the opportunity closure

In the release 2 2019, Microsoft introduced the ability to modify the Opportunity Close dialog using the Quick Create Form. In this blog, we will discuss the ability to apply a business logic to the Opportunity Close Quick Create form according to the context of the opportunity closure. Use Case Change the “Close Date” label depending on the context of the opportunity closure. Indeed,… Continue Reading Mehdi El...

Read More
Cancel the save based on the result of the asynchronous operation.
May31

Cancel the save based on the result of the asynchronous operation.

In 2017, Natraj Yegnaraman shared a clever method to cancel the save of a form. His approach was to cancel the save before the asynchronous operation and then retrigger the save if needed after the asynchronous operation is resolved. You can find all the details on the following link. This approach is explained by the fact that the save handler was always synchronous. Now in 2021,… Continue Reading Mehdi El Amri’s Article...

Read More
A glance of the “OnLoad” event on a Model Driven App form (Async OnLoad event)
May26

A glance of the “OnLoad” event on a Model Driven App form (Async OnLoad event)

This blog will discuss a potential upcoming feature that is related to the “OnLoad” event of the forms for a model driven app. The goal is to look at the process of turning this event from synchronous to asynchronous using the “app settings” component. Also, some benefits of implementing an asynchronous logic on the “OnLoad” event will be illustrated. Please note that, at the time of… Continue...

Read More
How to run JavaScript code when loading a model driven app?
May07

How to run JavaScript code when loading a model driven app?

Have you ever needed to execute a JavaScript code when opening a model driven app? Maybe to initialize some global variables, display a notification or open a dialog (…) This blog will discuss a way to meet this need using a method that is not yet documented and therefore not yet supported by Microsoft. The functionality will be illustrated with a simple scenario that consists of loading a… Continue Reading Mehdi El...

Read More
How to execute a JavaScript function on all forms without registering it manually?
Apr23

How to execute a JavaScript function on all forms without registering it manually?

Model-driven apps provides a rich set of client APIs to interact with form objects and events to control what and when to display on a form. The JavaScript functions react to different events so that the code gets executed when the event occurs on the form. The process of associating a function to an event is done manually for each form. We will see on this blog an interesting method to… Continue Reading Mehdi El...

Read More
How to set up complex conditions for business process flow ?
Apr13

How to set up complex conditions for business process flow ?

Business Process Flow (BPF) is a very useful tool to standardize data entry on a model driven app. In simple cases, a linear BPF is a good option. However, in more complex scenarios, a BPF can be enhanced by using branching. I will discuss on this blog the limitations and workarounds concerning branching conditions.I was recently working on a business process flow and I noticed that once I use… Continue Reading Mehdi El...

Read More
How to bulk change main forms header density using Cloud Flows ?
Mar19

How to bulk change main forms header density using Cloud Flows ?

As announced by Microsoft, the low-density header option will be deprecated on October 2021. As an impact, any current form that is configured as “low-density” will be automatically updated to render in a high-density with flyout mode in a model driven app. I will present on this blog a way to change in bulk the “high-density” option on all account main forms using power automate… Continue Reading Mehdi El...

Read More
I’m lazy, I don’t want to manually change the view names anymore, thanks Cloud Flows!
Mar19

I’m lazy, I don’t want to manually change the view names anymore, thanks Cloud Flows!

We will discuss on this blog the possibility of changing the view name using the Power Automate Cloud Flows. This idea comes from the fact that I am frequently asked to change the naming of the views. In fact, one of my clients tags all his views with division names. So, when changing the division name, I have to update the corresponding tag in each view. For example, for the Account table,… Continue Reading Mehdi El...

Read More
Bulk Business Process Flow switching using Power Automate (Cloud Flows)
Mar18

Bulk Business Process Flow switching using Power Automate (Cloud Flows)

Sometimes we create a new business process flow, which needs to be applied to existing records. Today I will present you a way to do it using the Cloud Flows in Power Automate. The approach presented is a proof of concept that can be significantly improved, you will get the general idea that you can adapt to your own needs. For example, I will use the Standard Business Process Flow… Continue Reading Mehdi El Amri’s Article...

Read More
Dependent OptionSet in Dynamics CRM V9
Feb28

Dependent OptionSet in Dynamics CRM V9

It is known that for the moment there is no way to set up a dependency between two OptionSet fields with OOB functionalities. It is possible to implement this scenario using JavaScript code as the field type used is OptionSet. We could have implemented it with a simple configuration if the Field type were a LookUp. Example: Let’s take the following example:– OptionSet A with the… Continue Reading Mehdi El...

Read More
Azure Translator PCF Control
Feb12

Azure Translator PCF Control

In this blog, I’m sharing my first PCF Control which allows translating text by automatically detecting the language using Azure Translator cognitive services. Using this control, CRM users will no longer need to copy/paste text fields and use an external tool to translate them. The demo below illustrates the translation of a field Multiple lines of text and an email that is formatted in… Continue Reading Mehdi El...

Read More
How do I know what permissions a user’s security role requires to perform an operation?
Feb12

How do I know what permissions a user’s security role requires to perform an operation?

The problem: A member of the community recently asked what privilege should be added to a security role in order to revise a quote. In effect, it explains that the role seems to have sufficient privileges to perform this action, but an error message shows up when the quote is revised. Below is the security role configuration being used: Below is the error message displayed when… Continue Reading Mehdi El Amri’s Article on...

Read More
Default legacy app can be hidden for end users but is still accessible through direct URL (workaround)
May24

Default legacy app can be hidden for end users but is still accessible through direct URL (workaround)

The legacy web client app, also known as Dynamics 365 – custom, can be hidden from end users. Documentation: https://docs.microsoft.com/en-us/power-platform/admin/enable-unified-interface-only#dynamics-365—custom On the other hand I noticed that the application is still accessible via the following URL:https://orgname.crm4.dynamics.com/main.aspx?app=d365default&forceUCI=1 By… Continue Reading Mehdi El...

Read More
Retrieve all personal views containing a specific field
May05

Retrieve all personal views containing a specific field

In some cases, you want to delete a custom field in a highly used entity. You can easily identify where it appears in system views, forms, etc. But since it’s, many users probably have personal views that include it. So you have to alert those users to remove it from their views, so they don’t  get an error message later on after you delete the field.  If a field is deleted and used on...

Read More