Understanding Power Apps Portals pricing and how it differs from Dynamics Portals

“You know you’re priced right when your customers complain—but buy anyway.”

John Harrison

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

This post describes the new Power App 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.

New pricing

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

User typeModelSKU namesUnit capacityPrice/monthChannelComments
External user (authenticated)Per loginPower Apps portals login capacity add-on100 logins$200AllA login provides the authenticated user with access to a single portal for up to 24 hours
Power Apps portals login capacity add-on Tier 21000 logins$1000All
Power Apps portals login capacity add-on Tier 25000 logins$3500CSP only
External user (anonymous)Per page viewPower Apps portals page view capacity add-on100,000 page views$100All
Internal userVia licenseDynamics 365 (various)n/an/an/aCustom 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?**

ParameterDynamics 365 PortalsNew Power Apps Portals
Provisioning a portal environmentPurchase Dynamics 365 Additional Portal SKU at $500 per monthProvision a portal—no need to purchase portal addons to provision a portal
Qualifying base offersDynamics 365 licenses onlyCustomers can add on portal external login or page view capacity to Dynamics 365, Power Apps and Power Automate licenses
Internal use rightsDynamics 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.
MonetizationPer portal environment Per page viewPer log in Per page view
Entitlement for Dynamics 365 customers1 portal environment for the first 10 full Dynamics 365 USLsNot applicable―Power Apps Portals environments can be provisioned

Understanding costs

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

UK prices

  • 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.

you can download here

There is an open source portal project – xRM-Portals-Community-Edition

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.

What the solution checker does and why you should use it

lake and trees

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.

How does the solution checker work?

You can find out what the solution checker is and instructions on how to run in the post Use solution checker to validate your model-driven apps in Power Apps
The solution checker runs static analysis on your
  • Plugins – C#
  • Custom Workflows – C#
  • Web resources – JavaScript and HTML

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.

Go through the warnings and fix the problems.

There is a PowerShell module which would allow you to automatically run the solution checker in your DevOps build, this enables you to make sure your code is clean.  Read Get started using the Microsoft  Power App checker PowerShell

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 ===

The reason is JavaScript lets you compare different variable types but this can have unexpected results, so by using the strict ===  it compares the same type and won’t have unexpected results

this gets a warning

entity.field == “Line1”

this is good

entity.field === “Line1”

Learn more here

Use strict mode when possible

Strict mode is a way to introduce better error-checking into your code. Code should run in strict mode wherever possible. This is a JavaScript warning.

Add use strict to the JavaScript file, this link explains it more detail

According to this article it Strict mode helps :

  • It catches some common coding bloopers, throwing exceptions.
  • It prevents, or throws errors, when relatively “unsafe” actions are taken (such as gaining access to the global object).
  • It disables features that are confusing or poorly thought out.

Should you use single or double quotes e.g.

‘use strict’;


“use strict”;

In JavaScript, it doesn’t matter if you use single or double quotes, here for more details

To invoke use strict for the whole file, place it before any other JavaScript statements.  It’s possible to apply use strict for specific functions.

Read more – web-use-strict-mode

Do not ship debug helper code in production source

Remove debugger and console statements and it’s lazy and don’t do it, they are found in JavaScript files

Remove these

  • debugger
  • console.error(“Error: “ + message)
  • console.log(“field updated”)

‘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.


new Microsoft.Xrm.Sdk.Query.ColumnSet(1)

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.

Async JavaScript

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

call.requestXhr.open(‘GET’, ‘/test/test.txt’, false);req.open(“GET”, globalContext.getClientUrl() + “/api/data/v9.1/opportunities?$select=status&$filter=opportunityid eq” + “ “ + OpportunityID, false)

Read an explanation of this error Interact with HTTP and HTTPS resources asynchronously

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.

Create quality

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.

Other suggestions

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.

Use TypeScript instead of JavaScript.  I like TypeScript because it’s strongly typed and more like C# and this means you create better quality and more standard code.  JavaScript is a powerful scripting language but it makes it easy to write poor quality code which is hard to maintain.

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.

What I learnt in my last role

Acknowledging your mistakes, allows you to learn from them #HoskWisdom

After 3 and half great years in my last role I have moved for a new challenge and I’m excited about joining PowerObjects.  I met some great people and leave better person with more experience than when I joined.

