Model Driven App | Modern advanced find

January 28, 2022 1 comment

Finally the most awaited upgrade to the Legacy ‘Advanced Find’ Experience is coming up as part of 2022 Wave 1 release.

Legacy Advanced Find Experience

With Modern advanced find, you can access any table in a model-driven app through search and use advanced filters to explore the data easily.

Modern advanced find benefits:

  • Explore any table in a model-driven app through structured search and filters. Edit columns and filter data to construct views that help you apply the right lens on your data easily.
  • Choosing the right view to access is easier with the latest enhancement to view selector having the ability for you to search for a view.
  • Managing views is simpler with personalization options to build your own set of views, hide views, and order them differently. Your personalized view list travels with you across all apps and all devices, online and offline.
  • Collaborate with your team by sharing views easily and managing the views shared to you.
  • All of the capabilities mentioned above will replace the legacy advanced find experience.

Availability Dates:

Enabled forPublic previewEarly accessGeneral availability
Users by admins, makers, or analystsFeb 2022Apr 2022

🙂

Power Apps | Business Rule | Set Field Value vs Set Default Value

January 19, 2022 Leave a comment

While configuring Business Rules you might have noticed ‘Set Field Value’ and ‘Set Default Value’ Actions.

Though the ‘Set Field Value’ and ‘Set Default Value’ Actions look identical, there are following subtle differences.

Set Default Value:

  • ‘Set Default Value’ only triggers on ‘Create’ event and does not trigger on ‘Update’.
  • To understand this better lets go with an example, I’ve a ‘Student’ table with ‘Department’ and ‘College Fee’ columns.
  • In my ‘Business Rule’, I am setting ‘College Fee’ field value to ‘10000’ using ‘Set Default Value’, when the ‘Department’ sets to ‘IT’.
  • Now in my App, on Student’s ‘Create‘ form, the ‘College Fee’ field sets to ‘10000’ when the Department is IT as configured in Business Rule.
  • If I open an Existing ‘Student’ record, and set the ‘Department’ to ‘IT’, ‘College Fee’ field will not get set to ‘10000’, which proves that ‘Set Default Value’ action defined in ‘Business Rule’ does not trigger on ‘Update’ event.
  • One more key point is, ‘Set Default Value’ can’t override an existing field value.
    • For example, on ‘Student’ create form, manually type some value in ‘College Fee’ and then change the ‘Department’ to ‘IT’ .
    • This triggers ‘Set Default Value’ action, but the ‘College Fee’ value wont get changed to 10000 as there was already a manually typed presented in ‘College Fee’.
  • Also, ‘Set Default Value’ does not have ‘Clear’ option.

Set Field Value:

  • ‘Set Field Value’ triggers on both ‘Create’ and ‘Update’ of the record.
  • Also, ‘Set Field Value’ has a ‘Clear’ option.

Hope these differences helps you while choosing between ‘Set Default Value’ and ‘Set Field Value’,

🙂

Dataverse | Traditional Quick Find vs Enhanced Quick Find (2020 Wave 1 Update)

January 10, 2022 Leave a comment

I got a following question from a blog follower who recently started working on Dataverse on ‘Quick Find Search’.

Why the ‘Quick Find’ view not fetching the data though there are matched records?

So this article is for those who recently started working on Dataverse to differentiate Traditional vs Enhanced Quick Find view.

Traditional ‘Quick Find’:

  • Traditional ‘Quick Find’ fetches the matched rows irrespective of the current view.
  • As an example, below ‘Male Students’ view contain 2 records where Gender=Male.
  • If I search for a ‘Female’ record which is not part of this view, it will show up as below.

Enhanced Quick Find (2020 Wave 1 update):

  • With the 2020 Wave 1 update, by default ‘Quick Find’ fetches the matching records only from the currently selected view.
  • As an example, If I search for a ‘Female’ record while a ‘Male Students’ view selected, no records would be fetched. This is because of the search confined to the selected ‘Male Students’ view.

How to enable Traditional Quick Find post 2020 Wave 1 Update:

  • Post 2020 Wave 1 Update, ‘Traditional’ Quick Find will be turned off, by default.
  • To enable ‘Traditional’ Quick Find, from the Admin Center, select the Environment, go to Settings -> Features and turn on the “Use quick find view of an entity for searching on grids and sub-grids” setting.

🙂

Categories: PowerApps Tags: ,

C# | Telesign | Send SMS | Couldn’t load type Telesign.MessagingClient

Telesign is a Communications Platform as a Service company. We can Send and receive text messages effortlessly with TeleSign’s global text message API.

Other day I’ve subscribed to Telesign trial and was trying to send SMS from my C# console application.

