February 29, 2020

Exam MB-400: My Experience

This morning I finally got the result from an exam I did a while ago: the MB-400: Microsoft Power Apps + Dynamics 365 Developer.
I passed it (result here) but I learned two important lessons:
  • I will never do again a Beta exam
  • I need to prepare better the exams
The reasons I took this exam in Beta were essentially two: I got an early discount code (here a mention of it for the first 300 people) and it was the first technical exam about Dynamics 365 released in a long time.

The previous technical exam was MB2-701 Extending Microsoft Dynamics CRM 2013 (that I passed too by the way) and I was eager to prove myself that I still got it. My main skills regarding Dynamics 365 and the Power Platform are technical, so I felt that I needed to do this exam, as additional proof I didn't do yet the MB-200: Microsoft Power Platform + Dynamics 365 Core that is considered by many one of the exams that you need to take if you want to start this path.

If you use the discount code you have also a time limit (in my case was 12 December 2019) but due to previous commitments I scheduled the exam for 14 November, only two weeks after the announcement.
In that two weeks I tried to prepare the exam the best as I could, but remember to follow the official exam skills in addition to the suggested learning path because (for example) the Learning path suggests Extend Dynamics 365 portals but Portals is not an argument included in the exam skills, and the exam skills contain PCF (Power Apps Component Framework) and a learning path is not available yet.

When I booked the exam I thought: "if I don't pass the exam it's the same, I can do it again" but after I did the exam I instantly regret the decision, because the exam was hard for the preparation I had and you don't get the result right away when you do a Beta exam. Waiting for over 3 months and be in a limbo where you don't know if you passed or not an exam is something I don't want to experience again.

So my suggestion is to always go prepared for the exams, and if you plan to take the MB-400 I suggest also to read the posts by Joe Griffin in his website.

December 5, 2019

Unified Interface transition: Powered by Power Apps Portals

The latest news is that Microsoft is scheduling the transition to Unified Interface way before October 2020. If you are interested in this topic check this blog post by Magnetism: Scheduling Dynamics 365 Unified Interface Upgrade in the Transition Portal and this twitter thread by Jukka Niiranen.

After I heard the news I quickly checked one of the tenants I have access and with my surprise (beside the early date Microsoft scheduled) I noticed that the site https://runone.powerappsportals.com is built with Power Apps Portal.

Yes, the domain was an obvious clue, but as soon I saw the Profile Page I recognized it:


I work with Power Apps Portals (since it was called ADX Studio Portals) and I am happy to see Microsoft using it also for this kind of websites. If you believe in a product you should be the first to use it, right?

If you want to know more about Power Apps Portals, you can check the official site: https://powerapps.microsoft.com/en-us/portals/ and the blogs of three MVPs: Nick Doelman, Colin Vermander and Nicholas Hayduk.

What are you waiting for? Go to check the scheduled dates for your instances!

October 31, 2019

"Custom plug-ins should not catch exceptions"... that's new.

The title refers to an error message I got today in one of my plugins, the complete text is the following:

ISV code reduced the open transaction count. Custom plug-ins should not catch exceptions from OrganizationService calls and continue processing.

I googled the message and I found the explanation inside the following page: Troubleshoot plug-ins.
The reason is simple: inside my code I wrapped an IOrganizationService.Update inside a try catch block:
try
{
    Entity updateRecord = new Entity(recordRef.LogicalName, recordRef.Id);
    updateRecord[fieldName] = fieldValue;
    service.Update(updateRecord);
}
catch (Exception ex) {
    // ...
}
Why I did that? In my case the specific update may or may not fail (due to the status of the entity and the field that I need to update) but I needed to make sure the plugin containing the above code should never fail.
I don't have a specific workaround to resolve this situation because it really depends on the logic you have inside the plugin (in my case one of the options is to create an additional async plugin just to perform this update so it will not affect the main plugin).
The page mentions that this error has been added recently, so if in your existing plugins you have an IOrganizationService call wrapped inside a try catch block, the plugin is probably failing right now.

UPDATE: looks like that wrapping an IOrganizationService call was never possible, but the platform before returned a non meaningful error message (like "no active transaction found"), at least now we are notified with the exact reason. Thanks Tanguy Touzard and Jonas Rapp for the correction!