Looking back over the last 3 and half years, it’s been a great journey and team effort.  The key to it was hiring talented people with potential and let them do their jobs (e.g. don’t micromanage them).  The culture of the team is important because you want the team to collaborate and share information, experiences, mistakes and solutions.

When I joined there were a handful of people in the Dynamics team and when I left there are 10 times that amount.  Few people knew there was Dynamics team and now the team has a blog and social media presence.  It is one of the biggest Dynamics team I worked on until I started at PowerObjects 🙂

Below are some highlights I contributed to, as most things in life it was a team effort that made everything work.


Enterprise projects means needs software engineers not developers because there is more to development than just writing code.  Having lots of developers working on a single Dynamics project is tricky, you need high standards and create quality customisations because you create lots.

With Enterprise projects the focus is doing things right, not doing things quickly.  DevOps shortens the feedback loop, allowing the team to find problems quickly with small code set.

DevOps automates boring tasks (reducing errors), automate quality checks and best practices.  The result is better collaboration on the project, higher quality and finding problems quickly.

I didn’t contribute to DevOps because I was a Scrum master/Solution architect and not directly creating customisations.  I helped with discussions, encouragement, making sure the software engineers understood it and used it.

Most of the DevOps changes were 2 years ago, DevOps didn’t seem as standard as it is today

The team could monitor Microsoft adding changes in the xml files, we noticed this because it sometimes broke the build, read more here Problems with Microsoft Dynamics 365 patches

DevOps is becoming more common in Dynamics projects, Microsoft created the solution checker and the PowerApps BuildTools.

It’s good to see Dynamics developers using the best practices from software engineering and increasing the quality of our processes and solutions.


The strength of a team is the people and the culture they work in.  I learnt not to lower my standards in hiring because a poor hire can be disruptive and slow the productivity of your good team members.

Only hire strong candidates, if you are not sure, don’t.

I did lots of interviews and it helped me improve and know what I’m looking for, below are numbers of phone/face-to-face interviews

  • 35 Interviews 2019
  • 28 interviews in 2018
  • 47 interviews in 2017
  • 27 interviews in 2016

I helped create digital interviews for 3 different roles and watched at least 60 digital interviews.  I attended 4 assessment days helping assess graduates/DA’s.

Recruitment was a priority for me because the key to building a good team is getting people with good character and right attitude.  This makes it easier for leadership to create the right culture.

Consultancy and delivering large projects is all about people.  When you have a team of capable people with the right attitude, you feel you can do what’s needed to make it successful. The goal is to have multiple people contributing to the team and many leaders.

The things I looked for in candidates
  • Passion – Be passionate in Dynamics, Power Platform and creating solutions, otherwise you will be average
  • Team player – IT Projects are a team sport and you must work well in a team
  • Drive – People who want to improve and progress
  • Curious – Curious learn how things work results in deeper knowledge and enables the creation of flexible solutions to changing requirements
  • Potential – Hire for what they will become, not just what they are now

Technical knowledge is a prerequisite, it’s stops someone from being hired but its not a reason to hire.  A talented person can learn technical skills but someone with good technical knowledge will find it very difficult to change their character.

An example is I would hire a good Cloud native/C# developer and teach them Dynamics if they had many of the traits above.

People with good character and mindset take responsibility and get the work done, they help the team and improve others.  These people deliver projects and make the team stronger by creating best practices, accelerators.


I onboarded most the people who joined the Dynamics team; I felt it was important for people to start a new role well, give them the information they need and set expectations.

I improved the process but onboarding is about people, welcoming and introducing to them to as many of the new team as possible.  This is a challenge with distributed teams because people are on site and not available to meet people.

Team spirit and sharing knowledge

Teams should work as a hive mind with collective knowledge.  Dynamics, Power Platform and Azure is too big for any one person to understand all parts of it.  You want the team to learn from individual mistakes, solutions/limitations and successes.  Avoid everyone making the same mistakes individually on each project.

When you learn as a team and everybody learns faster.

Theoretical knowledge is useful but unproven, practical knowledge is invaluable because it’s tried and tested.  Learning when and when not to use a customisation or solution can save you weeks of effort/expense/time.

If everyone shares experiences, then the team can learn as whole without each individual needing to make mistakes.

I arranged a Monthly meeting where we shared solutions, showed new functionality, updated the team on projects, bids, certifications, blogs etc.  This was successful because everyone took their turn to present. If we all do a little, then no one individual needs to do a lot.