As a first step I’ve installed ‘Telesign’ NuGet package to my C# console project and pasted the code copied form Telesign portal.

I got following “Couldn not load type ‘Telesign.MessagingClient’ from assembly Telesign” exception when I ran the code.

Reason and Fix:

  • My C# console project name was ‘TeleSign’ which conflicted with ‘Telesign’ NuGet package assembly.
  • Rename the Project solved the issue.

Its trivial issue but took sometime to figure out the reason. Hope this helps.

🙂

Categories: C# Tags: ,

Dataverse | Plugins | ILMerge Alternative | Shared Project

Role of ILMerge in Plugin Development:

If you are familiar with writing Plugins in Dataverse, chances are that you would have used ILMerge to merge the Assemblies.

In a typical Dynamics Plug-in development, we will have following .Net Class Library Projects.

  • Plugins.csproj
  • Plugins.Helper.csproj

When you compile above projects, you get two .dlls (i.e., Plugins.dll and Plugins.Helper.dll). As we can only deploy one .dll to Dataverse, we use ILMerge to merge both Plugins.dll and Plugins.Helper.dll in to one.

Is it recommended to use ILMerge in Plugin development? Answer is No. As per this Microsoft article ILMerge is not supported in Plugins development.

Now whats the alternative? Answer is Shared Projects.

Steps to use Shared Projects in Plug-in Development:

To explain the Shared Projects, I am going to build a simple Plugin project ‘Plugins.csproj’ with ‘PreAccountCreate’ class, which refers a ‘Shared’ Helper project ‘Plugins.Helper’.

  • Create a new C# class library project and add ‘PreAccountCreate’ class as below.
    • You can copy the code I’ve used from here.
  • Now lets add a ‘Shared’ Helper project which our Plugin project would refer.
  • Right click your Solution and click ‘New Project’.
  • Select a Project template of type C# ‘Shared Project’.
  • Give a Name to your ‘Shared Project’.
    • I’ve named it as ‘Plugins.Helper’.
  • ‘Plugins.Helper’ Shared Project, looks as below in the Solution Explorer.
  • Now add a Class file ‘AccountHelper.cs’ to the ‘Shared Project’.
  • I’ve added a simple function ‘GetAccountName()’ which returns ‘Microsoft India’.
  • To use the ‘Shared Project’ in our Plug-in project, right click ‘Plugins’ project and add ‘Reference’.
  • From ‘Shared Projects’, choose your project (i.e., Plugins.Helper in my case).
  • Once you referred the ‘Shared Project’ in your Plugin project, it looks as below.
  • Now its time to call ‘GetAccountName()’ from our ‘PreAccountCreate’ class.
  • Sign the Assembly.
  • Build the Plug-in project and you would get the ‘Plugins.dll’ in bin/Debug folder.
  • Go ahead and deploy the ‘Plugins.dll’ to Dataverse and register step using Plugin Registration Tool.

🙂

Categories: Plug-Ins Tags: , ,

Power BI | Dataverse | Fixing the connection reference of a report

December 31, 2021 Leave a comment

For the unversed, Using ‘Power BI embedded’ we can embed a Power BI report as Dashboard in Model Driven App.

This Dashboard can be added to a Solution and can be transported to other Environments. However there will be a challenge with report’s Connection reference.

When the Dashboard moved to another Environment, the connection will not be refreshed with Target Environment and will be still pointing to Source Environment.

As an example, if the Power BI report was built connecting to ‘DEV’ Environment, when the report exported from ‘DEV’ using Solution and imported to another Environment, reports connection will be still pointing to the Source Environment (i.e., DEV).

Workaround to refresh the Connection:

  • At the time of writing this article, there is no straight forward option to refresh the Power BI report’s Dataverse Connection.
  • One option is Save the Power BI report (i.e., .pbx file) locally and create a copy and rename.
    • In my case, I’ve renamed ‘Account_DEV’ to ‘Account_TEST’ file.
  • Open the ‘Account_TEST’ file and open the ‘Power Query Editor’ by selecting ‘Transform data’ option.
  • From the ‘APPLIED STEPS’, select ‘Source’ and update the Dataverse URL.
  • Save the report and publish to Power BI ‘Workspace’
  • Assuming you have moved the Report from ‘DEV’ to ‘TEST’ environment using the Solution, as a last step, connect to ‘TEST’ environment and select the report.
  • Click ‘Edit’ and select the ‘Account_TEST’ report from ‘TEST’ workspace.
  • This manually correcting the report’s connection works. I believe in near future we will have much easier and straightforward approach to refresh conenction.

🙂

Categories: Power BI Tags: , ,

Power Apps | On-premises data gateway | High-availability Clusters

