Episode #04 Community license is for you

In episode 4 we talk about what is the community plan that is offered by Microsoft and how it is the perfect plan for you whether you are an end user, customer, developer, consultant or Architect for the power platform. Best place to try out new functionality. Found here https://powerapps.microsoft.com/en-us/communityplan/ anyone with an office 365 account can join and start benefiting. Note at the time of recording the option to delete a developer environment was not available but it is now 🙂 Enjoy!

 

 

 

 

Flows triggered from different environments when a backup is restored

Recently faced a situation where a production flow was being triggered if a record was added to the triggering entity in a lower environment and the flow had the current environment connector configured on it, strangest situation I’ve encountered.

A deeper investigation lead to a recognized bug by Microsoft on callbacksregistrations that are created at the backend when you turn a CDS trigger based flow on. All is good until you decide to restore the environments backup or copy the environment to another environment as those callbackregistrations to your flows do not get reset and are still pointing to the Flows of the environment you took the restore of, this causes the flows to trigger even if the environment is different. Unfortunately, there is no resolution yet and we have to wait till end of October to have this bug fix deployed to the platform, however below is a detailed work around on how to get rid of those bad call back registrations.

Resolution:
First identify the callbackregistration id’s on the entity your flow is being trigger off of. Todo so you will need to execute the below query on your effected environment(the environment you restored the backup to)

https://name.crm.dynamics.com/api/data/v9.0/callbackregistrations?$filter=entityname%20eq%20%27TypeEntitySchemaNameHere%27%20and%20message%20eq%201

You’ll replace your environment url, TypeEntitySchemaNameHere with your entity schema name and the 1 at the end represents the type of trigger so follow table below for the relevant type

– Create = 1,

– Delete = 2,

– Update = 3,

– CreateOrUpdate = 4,

– CreateOrDelete = 5,

– UpdateOrDelete = 6,

– CreateOrUpdateOrDelete = 7

Once we have our url created and excuted, you’ll recieve a json message in return look for all callbackregistrationid’s and delete them one by one following the process below.

“callbackregistrationid”:”d87bac31-f308-eb11-a813-000d3a988097″

Goto your restored environment and open up the developer console(F12 for chrome), and execute command below under console tab by replace the callbackregistration id