The challenge of distributed teams is project teams not feeling part of a bigger team.  It’s important to remind everyone they are part of a larger team.  It’s expensive to meet in person but a worthwhile investment.

It’s hard to work as a team and help each other if you have never seen each other.  Delivering IT projects are a team game and the better the relationships between people the more effective they will be.

The better you know other team members, the more fun you have at work.

Team profile

I raised the profile of the team, help the Dynamics community by sharing the approaches, best practices, problems solved, technical solutions and experiences of the team.  This encourages people to join if they see what we are doing and how we we do it.

I created the Medium publication and hassled people to contribute posts.  The start was mostly me writing posts and persuading others to help.  In the first 8 months we write 30 posts and momentum starting to grow.

The blog now has over 100 posts and 370+ followers, with many people contributing.

Other ways I helped promote the team
  • Attended Extreme 365 Europe for the last 3 years
  • I presented at CRMUG in Birmingham
  • I attended a Power Platform Hackathon this year

I raise the team profile using social media to share blog posts, job roles, celebrating new joiners, certifications and other achievements of the team.  The team is no longer a secret.


My goal was to create an atmosphere and culture where everyone is trying to improve the team, other people and themselves.

I encouraged individuals to share their knowledge.  When you explain something via a blog or presentation, it forces you to understand it, then you can describe how it works and the key points (not all the points).

One of my favourite sentences was – “That would make a great blog post”.

I improved over the last three years.  My experience in delivering large projects and leadership isn’t something you can prepare for, jump in the water and learn to swim.

Reading, doing and reflecting were the keys to improving.  I tried to work harder but you reach a limit where you can’t work any harder because there are only 24 hours in a day.  I had to learn to work smarter, delegate more and think how I could motivate others to contribute.

When leading a team you must have priorities and a plan, you want to act strategically or you can react to situations and not progressing.


I am a big believer in Dynamics professionals getting certified because it expands their knowledge of the out of the box functionality.  If you specialise in delivering Dynamics projects, then you should be an expert in Dynamics 365 and the out of the box functionality.

You need to know the out of the box functionality is so you can align the requirements to fit out of the box functionality.

Read more here – What are the benefits of CRM certifications


I have had a lot of fun over the last 3 years and worked with some great people and hired people who will progress well in the careers.

Delivering large IT projects is a tough and challenging.  It’s important to inject fun into the proceedings and create a good team spirit.  Happy workers work harder and have more fun.  Enjoyment at work comes from interacting with people, laughing and creating solutions that help people.

I have had lots of enjoyable meals and nights down the pub with the team, this improved relationships and made work enjoyable.

It’s the role of the senior people on the project to make sure you create the moments where the team can be together without thinking about work.

Based on my leaving present in the picture, maybe I didn’t do a good as job as I thought 🙂

Why you need a great team to deliver an IT project

“None of us is as smart as all of us.” –Ken Blanchard


We are judged on our individual contribution but most of the time we are contributing in a team, working on a shared goal such as delivering a project.  To make your work life more enjoyable and more successful its worth helping recruit the best people to the team and improve others.

IT Projects are a team game, involving developers, testers, BA’s, business experts (customers), project managers and other roles.  Individually we can go fast but if you  to create something substantial, you need a team.  Teams bring scale and momentum but are the source of problems, most projects fail because of people not technology.

Get good people on your team

Don’t accept poor performance in a team, don’t accept average people, work with the best people you can.  The speed of a team is dictated by it’s slowest performing member, if you put B players on your team then it causes bottlenecks and slows the team.   Average team members have low standards, they don’t take responsibility  and don’t work hard.

Average team members slow down better team members and can frustrate them enough for them to leave the project or the company, life is too short to work with people who don’t care.  Its frustrating to team members who work hard and have to compensate for those who aren’t.

Average members set the benchmark of satisfactory performance.  Your star performers see average performance is acceptable and this leads to everyone coming down to that level.  The minimum requirement for a team member is they work hard, improve and learn from their mistakes.

People who are working hard and improving get better, these people rise to the level of their talented team members.  The difference between average and great is attitude.

I was a scrum master of a team and one developer was not doing a good job.  The developer wasn’t working hard; they didn’t understand the business requirements and would frequently skip steps in the development process.  The developer didn’t integrate with the team or take ownership of tasks.

The developers code often had bugs and would take two or three attempts to fix a bug.   The developer asked other developers for help, slowing them down.   It was frustrating for other team members because the developer hadn’t tried to look up the answer.

