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: ,

Power Apps portals | Query data using portals Web API (Public preview)

November 12, 2021 Leave a comment

Portals Web API:

  • The Portals Web API enables building a richer user experience inside Power Apps portals pages.
  • We can use the Web API to perform create, update, and delete operations across all Dataverse tables from the portal pages.
  • For example, you can create a new account, update a contact, or change the table permissions for a product by using the portals Web API instead of the Portal Management app.

Query data using portals Web API:

Web API operations in portals so far were limited to creating, updating, deleting, associating and disassociating tables. With this public preview, Portals will have the capability to retrieve data using GET requests through portals Web API.

Preview capabilities:

The feature provides the following capabilities during this public preview:

  • Query records
  • Apply system query options
  • Request specific properties
  • Filter results
  • Order results
  • Aggregate and grouping results
  • Retrieve a count of rows
  • Column comparison
  • Retrieve related table records with a query

Refer the Docs link for documentation.

🙂

Categories: Portals Tags: ,

Power Apps | Canvas App | StartScreen property

November 8, 2021 Leave a comment

In the latest Canvas App updates, following key announcement has been made on App’s ‘OnStart’ property.

  • Using the Navigate function in the OnStart property has been retired. (Refer below screen as App throws warning if you have Navigate function on OnStart)
  • Existing apps will continue to work. For a limited time, you can still enable it in the app settings (available under Retired).
  • However, using Navigate in this manner can lead to app load delays.
  • Use the new StartScreen property instead, to calculate the first screen displayed.

StartScreen:

  • Following is an example, to Navigate to ‘Screen2’ based on a Condition.
    • If(User().Email=”RajeevPentyala@expnov21.onmicrosoft.com”,Screen2,Screen1)
    • If you notice, no ‘Navigate’ function is used in above example.
  • If StartScreen returns an error, the first screen in the Studio Tree view will be shown as if StartScreen hadn’t been set.
  • Global variables and collections, including those created in OnStart, are not available in StartScreen.

Refer Docs for more info.

🙂