October 18, 2019

PCF Gallery - 5 months after

Today (18 October 2019) I added the 100th to PCF Gallery.

All the controls listed inside PCF Gallery can be downloaded, and the source code is available inside their GitHub repository or in the blog post linked inside the page. The majority of the controls is for Model-driven apps, some of them can be added also to Canvas apps and there are also a couple created specifically just for Canvas apps.

There is no doubt the PowerApps Component Framework is one of the most interesting capabilities landed recently inside the Power Platform world, at least for developers!

When I wrote the post announcing the launch of PCF Gallery, I optimistically wished that soon it would list dozen of controls. After few months, thanks to the contributions from more than 40 authors, PCF Gallery is a beautiful showcase of the possibilities offered by the PowerApps Component Framework.

A big thanks to the whole PCF Community!

July 19, 2019

New SDK released with support for new regions (France, US Gov DoD, China)

A week ago thanks to a question on Dynamics Community Forums (link) and to Daniel Cai that spotted the crm12 inside the url, I became aware that a new region for Dynamics 365/PowerApps (located in France) was introduced, however the SDK was not able to connect to this new region as it was not updated yet.

Yesterday the SDK Team released an update to several NuGet packages (link), from the changelog:
Added support for France and New US Geo's

Microsoft didn't update yet the official documentation page but you can check in the next days if you need the exact Discovery Url (especially for the new US region, for the France one you just need to use crm12)

Meanwhile I was testing the new Plugin Registration Tool, I noticed they also introduced a new region in China, strangely the changelog didn't mention this.

Hope it helps!

June 14, 2019

My first PCF Control

After launching PCF Gallery I finally created my first PCF control: Custom Url Control.

The idea behind this control is to display a custom url using record values as parameters.
In my screenshot I implemented a google search using the phone number, but the possibilities are infinite: you can implement a shipment tracking, a link to your reporting engine, open an sms gateway webpage, just one click away!

The control has several settings: It supports up to 3 fields to fetch their values, the url link, the text and some styling options
I didn't want to force the use of a specific placeholder so they are also customizable.
And now the setup example:
  1. First of all I added an additional Phone field (telephone1) to the form and I attached my control to it
  2. The placeholder is the string used inside Url Link and Url Text to replace the value from the Source Field
  3. As I want to display the name inside the Url Link I bounded Source Field 2 to Name (name) field and I used the default placeholder __VALUE2__
  4. For this example I didn't need a third parameter so I left Source Field 3 empty
  5. Inside the Url Link I inserted https://www.google.com/search?q=__VALUE__ in this way __VALUE__ will be replaced with telephone1 value
  6. Inside the Url Text I inserted Search __VALUE2__ Phone Number, in this way __VALUE2__ will be replaced with name value
  7. Url CSS has a default value, to make the links looks similar to Dynamics UI
  8. Inside Font Awesome Icon I inserted the classes required to show a Font Awesome Icon (version 5), I set the search icon, if for example you wanted the UPS one, you need to insert fab fa-ups
  9. Font Awesome Icon Style is to set the style property of the icon, in my case I wanted to change the color
I hope you like this control and find it useful.

May 20, 2019

PCF Gallery website launched!

If you are Dynamics 365 Developer (or I should say Power Platform Developer) you are probably aware of the trending topic of the last weeks: PCF.

What is PCF? PCF stands for PowerApps Component Framework, a new way to create custom controls for model-driven apps (more info at Microsoft Docs).

PowerApps Component Framework (also called in the past CCF Custom Control Framework) is an interesting concept to enhance the UX of our apps, it has been in private preview for a very long time and currently is in public preview.
Despite its preview state, many developers started to create controls and to avoid dispersion I decided to create a website to collect the amazing controls created by the Power Platform community, this website is PCF Gallery (https://pcf.gallery).

I created the site the other day so it's a bit empty right now, but I am sure soon it will list dozen of controls. If you created a control or you found a control and want it to be listed please contact me (by Twitter or email).
PCF Gallery has also an Ideas forum (thanks Nick Doelman for the suggestion) where people can submit their idea for new controls, hopefully developers can use them to build new controls for the community.
What are you waiting for? Click on the logo to get started!