This slowed the team down and caused the team and the customer to become frustrated with missed deadlines.  I hoped the developer would get better, but they didn’t.  I discussed the problems and highlight the effect it was having on the team, we looked at bug statistics and missed deadlines.  The effects of having a B player was disruptive, it slowed the team down and frustrated everyone.

Problems don’t resolve themselves, particularly if that problem is a person

Talented people like working with talented people because they teach each other and add value by viewing problems from different perspectives, bringing different solutions.  Talented people work together with ideas, questions, feedback, raising problems and creating solutions which are better than they would create as individuals.

Steve Jobs highlights the importance of A getting the best software engineers.  

Steve Jobs on Average vs Best Software Engineers
“If you go to New York City and get an average taxi cab driver versus the best taxi cab driver, you’ll probably get to your destination with the best taxi driver 30% faster. And an automobile; What’s the difference between the average car and the best? Maybe 20% ?

Now, in software, and it used to be the case in hardware, the difference between the average software developer and the best is 50:1; Maybe even 100:1.

Very few things in life are like this, but what I was lucky enough to spend my life doing, which is software, is like this. So I’ve built a lot of my success on finding these truly gifted people, and not settling for ‘B’ and ‘C’ players, but really going for the ‘A’ players. And I found something… I found that when you get enough ‘A’ players together; when you go through the incredible work to find these ‘A’ players, they really like working with each other.

Because most have never had the chance to do that before. And they dont work with ‘B’ and ‘C’ players, so its self policing. They only want to hire ‘A’ players. So you build these pockets of ‘A’ players and it just propagates.”

What does good look like

Being a team player is vital, to create something substantial you have to work as a team.  Team members need to put the team first, value the other team members and communicate.

When people hear the word communication they think it’s about talking but that is only half of it.  Communication is listening, clarifying, acknowledging and talking.  Team members need to listen, value each member because you build on the  ideas of each team member.

A team solution is like building a tower, each person puts in a brick and each brick builds on top of ones before.  If you don’t listen you are build separate towers and you have to decide which towers to use but it won’t be as big or as strong as a team tower.

Team members need to trust each other because individuals on a team need to

  • Speak up
  • Raise problems before they become problems
  • Give feedback on ideas, solutions, performance
  • Put forward ideas
  • Ask questions
  • Ask for help
  • Have fun

Help them work as a team

It’s not just getting a group of good people together and throwing them onto a project, an effective team is more than the sum of its parts.

Good leadership highlights the problem/goal and asks the team how to do it.  Leadership should support the team, protect the team from distractions and help resolve issues as they arise.  Hire good people and then get out of the way so they can do their job.  You need to trust people and give them responsibility and the opportunity to do a great job.

A team needs to trust each other to collaborate.  The best way to do this is get to know each other, have fun and socialise to build rapport.


Your individual success is influenced by the team you work with and the achievements of the team.  Anything significant needs a team to deliver it and the most effective way to be successful is work in a good team and help everyone improve.

Try and help bring the best people you can to your team, everything we do in life involves working with people and collaborating to deliver projects.

Set high standards, work hard and be a good team player.  Technology, change management, processes are all tools used by people and teams to deliver solutions.  Work is a team game and the better the people you work with the more success you will have.

Make sure you work with good people if you want to be successful.

Further reading

The Importance of Working With “A” Players

Why people leave their jobs and how to stop them

Incorrect requirements always result in a bad solution

People move jobs regularly, few stay in the same company for longer than 3 years.  What is the cause for moving regularly?

Moving and recruiters

This article says we move jobs every 4 to 5 years but  IT workers move more often due to more contact from LinkedIn and recruiters.  The big winners in people moving are recruitmenters who get paid for a person moving and get paid to replace them, who then replaces someone else in an endless cycle.

Recruitment has changed from people applying to job adverts to most IT professionals being head hunted or being tempted with job offers for more money, improved benefits and better roles.

Most teams don’t make sure their employees are being paid competitive wages, they still operate in the old method of giving people a percentage increase.  The result is in 2 plus years most people’s experience, skills and knowledge is worth more than their current employer is paying them.  This leaves the company vulnerable because if a recruiter sends this person a new role then it could be for more money they are being paid.

IT professionals and software developers have the opportunity to learn new technologies, this experience if in the right technology such as AI, Big Data, Machine learning or the next sort after skill can be worth even more.  The demand for the growing areas of AI, Machine learning means those with those skills get paid a premium whilst more people up-skill in this area.