December 27, 2021 Leave a comment

In one of my previous articles, I detailed the steps to connect to an on-premise SQL server from a Canvas App.

High availability: Refers to a set of technologies that minimize IT disruptions by providing business continuity of IT services through redundant, fault-tolerant, or failover-protected components inside the same data center.

By default On-premise Gateway is single instance and not a High availability option. If the gateway is unavailable, data requests will be failed and causes App downtime.

In this article, lets see how to build an high available On-premises Gateway using Clusters.

Gateway Clusters:

  • A cluster lets gateway admins avoid having a single point of failure for on-premises data access.
  • If the primary gateway is unavailable, data requests are routed to the second gateway that you add, and so on.
  • Following is the option to add a new Gateway to add to an exiting Gateway Cluster.
  • Because we can install only one standard gateway on a computer, we must install each additional gateway in the cluster on a different computer.

Refer this Docs article for more details.

🙂

Categories: PowerApps Tags: , ,

Model Driven App | Power BI | Visualize data

December 22, 2021 Leave a comment

There’s a new way to visualize your model-driven Power Apps and Dynamics 365 data stored within Dataverse. With a single click, Power BI will automatically generate a set of visuals for you to explore and find insights within your data.

Prerequisites:

Enable Model Driven App Level Setting:
  • This feature is App specific, so select the Model Driven App and choose ‘Edit in preview’ option.
  • Go to Settings -> Features and enable “Enable Power BI quick report visualization on a table (preview)” option.
Enable Environment Level Setting:
  • Go to Settings -> Product -> Features
  • Enable ‘TDS endpoint’ feature.
Power BI License:
  • Make sure you have Power BI license.
  • If you dont have a license, ‘Visualize this view’ shows following screen.
  • Acquire license and retry.

Using ‘Visualize this view’ option:

  • Open the Model Driven App.
  • Select any view and click on ‘Visualize this view’ button from Ribbon.
  • It will open up, Power BI report screen.

Key Notes:

  • The data being visualized within the report is always based on the data currently in the view’s grid.
  • This means if you’ve applied any filters to the grid, that filtered data will be used in the Power BI visuals. For example, if the view is filtered down to just 15 rows of data, only 15 rows will be visualized through Power BI.
  • At the time of writing this article, the visuals generated from this flow can only be used for personal exploration. You can’t share or save them.
  • Column display names aren’t used within the report. You’ll see the system names in the resulting visuals.
  • You may notice more columns within the report than you see in the original view. These fields could include foreign keys for the columns or hierarchy, or URL fields that are being used within the original view for purposes other than columns.
  • The report created through this feature is temporary, so the experience times out after a set amount of time. At that point you need to close and reopen the report to continue exploring your data. For now, the timeout occurs at one hour.

Refer this docs link for more details.

🙂

Dataverse | Modernize business units (Public Preview)

November 12, 2021 Leave a comment

With this preview feature,

  • Users are no longer restricted to accessing/managing data in their own business unit.
  • Users can now access and own records across business units.
  • Security roles from different business units can be assigned to the users regardless of the business unit the users belong to.
  • This feature enables the Owning Business Unit column of the record so that it can be set/updated by the users.
  • The Owning Business Unit column determines the business unit that owns the record.
  • Business units’ data access can now support “Matrix data access” structure.

Modernize Business Unit – Feature Goals:

Modernize Business Unit – Design Elements:

New Organization Settings while Changing the User’s Business Units:

Refer following videos to learn more about this preview feature:

🙂

Categories: CRM

Dynamics CRM | Microsoft Power Apps | Legacy OData v2.0 Service removal date

November 12, 2021 Leave a comment

OData v2.0 endpoint:

  • The Organization Data Service (Also known as the OData endpoint or the REST endpoint when it was released, the Organization Data Service offers limited capabilities to only create, retrieve, update, or delete table data) is an OData v2.0 endpoint introduced with Dynamics CRM 2011.
  • The Organization Data Service was deprecated with Dynamics 365 Customer Engagement v8.0 in favor of the Web API, an OData v4.0 service.
  • Organization Data Service is planned to remove on November 11, 2022. Any code that uses the Organization Data Service should be migrated to use the Web API before that time.
  • Its recommended to Use the Microsoft Dataverse Web API.

Action Required:

  1. Use the Solution Checker to detect any JavaScript web resource code. The rule web-avoid-crm2011-service-odata should detect use in client-side code.
  2. Check any other code, including PowerShell scripts, that send requests to this endpoint: /xrmservices/2011/organizationdata.svc.
  3. Check any Power BI reports or Excel Data sources that may be using this endpoint.

Refer this link for more details.

🙂

Categories: CRM Tags: ,