fetch(‘http://envname.crm.dynamics.com/api/data/v9.0/callbackregistrations(17asd7d2-40db-ea11-a813-000d3a579b99)’, {​​ method: ‘DELETE’}​​)

this will delete the callbackregistration with the original environment. Make sure you do this for all callbackid’s against that entity, then goto your flow and turn off the flow, edit the flow and save it again and turn it back on. After turning the flow on you will notice that a new callbackregistrationid is generated when you execute the first query to get all callbackregistrationid’s. This means that your trigger has now been registered against current CDS, now all you need to do is repeat this for all the flows you have in your environment that have a CDS trigger point, all the best!

The Science of Upgrading Dynamics 365 Power Platform Solutions

This is a final post in the solution deployment series and we will see how we can upgrade the solution that we created in my previous posts. If you would like to understand what are solutions and how to use them please visit my previous three posts where I talked about How to create a solution, how to create a solution patch and how to merge solution patches together.

For delivering new functionality for an existing unmanaged solution that you have released as a managed solution package we have the option of versioning which a customer can use to upgrade the existing managed solution. To create that upgrade package reference the previous post. In this case we have the solution 9.2.0.0 already imported into our managed box(production) and we are going to import our new release 9.3.0.0 managed solution.

Production currently has 9.2.0.0 (managed)

 

We will click on import and select the downloaded managed version 9.3.0.0

Once we click next, the wizard will recognize that we already have an older version in our production environment and the version we are importing is different

Once we click next, we will get the below options, lets discuss these in detail. The Solution Action decides what we would like the wizard to do with the previous version of the existing solution on our target environment, the correct answer depends on the end result you would like to achieve.  Upgrade(recommended) will merge your previous solution and patches and replace your previous solution with the new one entirely, what entire means is that if you had an option set in your previous solution that you removed a value from in your new version this option set will no longer have the old value once the upgrade is complete. Stage for Upgrade performs the same upgrade in the first step but in a staged manner, meaning first your solution is imported but the replacement part is not done until you go through the apply solution upgrade process. I personally always follow the stage for upgrade process in order to ensure complete import of a large release before I move on to the upgrade itself; important thing to note on here is newer power platform only components such as canvas apps and flows get replaced even if you Only stage for Upgrade.

Update(not recommended) also replaces your old solution with the new one but does not replace entirely, meaning in the scenario I mentioned above for the option set, the value will not be removed and you will see all new values as well as old values.

 

The second part of selection is deciding what to do with the unmanaged layer on the target environment of the objects that are included in your solution. Maintain customization will not try to delete your active layer and simply import your managed release, specially helpful if you are in the unfortunate position of having an unmanaged solution layer on your production environment and its too late to clean it up and go back to a fully managed solution stack. Overwrite customization tries to delete the unmanaged layer in your target environment for the included objects in your solutions wherever possible. If you have maintained a clean managed layer stack box I would recommend going with this option.

Once our import is complete, since we selected the stage for upgrade option we will see the screen below; with an option of applying the upgrade right from here. Clicking it will carry out the complete upgrade. You can also do that by going into your solutions and selecting the old version and clicking on Apply solution upgrade(see below)

If we don’t apply the upgrade from above window, your new version will sit in a staged position waiting to be upgraded and you will see both solution in the system as below:

From here we need to select the older version and then click on apply Solution Upgrade, which will upgrade your solution.

Happy solutioning!

How to assign power automate per flow plan to your flow

Since Microsoft came out with their new licensing around the Power platform breaking the power apps licenses and power automate licenses apart there has been a lot of questions in the community forums and generally on how are power automates getting licensed. Short answer to that question is there are now two licensing options available if someone would like to enjoy the power of power automate and power automate is not included in the license options for power apps.

  1. Power automate per user plan
  2. Power automate per Flow plan

 

The per user plan is quite self explanatory and the license is assigned to the user like the previous power apps plan 1 and plan 2 licenses, this has a lower limit than the expensive per flow plan but does allow that particular user to create unlimited number of flows for themselves. The power automate per Flow plan has a different process of assignment to the Flow. In order to assign the per flow plan to your flow. First you have to procure the license which comes in a bundle of 5( yes you have to buy minimum 5 flows costing $500/ month) and then you can buy an additional each for $100. Once the licenses are visible in your tenant. You will start to see the below Add on option in your Admin power platform portal under capacity.

 

Under Add-ons you will see all the flow licenses you purchased and will get the option to assign to one of your CDS environments

Select the environment you will be running your flows in, assign the number of flows and click on Save. Once done goto your flow in that environment and click on edit. The Per-flow option that is disable by default will become available.

With flow capacity assigned:

 

For more info on flow licensing. please visit https://docs.microsoft.com/en-us/power-platform/admin/powerapps-flow-licensing-faq

I also recommend you take the time and read the latest (As of July 2020) licensing guide, https://go.microsoft.com/fwlink/?linkid=2085130

 

 

 

Merging D365 Power Platform Solution Patches into a Major Version Update

If you would like to understand what are solutions and how to use them please visit my previous two posts where I talk about How to create a solution and how to create a solution patch. In this post we will see how we can merge the patches we created and create a Major version update of the solution for release.

 

To start off we will create another patch on top of the existing 9.1.0.0 base solution and the patch 9.1.1.0

To create another patch, select the base solution and click on Clone a Patch

This will create the second patch and versioning will stay in order

To create a major release we will follow what is called the cloning process. The good thing about following the patch approach and sticking to the recommended versioning is that our cloning will merge all patches together along with the base solution when we create a major version. In order to do so we will select the base solution, in this case 9.1.0.0 and click on Clone Solution

As we can this time the process recommends the next major version which is 9.2.0.0 instead of 9.1.3.0. When we click save the base solution and all patches will be merged automatically and we will end up with a single solution versioned as 9.2.0.0 this will be the solution we export in order to do a version upgrade at the managed box end (more on that in later posts)

 

To read more on patches please visit, https://docs.microsoft.com/en-us/dynamics365/customerengagement/on-premises/customize/use-segmented-solutions-patches-simplify-updates

 

Avoiding solution deployment mistakes on Power Platform | Session at DynamicsCon

For all those who follow my blog I would be giving a comprehensive session on solutions deployments and approaches at DynamicsCon coming this September 2020 on. If you have not gone in at voted yet, please do so at https://dynamicscon.com/sessions/ this is an amazing event for the community by the Dynamics Power Platform community leaders and experts. There are multiple categories and lots to learn from the industries best.

 

You’ll find my session under the Dynamics 365 Power Platform section, go out there and vote!

Creating a solution patch in D365 Power Platform, why would you do so?

Note: I’m a firm believer in releasing only managed solutions to testing and production environments and maintaining an unmanaged solution on the development box only, therefore this post is based on the MS best practice architecture of exporting managed solutions for distribution.

To understand solution patches think of them in the direct definition of what a patch is, something to mend or fix up a weak or broken point. For example a complete wall with a hole or a small missing piece in it would require a patch not a new wall. Solution patches are meant to fix up or complete a deployed solution, not to deploy new functionality; I repeat, they are not meant to deploy new additional functionality. This generic definition should be your rule of thumb when deciding whether to create a patch and release that or a new major version release.

On the other hand whether you are in a situation of actually needing to release a patch level fixes or working on a new sprint in your project to release for UAT after the first version of the solution has already been release, creating a patch is always a good idea to keep your new sprint functionality separate from the main solution until you decided to release the functionality, as that helps a great deal in identifying/reviewing the changes done before they are merged into a new version of the solution( more on major releases to come in future posts)

In order to create a patch for an existing solution in your development box. Select the base solution and click on Create patch

Clone a solution patch

 

You get the option to change version, ideally you should let the system recommended one stay as it is managed in order of creation if you create more than one patch

 

Once the patch is created you will see the base solution as well as the patch:

 

This patch is now ready to be exported as a managed solution independently and applied to target environment.

How to create a new solution in Dynamics CRM and Power Platform

Solution’s are used to transfer and release functionality in a packaged manner for other environments to be imported to. This approach applies to the Power Platform Make portal and the Dynamics customization(old interface) for creating solutions. To make it easier I will mention navigation for both.

In order to create a solution in the power platform, navigate to https://make.powerapps.com/ and select the correct environment on the top right.

This will open up your environments context. After this click on the solution module on the left navigation pane and then New Solution.

Give it the solution name you’d like and either select or create a new Publisher(this will be the entity that is releasing the solution, for e.g partner name if an isv). The version can be changed manually, Microsoft recommends start from 9 as that’s the current CRM version we are on; the remaining parts can be decided by you .0.0.0.

 

Once you click create an unmanaged solution will be created in your environment. The shortest way to explain an unmanaged solution is through the new MS info about it so as per Microsoft documentation “An unmanaged solution is one that is still under development or isn’t intended to be distributed. When the unmanaged solution is complete and you want to distribute it, export it and package it as a managed solution.”

 

 

From here you can add all your existing components like power automates, canvas apps etc to your solution and create new ones inside the solution as well to package.

 

In order to create a solution from the old interface, follow steps below:

Goto your CDS/Dynamics environment url and click on advance settings:

From here goto settings>solutions

 

Click on new solution and same fields would be inserted as we did above when creating solution from make power apps portal