What makes people move?

A lack of money demotivates and getting more persuades people who move jobs but there comes a point where mone is not the main driver.  Other factors which drive people to move are below

  • Engagement
    • Involvement
    • Feeling valued (listened to)
  • Career progression
  • Money
    • Benefits
  • Culture
    • Values
    • Type of people
    • Behaviours encouraged
    • Work atmosphere
  • People
    • bad colleagues/bosses
    • Good colleagues
  • Work
    • Challenging
    • Interesting
  • Learning
    • Training, improving
    • Getting new skills

Its a mixture of the company providing benefits and individual team within a company having different culture/teams/people and atmosphere.

Why do people move jobs? 

People move to where there is potential to improve their skills and progress their career.  When people are progressing in their careers they are happy because progression leads to challenging roles and payrises.

Research from Salary.com shows that 23% of employees look for a new job every single day.   this article Your Happy Employees Are Still Job Hunting (Infographic) shows some other reasons

  • 10% want a better work life balance
  • 9% want a new boss
  • 5% want flexible scheduling
  • 4% want better benefits
  • 3% want more recognition

Culture, engagement, progression

The focus on recruitment is

  1. Salary
  2. Benefits
  3. Other reasons

This attitude is outdated because IT professions gets regular offers via LinkedIn, they understand their worth and  moving jobs is easy.

A positive culture, engaged employees, training and career progression are reasons for employees to stay.  Without a positive culture, engaged employees there are a fewer reasons for individuals to stay at a company, it makes it easier to move.

Losing staff members is expensive, costs such as

  • Recruitment fees
  • Loss of business knowledge
  • Domino effect of others moving
  • Re-training and getting new members up to speed
  • CV and Interviewing costs
  • Potential project failure

Richard Branson explains the benefit of training your staff with the quote below

“Train people well enough so they can leave, treat them well enough, so they don’t want to”. Richard Branson

Get people involved

Leaders tell the team the problem and then explain the plan.  Telling makes people less interested because it’s not their plan, it’s an order.  Instead explain the direction and problems, ask for ideas.  Companies hire good people, so get out of the way and let them be great.

To get to better ideas you need more people to propose ideas.  Ideas from different people have different perspectives and areas of expertise.  This generates a base to build future solutions from.

Involved people feel valued because they are making a difference, this encourages people to stay.

IT projects are a people business

It’s easy to focus on technology, it’s sexy, new and you can amaze customers.  You can wow with impressive capacity, power, speed and flexibility of cloud solutions (Azure, Dynamics, Power Platform, etc) but this misses the point.

Customers are not interesting in technology, they are interested in having a solution that helps them do their jobs and be successful.  e.g. What are the benefits to the business and users, who cares what technology it’s built on.

Projects are delivered by people working together as a team.  An IT project is a collaboration between the business experts (Customer) and the technical experts (developers, functional consultants, testers, etc).  Its a collaboration to understand the requirements, creating a solution and delivering the solution (which will be wrong and need to change as more detailed requirements are uncovered).

The better the team trusts each other, the more effectively they collaborate and the more fun it is.  Delivering projects successfully makes work enjoyable and keeps people.


One reasons for moving jobs is career progression.  Life is interesting and challenging when you are learning new skills, you are making progress on your career goals.  People look for jobs when they are stagnating.


It’s great to be part of a team with a clear objectives and who a delivering.  When you work on a project and you deliver it to specification and on time, you feel a sense of achievement.

People want their work to matter and feel it makes a difference.

In the article Who Are Your Motivated Workers? 

  • 43% said achievement is a motivator
  • 24% said recognition is a motivator

We want to contribute, achieve and be recognised/praised for our good work.  It  takes effort to praise  people for good work.

Recognition has little long lasting value because it’s soon forgotten, to be effective you need to recognise good work consistently and constantly.  Recognition has to be earnt and you must be specific with your praise otherwise it lacks impact.

People have to hear recognition and you cannot assume they know you appreciate their effort.

A lack of recognition demotivates and drive people away. If someone is doing a good job but not one tells them it leads feeling under appreciated and de-motivation.

The measure of achievement can be company goals, projects delivered or personal achievements.  We might only play a small part but we feel valued.  The quote from Steve Jobs when hiring John Sculley to Apple from Pepsi.

“Do you want to sell sugar water for the rest of your life, or do you want to come with me and change the world?”

Career progression

