The world hates change, yet it is the only thing that has brought progress. -Charles Kettering
Microsoft Dynamics 365 and the Power Platform h ave two major releases a year in April and October and it’s your responsibility to be ready and to make sure your solutions are compatible.
Why should I care?
Since Microsoft moved the one version, Microsoft updates your production instance in April and you cannot stop it. You need to make sure your solutions works with the new version of Dynamics 365.
The responsibility for testing the new release doesn’t break your solutions is the owner of the instance/Dynamics 365 environment. If in April your production instance is upgraded and it breaks your solution, the blame is all yours.
The two features which looked interesting is Power App Portals can call the CDS Web API directly. This will enable Power App Portals to be more powerful and overcomes one of the major frustrations.
Canvas App can create a PDF from the UI, a useful way of a quick report of the form.
On Monday the 3rd February you can enable the new release on a sandbox instance and start playing with the new features and testing your solution.
If you have questions about the new release, read the FAQ section
Enable the new features in a sandbox instance and test your solutions. You will need to do this for both release waves each year (April and October) so invest in some automated tests to speed up the process of testing your solution.
You can enable the new release in your development and test environments and test by using them. You cannot avoid the update so the sooner you get used to it and sooner you find problems, the sooner you can fix them.
Anything else I should know?
JukkanNiiranendiscusses how Microsoft will enforce licensing, he noticed a new solution called Licence Enforcement has appeared. One of the key drivers for this will be the enforcement of team licences, which Microsoft realised could be used by many users and would cost them money.
Know what is being depreciated because when the new release is installed some old functionality might stop working. It’s important you stop using depreciated functionality and get into good habits now.
Do you need to test the new release wave, if it’s focused on new features and you don’t plan to enable those new features.
When code/customisations change, they can break functionality, e.g. you create a bug by fixing a bug (or adding new functionality in this case). When ever code is changed, things can break.
Microsoft might change the way functionality works, change the way it works and these could affect your solution. I have experienced bugs with the minor patches, so things could break with a major release.
It’s better to test and find problems in a sandbox environment than finding problems in production. Production problems send people into a panic and need to be fixed quickly.
Save yourself the stress of a production problem and check the new release wave in a sandbox before April.
“You know you’re priced right when your customers complain—but buy anyway.”
Dynamics portals are changing name to Power Apps portals and the pricing is changing which could cause a significant rise for some portal users. This Dynamics portals are changed their name to Power Apps Portals, and the pricing is changing, which could cause a significant rise for some portal users. This post helps readers understand the price changes. It’s important to discuss with current customers the coming increase in costs so they have time to act before it’s implement. The new pricing comes into effect on the 1st October 2020 for existing Portal customers.
The Power App Portal price increase was announced in Inspire 2019 and active for new portals from October 2019, read Microsoft Pricing FAQ portal section for more details from Microsoft
The Power Apps Portals pricing is used for new portal customers but for existing customers need to assess how the pricing change will affect their monthly costs.
The goal of this blog is to understand the new Portal pricing and how it will affect existing customers.
What are Dynamic Portals?
Power App Portals is the new name for Dynamics portal. A portal is a way to extend your Dynamics environment or Power Platform environment with people outside your organisation (e.g. not Dynamics or Power Apps users). The portal functionality is built on the old ADX studio portal functionality (brought by Microsoft and renamed Dynamics portals).
Portals are hosted in a separate Web Server and linked to your Dynamics instance/Common Data service instance, the allows you to have a portal where your customers can raise cases which get added into Dynamics and then worked on but without your customers need full Dynamics licences.
Dynamics portals are a way to create a portal which integrates with Dynamics 365 with Dynamics developer’s only need to learn liquid templates (a mixture of Dynamics and HTML). You need not worry about hosting the Web Server or capacity of the portal. These posts describe Dynamics portals
Power Portals is expanding beyond Dynamics 365 and enabling the Power Platform and the data source is Common Data Service (CDS). The future is built around smaller solutions and based on data in CDS and the Power Portals is another step towards building an infrastructure to support this and move away from Dynamics based.
What is the current pricing
You used to get a portal with no additional cost when Dynamics 365 customers had 10 or more Enterprise licences
Additional Portals could be purchased at £377 per month.
I say new pricing but it’s only new for existing customers Microsoft is moving to Azure like consumption-based model and you no longer need to purchase a portal. Like the change in not changing for instances and moving to data model.
Portals don’t need you to purchase a portal, but they will charge you for number of logins and views.Here are the details of the new licencing from Power App licencing FAQ page
External user (authenticated)
Power Apps portals login capacity add-on
A login provides the authenticated user with access to a single portal for up to 24 hours
Power Apps portals login capacity add-on Tier 2
Power Apps portals login capacity add-on Tier 2
External user (anonymous)
Per page view
Power Apps portals page view capacity add-on
100,000 page views
Dynamics 365 (various)
Custom portal use rights are aligned with custom app use rights
Power Apps per app plan
Power Apps per user plan
Microsoft distinguishes between external user (authenticated) and External user (unauthenticated). My understanding is customers who authenticate using a B2C AD authentication will login.
External users who don’t authenticate will view the page and the users who authenticate will be counted as a login.
The difference here is if you have a FAQ or documentation on a portal for people to view are external unauthenticated. Users who login and raise a case are authenticated.
Views are cheap $100 for 100000 views, whereas logins are more costly.
A login is counted every 24 hours, so a user can login multiple times in 24 hours and it will count as one billable login, Microsoft cheerily says we should look at it as a day pass :-).
A user can also access multiple portals for no extra cost if it links them to the same Dynamics or CDS instance. Microsoft explains the differences on the licencing FAQ page Power App licencing FAQ page
What is the difference between Power Apps Portals and Dynamics 365 Portals in terms of licensing?**
Dynamics 365 Portals
New Power Apps Portals
Provisioning a portal environment
Purchase Dynamics 365 Additional Portal SKU at $500 per month
Provision a portal—no need to purchase portal addons to provision a portal
Qualifying base offers
Dynamics 365 licenses only
Customers can add on portal external login or page view capacity to Dynamics 365, Power Apps and Power Automate licenses
Internal use rights
Dynamics 365 enterprise licenses, Dynamics 365 team member license.
Internal users can now access portals with a Power Apps per-app/per-user license. For a Dynamics license it is same as custom Power Apps use rights.
Per portal environment Per page view
Per log in Per page view
Entitlement for Dynamics 365 customers
1 portal environment for the first 10 full Dynamics 365 USLs
Not applicable―Power Apps Portals environments can be provisioned
The good news is like Dynamics environments, we no longer pay for creating environments. This makes it easier to deliver enterprise projects and create separate environments for dev, testing, QA, training, UAT, pre-production and production.
Life Dynamics environments you aren’t charged for instances but charge for the data you use. The benefit of this is it allow you to create other environments for development and testing, particularly useful with Microsoft have two major releases (April and October) which you must take. This means you must test your customisations with the new release before your production instance is upgraded.
Portals no longer require you to purchase portal environments, but you will pay for logins and views. This will make non-production environments cheaper because they will have low volume, it raises the question what happens when you want to load test a portal environment!
The portals look a good deal for low usage customers because the removal of a portal provision fee. The pricing that we know of at the moment is this
100 logins at $200 = $2 per login
1000 logins at $1000 = $1 per login
5000 logins at $3500 = $0.70 per login
100 logins at £153 = £1.53 per login
1000 logins at £765 = £0.75 per login
5000 logins at £2677 = £0.53 per login
For over 5000 logins or more per month, speak to Microsoft because I think you would get some extra discount based on size.
You can see small users who get 200 logins per month will find it the same or cheaper but once you move above 300, then the new portal pricing will be more expensive (depending on how many portal environments you have)
if we use the 5000 logins to estimate the price of a heavier portal use we get
10000 logins = £5354
20000 logins = £10708
Customers with busy portals will face a bigger monthly, although I would suspect they could get a better deal by negotiating with Microsoft.
Why have Microsoft changed the pricing?
Since Microsoft moved Dynamics 365 to Azure they know the cost of supplying services and can price accordingly. The previous model was great for customers who had high portals traffic because they paid a flat fee.
Portals is a powerful and popular functionality, with the previous low cost licencing it was attractive to most customers. The competitive portal pricing would have helped Dynamics or the Power Platform win projects. The popularity of portals has grown steadily, this article published on July 2019, it highlighted the growth in portals
13,000 monthly active portals, up 33 percent in the last six months
8.03 million monthly active users in the last month, up 180 percent in the last six months
200 million page views per month – excluding bot traffic – which is 106 percent growth
52 million monthly transactions, up 110 percent–this includes all CDS operations as well as log in and log out
I would expect these numbers to have continued to grow at the rate above. Take into account increased portals would result from increased Dynamics 365 and Power Platform licencing.
The change to a consumption model is an increase in costs for heavy users, but you will only pay more if you have more portal users, so Microsoft will say it’s fair.
No one complains with Azure consumption based pricing because it’s a fair price, the portals pricing seems expensive compared to the previous price and this is the main complaint with the new pricing.
Is the pricing fair?
Is this price increase fair? If you have more portal users, you pay more and fewer portals uses will cost less. It’s cheaper than its competitors but it could be a significant increase for heavy users.
Microsoft is in a difficult position, their initial portal pricing seems discounted to win users and now this big increase seems unfair, particularly to existing customers where their portal costs can jump significantly. It would have been a smoother increase if Microsoft ramped their pricing increase over a 2 or 3 years.
To understand the pricing lets consider what you get for your money. A portal framework to create a portal linked with Common Data Service or Microsoft Dynamics 365. A portal service, with a hosted website where Microsoft deal with scaling, capacity, disaster recovery.
If you consider the cost to create and host your own website. Additional development costs to integrate the website with Dynamics 365 or Power Platform, then the cost per login doesn’t seem overpriced.
Comparing the price of Salesforce portals, you can see (I think) they charge $2 per login and Microsoft are charging half that price. I admit I know little about Salesforce portals and don’t know how the functionality compares, I just wanted to get a rough price.
Microsoft is moving to consumption based pricing. Why this pricing increase has caused complaints is, it’s potentially an increase for existing portal users. The goal of this post is to understand the pricing increase and encourage Dynamics professionals/partners to discuss the increase with their existing customers and help prepare and plan the increase.
The potential increase in portal pricing will anger customers who chose Dynamics 365 because of the cheap portal functionality. Many businesses will have built a portal to be a key part of their business, the increase in portals might ruin their business model and these customers can feel aggrieved because they have invested a lot of money in Dynamics 365.
Looking at competitors prices or alternates to Power Portals then it feels Power Portals is still the best value for money. There is the possibility that this could cause a better priced competitor to rise but I’m not sure they could do this and charge lower than Microsoft.
There is a possibility people can take the portal source code. A version Microsoft Dynamics 365 Portals Source Code Available for On-Premise Customers read this for more details.
A good alternative would be an open source portal with similar functionality to Power Portals but this would need a community contribution.
The other painful part of the new portal pricing is the now customers have estimate and purchase the number of logins at the start of each month. The logins do not roll over to the next month. This will lead to customer buying more logins than they need and losing those extra logins. It will involve wasted time estimating and purchasing views each month. It’s extra hassle with no benefit.
Quality is never an accident. It is always the result of intelligent effort. John Ruskin
The solution checker is a free tool to help developers verify their code doesn’t contain many bad practices and code smells. I recommend developers incorporate into your development life cycle to help you keep your code quality high. This post will explain what is, why use it and some common errors.
The static analysis will find common problems in your code and suggest you fix them. This is like code analysers such as FX Cop, Resharper or Code analysis rule set reference.
I like static analysis because it was a code review on my code before I submitted it for a review. You can set the rules to automatically run and it helps you create higher quality code.
The other benefit was it would highlight problems and suggest best practices that I hadn’t heard of, I would read up about the rule and suggestion to see if I wanted to use it.
You can run the solution checker on a solution and it will check all your code, identify issues and give documents on how to solve it.
How do you use it?
You need to enable the solution checker and then you can trigger it manually in the Power Apps maker portal. Go to solutions, select the solution and then you can right click or click the run solution checker button on the top.
The solution checker could take a few minutes to run, depending on how big your solution is.
You kick off the solution checker and then it creates a report that you can either view online or download as an Excel file.
There is another way to use it my using the XRM Toolbox plugin by Jonas Rapp, you can find more information and full tutorial – Power Apps Checker for XrmToolBox. It has the bonus of applying different rule sets
Why would you use it?
You should have the mindset of all code and customisation don’t work until they are proven to work, until you have tested them. Assume the quality of your code is low until you prove it to be high by testing it with static analysis and/or a code review.
The best moment to sovle a bug is when you are writing the code and testing it yourself. At this moment you know the most about the solution and will be able to fix it quickly and make changes before other code is dependent on it.
When writing code it’s better to spend more time doing it right and less time fixing it later #HoskCodeWisdom
The initial goal of an IT project is to turn the requirements into customisations and a solution the business can use to do their job. This is the short-term goal, the long-term goal is to create a solution easy to maintain and the most effective way to do that is to create high quality, well-structured customisations.
The creation of a customisation is a quick part, the maintenance and extension of a customisation last for years. If you don’t create quality code, the customisations become complex and maintaining, extending and debugging will take longer.
The solution checker helps you find your bad code and suggest how to fix it. A good tool to improve the quality of your coding and raise the standard of your code.
Microsoft offer free code reviews for projects which quality for Fast Track assistance (250 seat plus), it’s a good idea to run the solution checker to proactively fix the warning that would appear when Microsoft do a code review.
The solution checker doesn’t run the same rules as a Microsoft code review, but the solution checker is a minimum check and a subset. More information about FastTrack for CE projects can be found – FastTrack customer success service and with big projects it will be there, so you should learn to align with it.
Some common warnings and explanations
The section below will cover some common warnings I have found with the solution checker. I will explain what they mean and what you should do to fix those problems. The solution checker gives some text and links but sometimes these are not obvious and take some interpretation.
Event registration not enabled
An event registration entry was detected on the form form name on the entity account for the event Form.onload that is disabled. Consider enabling or removing the function name
This error occurs because you have an event on OnLoad or OnSave that is disabled. You should delete the event because it’s not running. It’s bad practice to leave customisations disabled or inactive because they confuse people and can easily be enabled accidently or on purpose. A disabled or deactivated customisation can be enabled and then you have a new bug which is very difficult to identify.
Use strict equality operators
For most comparisons the strict equality comparison algorithm is the right choice as it will return the expected results. The strict operators handle null and undefined values as expected.
This error means we should not use == but use the strict ===
Do not ship debug helper code in production source
console.error(“Error: “ + message)
‘Xrm.Page’ references or accesses a deprecated API in the client context object model. Replace this call with the following client context API: ‘ExecutionContext.getFormContext’
Xrm.Page is depreciated and will not work in October 2020 release, DO NOT WRITE THIS CODE, get into the habit now. There is no excuse because it’s been well publicised and there are lots of examples of using the new syntax.
This highlights a depreciated Xrm call. Xrm.Utility.alertDialog(this.statusText)’ uses a deprecated API in the client object model. You should Replace this call with the following client object model API: ‘Xrm.Navigation.openAlertDialog’
Replace Xrm.Utility.alertDialog with Xrm.Navigation.openAlertDialog
This warning will be thrown for Plug-in or workflow activites and its about selecting all columns not specifict columns
Avoid selecting all columns via Common Data Service query APIs.
Evaluate the use of AllColumns in ColumnSet constructor call with ‘true’ argument.
Don’t select all columns in your queries, select only the fields you need. It will make your code faster and easier to understand.
var requestXhr = new XMLHttpRequest(); // Explicitly setting the async parameter to false or supplying a variable with a value of false will force this as a synchronous
You can have a query which does an OData query to retrieve data from another entity but best practice is to set this as Async, the warning comes when you this query is synchronous and slows the form load.
The solution checker is minimum standards you should aim for, you should be aiming higher. The bigger the project the more important it is to keep the quality high. Enterprise projects create a lot of customisations and code, so you want to put in steps to ensure what is created is quality, otherwise you will have a huge mess on your hands quickly. There are lots of problems on an enterprise project and reducing your problems by having quality code will help you focus on them.
Embrace DevOps and automate your builds and releases. This speeds up the feedback loop, reduces manual mistakes and takes the boredom out of development.
Unit test your code will shorten the feedback loop, help the developers write better code and have reusable tests you can run to see has broken the build. It helps find bugs now and when you change the code.
Create standards and best practices and make people stick to these. The best way is to run static code analysers and have code reviews. Code reviews are a great motivator for people to write higher quality code (because they know their code will be reviewed) and a good way to teach developers to write good code by having someone explain changes.
Make quality and not speed your priority. Taking shortcuts and doing things fast doesn’t save you time in the long term, all it does it kick the problems down the road and they hit you later when time is more limited and the long-term effects of poor code is to slow down the project and increase the difficulty of maintaining the code. In the same way you don’t want a builder to take short cuts building your house, you don’t want developers to take shortcuts creating code and customisations on a project.
Start today to create better quality customisations and be a great software engineer because no one ever got into trouble for creating high quality code.