If you are not progressing you are falling behind.  People need goals and be working towards them.

If you career progress is stagnating, it leads to frustration and looking for new opportunities.

If people don’t enjoy what they are doing they won’t do it well.  The responsibility of doing a job you enjoy and are passionate about is both with the individual and the employer.  The individual needs to think about their job, what parts they enjoy and what they don’t.

One of the most important boosts you can give your career is picking a job you enjoy and one you want to get better at.

Keep moving towards your ideal job and what you like doing, where your strengths are.  You spend 8 hours a day at work, a third of your life, so pick something you are interested in.

If you don’t enjoy your job you will never excel at it or progress because you cannot fake enthusiasm or passion.  Everyone works in work but to progress you need to improve yourself outside of work and make the most of your time in work (learning, networking, experiences, skills).


For people to be engaged they need to be included.  When people are told what to do they start to turn off but when you give them a problem and ask them to solve it, they get involved.

If you hire good people then let them contribute you

Leaders make a big difference in employee engagement, this article What Great managers do daily quote a Gallup study

a Gallup study found that at least 70% of the variance in employee engagement scores is driven by who the boss is. This is disconcerting because the same research found that about 70% of people in management roles are not well equipped for the job.

Have more fun

Work is important but that doesn’t mean you have to be serious.  You can do the job, deliver projects and have fun. Incorporate fun into the project, get to know others on the team and deliver.

Life is short, so enjoy as much of it as you can.

Final thought

Be engaged, get involved, praise others and you will be successful

Further reading

4 reasons talented employees don’t reach their potential


Hosk’s recommended Dynamics 365/Power Platform and other articles May 2019



When the pressure is on you don’t rise to the occasion, you fall to your highest level of preparation – Chris Voss

Articles of the Month


Great resource below showing all the new certifications and resources to study

Great Dynamics 365/Power Platform articles this month



The Hosk – currently reading

The Hosk – last 5 recommendations

Selected  HoskWisdom

  • There is nothing sexy about underwear when you are hanging it on the washing line
  • Don’t respond to anger with shouting, be silent and confuse them
  • Imagination exhausts itself with the endless possibilities of code
  • When a project isn’t working, you have to stop playing the game
  • Writing good code is like being sexy, if you have tell people you are, you aren’t
  • Code is as complex as you make it
  • Clothes matter, naked developers have little or no influence on projects
  • Good developers bring joy when they join a project; bad developers bring joy when they leave a project
  • Coding is mastered through relentless commitment to the fundamentals
  • When you approach the end of a project, you finally see the requirements and solution as they really are. If only we understood that at the start
  • no project plan survives contact with delivery
  • Customers are a welcome thorn in a developers side
  • You must have chaos within you to be able to dad dance
  • It’s not the skills of the people on team but how will they work together that makes the biggest difference
  • Earn confidence by being good at what you do
  • Everyone wants to be heard but no one wants to listen
  • If you only learn in work, prepare to be average

Last months Monthly articles

Last months recommended monthly articles

Hosk’s CRM Developer Articles

A collection of my favorite CRM Developer articles I have written

Study guide for MB-230 Dynamics 365 for customer engagement for Customer Service

“Press forward. Do not stop, do not linger in your journey, but strive for the mark set before you.” —George Whitefield

You cannot pass the MB-230 Customer service exam without studying.  Having worked with Case management will help but you will still need to study to learn some of the features and functionality you haven’t used in a project.

I recently passed the Exam MB-230: Microsoft Dynamics 365 for Customer Service (beta) and I am sharing the resources I used and some of the notes I made.

Study materials

The best study material is looking at the areas you are going to be tested on Exam MB-230: Microsoft Dynamics 365 for Customer Service (beta) creating a trial and try the functionality, you get practical skills to accompany your theoretical knowledge (e.g. you can use it)

Good 8 hour Open eDX course – MB-230.1 Self-paced , this course has learning material and practical tests. It covers all the key areas of the certification.

The Customer service certification is similar to the previous certification MB2-718, so Neil Parkhurst’s study guide will still help (ignore Field Service content).

MB2-718 Certification: (Microsoft Dynamics 365 for Customer Service) – Revision Guide

Hosk Study notes

The notes are not extensive because I gave up making notes and concentrating on revising because I had to the exam before 31st April :-), so you need to use the materials above and use these notes for a refresher before you take the exam


  • Customer record – this can be either an account or contact
  • Case – schema name is incident.  The is the case, CSR, incident.  They can be linked
  • Resolution Activities – an activity created to hold the resolution reason
  • Entitlements – how much support a customer can have e.g. number of cases, time etc
  • Entitlement channels – type of service e.g. phone
  • SLA – service level agreement
  • SLA can be linked to entitlement
  • Goals – can track progress of individuals
  • Schedule module – allows you find and schedule resources

Case Management

  • Cases can be known as service, ticket, case, CSR, incident
  • Contracts have been replaced by entitlements
  • Contracts are still on the case form for backwards compatibility
  • Cases case be associated with
    • Knowledge base articles
    • Subjects
    • Products
    • Entitlements
    • Activities (emails, tasks, phonecalls)

Case actions

  • New Case
  • Resolve Case
  • Cancel case
  • Save and Route
  • Create Child Case
  • Add to queue
  • Assign
  • Do not decrements entitlements
  • Run reports

Case Search

  • Case fields search = Case number, Case Title (you can add more find fields)
  • Search options = string, wildcard *, partial value
  • Global search/relevance searches multiple entities
  • https://docs.microsoft.com/en-us/dynamics365/customer-engagement/basics/relevance-search-results
  • Relevance is disabled by default
  • relevance search must be enabled (in System Settings à general)
  • relevance search is done using Azure and copying data to Azure (this is why it must be enabled and you agree to hosting data in Azure)
  • Enabling Relevance Search allows all users in the organization to use it.
  • Relevance search is text-based, and can search only on fields of type Single Line of Text, Multiple Lines of Text, Option Sets, or Lookups. It doesn’t support searching in fields of Numeric or Date data type.
  • relevance search isn’t available in On Premise only Dynamics 365 online
  • user can set the default search experience in their personal options
  • Use views to view  active, resolved and personal for predefined filter
  • Views can apply filters on fields

Convert activities

  • Press the convert to on an activity to convert an activity into a case.
  • Convert to case allows you to specify
    • Customer
    • Subject
    • Case open/closed
    • Change the task status to completed
  • Origin will be automated selected
  • The activity will be automated linked to the case

Resolving cases

  • Cases cannot be resolved until all activities are completed
  • Deleting a case removes all activities, notes and attachments linked to the case
  • Cancelling the case leaves the case and activities for reactivation
  • If you resolve a case with open activities, it will cancel those activities
  • Queues are used to group or catorgorise cases (e.g. high priority/low priority)
  • Reactivate a case instead of opening a new case for the same issue
  • When resolving a case , the resolution activity form pops up
  • You cannot edit the resolution activity form
  • It will create a new resolution activity for a case
  • total time comes from the total time in activities
  • Total is not editable
  • Billiable time is mandatory and editable
  • When a case is reactivated the case becomes editable
  • The previous resolution activity will be cancelled

Case Routing Rules

  • You can view routing rules ran in System jobs
  • One active routing rule at one time
  • If a second rule is activated the first one will be deactivated
  • Routing rules have conditions – If, then statements
  • You route to a queue or assigned to a user or team
  • After making a rule, you have to activate it
  • Case routing rules can be applied in bulk from a view
  • Case routing can be applied to a case with Save and route button
  • One Routing Rule set can have many rule item

Record Creation and Update Rules

  • Automatic creation and update rules can automatically create records
  • Only one creation rule can be active, if you active a rule it will deactivate other rules
  • Source type cannot be changed once selected and saved
  • Workflows run to create records as necessary
  • One rule per source type e.g. email, phonecall ,task, social activity, service activity, appointment
  • If you choose different source type you get different

Parent/Child Cases

  • Case closure settings à settings à service management – Parent child case settings
  • Select attributes which will be inherited from parent to child case
  • Closure preference
    • BLANK – Parent/child cases are closed independently
    • Close all child cases when parent case is closed
    • Don’t allow parent case closure until all child cases are closed
  • View – Active Cases with Parent Child Status
  • Create Child case button on case
  • You can see child cases on case relationship section à Child Cases
  • On a list view of cases the button Associate Child Cases allows you to link multiple child cases

Merge cases

  • Multiple cases created, merge into one
  • Merging a case, combines related activities and cancels other cases
  • Merging cases will leave only one case
  • You can merge up to 10 cases at one time
  • Child cases become children of the merged case
  • The status of a merged cases is Merged
  • You can only merge a child case into another child case if they share the same parent case
  • You can see merged cases in Case relationships a Merged cases


Good luck