Will development move towards no code solutions?

There is nothing to writing code. All you do is sit down and bash you head against the screen for 7.5 hours until you get it right #HoskCodeWisdom

Being a developer is hard, being a good developer is very hard and being a bad developer is merely difficult #HoskCodeWisdom

 

Code is bad. It rots. It requires periodic maintenance. It has bugs that need to be found. New features mean old code has to be adapted.  Code is the enemy – Skrentablog

Microsoft are talking about the citizen developer, improving PowerApps and Flow. Should developers and companies invest time and effort to master PowerApps and creating no code/low code solutions.

Customers question the levels of customisation and the cost of creation and maintenance of code.  Everyone line of code costs to create, maintain and extend, code has a yearly cost.

With no code solutions like Flow and PowerApps, Azure manages the lifecycle and performance, leaving the developer focusing on what they should do.

  • Security
  • Scalability
  • Performance
  • Retrys
  • Lifecycle
  • Memory

No code makes the skill level needed to create and maintain lower but how much knowledge do you need to create PowerApps?

Simplifying creating customisations is like moving from C to C# and memory management/Garbage collection. You get better performance doing it yourself but takes more skilled developers but increases complexity in creation and maintenance.

It’s simpler to let a computer manage memory than write the garbage collection routines yourself.  Delegating garbage collection gives the developer more time to focus on creating business functionality code and less time focused on creating plumbing code (which enables business functionality code)

As a Java developer, I hated doing framework code for security, database writing, passing making web pages.  These plumbing code enabled business functionality but took time to write and created extra code to maintain.

When I saw Microsoft Dynamics CRM 4 it was amazing, which is impressive because Dynamics CRM was not amazing!  CRM had lots of out of the box functionality, this meant creating less framework code and I focused on creating customisations to deliver business functionality and Dynamics CRM did the framework and security functionality.

The framework benefits of no code solutions are great, so why isn’t everyone using them?

Managing complexity

I have never worked on a project which didn’t need a plugin or JavaScript/C# code, I imagine this is because the Dynamics projects I work on are larger and need developers.  There are lots of smaller Dynamics 365 projects which can use out of the box functionality.

I work on complex projects with complex requirements, out of the box functionality is limited to the flexibility of the solution it can create.  Can the users change their processes to fit with the out of the box process or do they need custom validation and functionailty.

Requirements and validation are bespoke to each business. A solution should help people do their job, a good solution will automate and validate for users.  Technology should not dictate solutions, it should enable solutions.

When a user selects a field on a form, it should set other values on other fields or validate values, update other fields in the solution. Automate the creation of data, speed up processes and ensure quality data.

These are bespoke to each business but there lies the value. It’s complexity of business requirements which requires JavaScript and plugins.

Design patterns are common patterns to common requirements, can workflows achieve the common problems addressed by design patterns?

Workflows struggle to deliver complexity, they are limited to simple tasks.  Anyone who has created a complex workflow in Dynamics 365 knows they are unmaintainable beasts, as is trying to create smaller focused ones and intertwining them is also difficult. This is due to the workflow editor and trying to visualise complexity with workflows.

Why is hard to deliver complex requirements with workflows, lets understand what does complex code does?

  • Retrieves, complex retrievals possibly using multiple records
  • Sorts, filters
  • Updates
  • Updates and creates related records
  • Validates
  • Deletes

Code should not be complex, it should be focused steps put together. Codes ability to do complex things and combine them makes it powerful.

GUI customisations struggle (Workflows, Business rules) to do complex solutions.
Workflows cannot sort or filter, they can retrieve records which have a direct link to the entity being processed.

Business rules and workflows struggle to validate multiple fields at once and can’t combine fields.

Strengths and weaknesses

The citizen developer is being mentioned, PowerApps and Flows are being seen as the future companies and projects should be heading.  Is this being asked for by customers or pushed by Microsoft?

Flows connect different systems and data sources, they connect and move data between systems/service.  This is mapping and moving data,  standard repeatable process.

PowerApps, Workflows, Business rules are simple customisations but struggle to carry out complex customisations.  When you mix multiple simple customisations, you can end up with a complex customisations which is very difficult to manage.

PowerApps work for one simple app but 500 PowerApps? will citizen developers understand over lapping PowerApps integrate to create one solution.  Will Citizen developers manage PowerApps in different environments (because despite what Microsoft sells, it’s not good practice to make changes directly in production).

These are the things Software Engineers do

  • Unit tests
  • Data Set
  • Integration
  • Design and create simple designs
  • Security
  • Performance
  • Overlapping customisations
  • Naming
  • Create long term customisations which can be maintained and extended

Postives of No Code

There are positives of no code and in certain circumstances it could be the best choice

  • Simple customisations can deliver simple requirements
  • Lower level of knowledge\skill needed to build no code solutions
  • Services manage performance
  • No servers needed
  • Lower maintenance

Code offers solutions which can match the needs of the clients but expensive skilled software engineers need to create, support and maintain it.   The increased flexibility of code costs more.

No code solutions can deliver simple needs and smaller, less complex projects.  The benefits of reduced cost and complexity increase the longer the solution takes to create and maintain.

Comparing the cost of no code/low code and bespoke code should be done over years.  Bugs can hide in both but code means bugs are harder to find and fix.

Summary

There will be demand for code because complex requirements need complex solutions.   Code allows you to create solutions to fit companies working practices, the custom validation and automation can deliver big productivity gains.

No code cannot deliver complex requirements but companies can simplify working processes to align to out of box features and no code solutions.The answer can be to have both working together.

The problems happen when you scale and have multiple code/no code components.   You get overlapping, integrating and conflicting customisations and the solution is difficult to understand, manage and extend.

It will be interesting to see where no code solutions lead.  So far the low code solutions don’t seem straight forward and we are still waiting for the functionality to catch up with the Microsoft hype.  When the landscape changes there are opportunities for developers to become experts

further reading

 

Advertisements

Hosk’s Recommended Dynamics 365 Articles July 2018

Quotes

You cannot forget when you do something amazing #HoskWisdom

Projects and code always take longer than expected #HoskWisdom

The pain of legacy code never goes away

Articles of the Month

awesome-1

Best of the rest

Programming/Scrum

Other

The Hosk – currently reading

The Hosk – has read and recommends

Hosk’s CRM Developer Articles

A collection of my favorite CRM Developer articles I have written

When a Patch to Microsoft Dynamics 365 can break your instance

 

“When you come to the end of your rope, tie a knot and hang on.” — Franklin D. Roosevelt

We had problems importing solutions in a sandbox instances for Microsoft Dynamics 365. It was because different instances having different versions of Microsoft Dynamics 365. This article looks at the potential problems of patches.

Upgrading

We have been upgrading customisations to make them Microsoft Dynamics 365 version 10 compliant and removing the customisations which are depreciated in Microsoft Dynamics 365 version 9.

You can find a list of the important changes and what’s depreciated here:

https://docs.microsoft.com/en-us/dynamics365/get-started/whats-new/customer-engagement/important-changes-coming

There can be confusion about what you need to update with new versions. Microsoft supports the last 2 releases: Microsoft Dynamics 365 version 8 and Microsoft Dynamics 365 version 9. Customisations are depreciated in Microsoft Dynamics 365 version 9; they will still work in the current version, but it means you can’t use them in Microsoft Dynamics 365 version 10.

An example if the client api is depreciated

Xrm.Page

Now need to get the FormContext

executionContext.getFormContext();

so before you would have done this

var firstName = Xrm.Page.getAttribute(“hosk”).getValue();

now you need to do this

var formContext = executionContext.getFormContext();

var firstName = formContext.getAttribute(“hosk”).getValue();

You can make the change now but you only HAVE to make this change when you are using Microsoft Dynamics 365 version 10.

Patches

The Capgemini Dynamics team store customisations in source control, this allows us to create solutions and deploy them into new environments (we can create an environment and deploy all customisations with a click of a button). We can see the changes in Microsoft Dynamics 365 customisations.

We compare the xml changes of forms, views, JavaScript and all customisations. This week we noticed in the last patch Microsoft added a new section and JavaScript to the contact entity.

This raised the following questions:

1. Should this change happen in a patch release?

2. With Microsoft’s new direction of making all customisations as solutions, wouldn’t this functionality be optional?

3. What functionality could Icebreakers be? Would Microsoft suggest Icebreakers or you store them for each contact?

4. Patches are not meant to break functionality

Problems

A new section added to the form which could confuse testers and users, but it breaks the deployment because it added a dependency to new internal solution added.

We got an error about missing dependency to “Icebreaker  solution and msdyn_talkingpointsloader.js web resource during deployment testing on a separate tenant. The sandbox instances were upgraded with the latest patch, while extracting the latest changes, the section changes with some web resources and controls, adding dependency to “Icebreaker” solution.

Dev instance is version

Test instance is version

Between 9.0.2.54–9.0.2.189 (DB version) this solution and dependency was added, making it difficult to use multiple tenants because Microsoft controls when patches are installed. You can get into a situation where some of your instances have had a patch applied whilst you are waiting for Microsoft to apply patches for others.

When we put code into source control and include Microsoft’s changes, we then cannot install these solutions into the instances which have not had the patch applied.

Here is the Unhandled Exception:

System.ServiceModel.FaultException`1[[Microsoft.Xrm.Sdk.OrganizationServiceFault, Microsoft.Xrm.Sdk, Version=9.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]: The action was failed after 0 times of retry. InnerException is: Microsoft.Crm.Tools.ImportExportPublish.ImportSolutionException: Solution manifest import: FAILURE — -> Microsoft.Crm.Tools.ImportExportPublish.ImportSolutionException: Solution manifest import: FAILURE — -> Microsoft.Crm.CrmException: The following solution cannot be imported: feature_Customisations. Some dependencies are missing. The missing dependencies are : ><Required key=”1510″ type=”66″ schemaName=”MscrmControls.TalkingPointsControl.TalkingPoints” displayName=”MscrmControls.TalkingPointsControl.TalkingPoints” solution=”Icebreakers (9.0.1.7089)” /><Dependent key=”125″ type=”60″ displayName=”Contact” parentDisplayName=”Person” id=”{1fed44d1-ae68–4a41-bd2b-f13acac4acfa}” /></MissingDependency><MissingDependency><Required key=”1536″ type=”61″ schemaName=”msdyn_talkingpointsloader.js” displayName=”msdyn_talkingpointsloader.js” solution=”Icebreakers (9.0.1.7089)” /><Dependent key=”125″ type=”60″ displayName=”Contact” parentDisplayName=”Person” id=”{1fed44d1-ae68–4a41-bd2b-f13acac4acfa}” /></MissingDependency></MissingDependencies>

Solutions

You only have a few days’ notice and you have no ability to control when patches are applied. Some Dynamics instances were on one version and the others instances waiting for the patch to be applied. This can create solutions which can’t be imported into some of your instances. You must monitor when patches will be applied and check if all your instances have had the patch applied.

The documentation surrounding patches is sparse and there can be significant changes. There is a risk of a patch breaking customisations in production — with a small time to test, how do you mitigate this problem? If Microsoft gave a detailed list of the changes it would help to risk assess the patch.

When I worked on projects using Microsoft Dynamics CRM on premise, the best practice was to never take the latest patch but install the patch before that. This way you could buffer yourself from Microsoft breaking Microsoft Dynamics. I wrote a blog post on it Should you keep up with Microsoft Dynamics CRM release cycle?

Microsoft could implement the latest patch to be a beta version and make it operational or move to a monthly release schedule.

In the past when patches broke production, the infamous patch of Microsoft Dynamics CRM 2011 patch 12 — where Microsoft changed how JavaScript worked and broke many instances. I discuss it CRM 2011 — Things learnt when reviewing Javascript code on form loads

Conclusion

Most of the times patches come and go, fix bugs and no one notices. It’s good that Microsoft regularly fixes bugs — that benefits its users. If Microsoft could improve its documentation, give more warning and make significant changes in more significant patch numbers this would resolve many of the problems. This is the online service world we live in and it’s a more exciting way of living.

How we try to speed up IT projects and why it doesn’t work

Code not in production has no value and you don’t know if it will work, get it live in the shortest time possible #HoskCodeWisdom

How does a project get to be a year behind schedule? One day at a time. Fred Brooks

Code not being used by users is worth nothing, you to get a return on investment of creating the code only when it is being used in production by users.
People get lost in the fog of a project and forget its purpose is to create software which helps a business achieves its goals and do the activities which makes the business money.

The goal of IT projects is to create software to help a company deliver its business goals. To help the employees finish tasks and the company to be profitable.

No one cares about technology, employees want to keep their job and the business to be profitable. Technology is an aid to doing work easier, quicker or automating it.

To get a return on this investment of creating software, you need employees using it.

 

Until the code is in production, it has no value to the business #HoskCodeWisdom

Releasing quickly

I tweeted the quote and it generated a some negative answers on LinkedIn, much of which Some of the blame is mine for for the poorly worded statement
Here is the link
This generated comments
“I hope you mean after all quality gates have been passed. If not it makes no difference if you code directly in production. Since it was not tested anyhow.”
“#hosklowqualitycode”
“If that’s your attitude, I would stay well clear of you delivering any code-heavy solution if your priority is to rush stuff into production. This sounds like something written by someone to whom quality, and quality assurance is very much a secondary consideration. Stating that you think that code should, and can only be tested in production implies that you have place a very low premium on the testing process.
“Sounds like recipe for disaster; imagine if such code was behind human nuclear launch systems. If so, recipe for human extinction! if that is your culture, I expect they will also be extinct in due course. Code not in production worthless,? have you not heard of IP?”

When I wrote the comment I focused on speeding up deploying code into production using DevOps, rather than using shortcuts.

The assumption from some readers was a faster release schedule means reducing quality and not testing.  This is the mindset used before DevOps and continuous integration, continuous deployment.
Software engineers should not be spending their time doing repetitive tasks, which can be automated.

If your deployments are manual and you don’t consider automation then it’s difficult to speed up the deployment process with using short cuts and creating technical debt for the project.

Traditional thinking of speeding up projects

The traditional method of speeding up projects with manual deployments is taking shortcuts or working more (weekends, evenings) or faster.
and What’s slowing down your CRM development? for other thoughts on development/release cycle and project quality.
Common methods to speed up projects
  • Add more people
  • Work weekends
  • Reduce quality
  • Reduce testing
  • Reduce scope

The only one of these methods I would agree with is reducing scope and this is the choice customers don’t like choosing.  One benefit of Scrum is the simple rules regarding scope e.g. if you add a story to the sprint, you must remove a story but often people want to squeeze in one more story but Scrum doesn’t allow that.

Add more people

Adding manpower to a late software project makes it later. Fred Brooks

The more people you add to a project, the more complexity you add.  Communication and collaboration becomes harder and the project needs to spend more time communication to avoid creating conflicting solutions, making incorrect assumptions and creating a solution which works.

I tried to explain the problems of adding more developers is to imagine 9 people all trying to write a chapter of a book at once, each person writes 5 pages.  All 9 people need to know the characters, the plot, what’s happening now, what’s happening in the future, writing standards, where to store it.

The chances of the chapter being written 1st time is tiny,  it will take many iterations before you create a coherent story.  This is like a team of developers creating one solution, communicating, checking code works with the existing code, code works as specified by the requirements.
Adding more developers increases the technical debt because they work on seperate parts of the code base.  Good developers will do it properly and refactor as they go but good developers are hard to find.

Problems that come with adding more people are also known as Brooks’s law from the author of The Mythical Man-Month: Essays on Software Engineering

Adding manpower to a late software project makes it later. Fred Brooks 

Brooks explains the problems in seeing people as interchangeable better than I can

“Hence the man-month as a unit for measuring the size of a job is a dangerous and deceptive myth. It implies that men and months are interchangeable. Men and months are interchangeable commodities only when a task can be partitioned among many workers with no communication among them… This is true of reaping wheat or picking cotton; it is not even approximately true of systems programming” Fred Brooks

e.g. Software development is difficult and a project needs people to understand all the intricacies of this project (Business knowledge, people, existing technical solution, tools, etc)

Brooks’s Law focuses on projects who are already late but the main points

  • It takes some time for the people added to a project to become productive.
  • Communication overhead of adding more people
  • Limited divisibility of tasks

The bigger the project the harder and longer it takes people to become productive.   On Boarding is underestimated.  When starting a project you need to learn

  • Business knowledge
  • Existing technical solution
  • People on the project
  • The way the project works, it’s flow
  • Tools and software used on the project

The more people the harder you need to work communicating with them all, the more meetings that pop up!  You can end up slowly down the project by adding more people, the opposite of what is intended by adding additional people.

The last point on limited divisibility of tasks refers to you can’t always split up tasks for multiple people to work on simultaneously.  Summarised by this quote

“nine women can’t make a baby in one month”. Fred Brooks

Work weekends

You can do more work, if you work more days and hours in the same time, by working weekends, the elapsed project days stays the same but the team can deliver more.

This can work on a short-term basis e.g. but it should be a last resort.  Working weekends is a sign of problems, the development team have too much work to do.  It burns out the developers, giving them no time to rest and recharge.

Longer hours results in developers working harder but not more getting done because IT projects are about quality development.  Development needs thinking, creativity and experimentation.

When development teams work harder they lose their spark, churn out code of lower quality and contains more bugs.  Private lives suffer, weakening their relationships with friends and family.

Reduce quality

Faster development leads to lower quality.  Taking shortcuts, cutting corners, delivering to lower standards seems to get the project ahead but it’s an illusion.  The code will be more complex, you have built up technical debt and the debt will be paid later in the project.

The project will slow down when existing code needs changing or extended, the lower quality (highly decoupled, brittle code) will be harder to change and take longer.

Lowering quality gets you ahead now, only to fall behind later

Reduce testing

Unit testing, automated testing and a tester gives the developer a short feedback loop.  Short feedback loops allow you to test your code and find problems and bugs, you fix them whilst deep into the code and an expert.  The further away (longer) your feedback loop is the slower it is to fix bugs.  It takes longer for the bug to get back to the developer and they know less about the code, resulting in longer to fix and retest.

Development is about creating quality, fix code nearest its creation to be most efficient.

Reduce scope

You can speed up a project by reducing the scope.  Less software to create, equals less time to develop and test.

This is effective but unpopular because no one wants to give up functionality.  I rarely see this implemented.

I’m a fan of delivering simplified functionality to get it into production and get feedback.  Often this is good enough.  Simplified functionality is rarely agreed in principle but can gain momentum when seen in action.

Summary

Working functionality is the measure of all projects (assuming its by the users), the smaller the release cycle, the quicker we generate value.

Large IT projects are difficult, the bigger the project the harder it is.  I have read statistics that projects which go longer than a year have a 50 percent failure rate (I can’t remember where I read that state).  This post covers The difficulties of scaled agile projects.

The traditional measures of speeding up projects are adding more people, working harder or reducing quality (by doing less testing).  Scaling the team should only be done when the existing team is working well.  Reducing quality never gets you a head, it just saves the problems for later.

Reducing scope is a realistic approach, maybe not removing scope entirely but delivering a simpler version to begin with, let it be used and make changes from feedback.  You can then deliver smaller updates and everyone feels good.

Most attempts at speeding up projects have been unsuccessful, it often seems people get to a situation where they must hit a deadline but without anyone really thinking why or how this particular date was decided.

The goal of a project is to create a solution which works, it’s better to create a quality solution which takes a bit longer than rush something which doesn’t work.  Production issues cause panic, it’s better to fix these when the stakes aren’t as high.

A great book on the problems of IT Projects (mostly people related)

I recommend the book for anyone working on IT projects, also developers should read books

Where is the better way

This blog post got to big and I got carried away so I have split it up into two posts. in the next post I will discuss DevOps.  I got engrossed in Brooks law and thinking about projects I have worked on and the various attempts deployed to speed up them up.

 

Great posts on Microsoft Dynamics 365 and Software Engineering from the Capgemini team

The Capgemini Microsoft team have been creating some great blog posts this year.  One of the goals of the team is to raise our profile and share knowledge with the community.   The Capgemini Dynamics team created a new blog on medium and we have an existing Software Engineering blog.

Below are links and a summary of the posts this year

Capgemini Dynamics team kick off 2018

A post on the kick off meeting, highlighting the goals for this year and achievements of last year

Why the Capgemini team recommends apprentices

Why Capgemini Dynamics teams experiences of apprentices and the success the team has had

NAW 2018: Dynamics apprentices

An article giving thoughts from the apprentices on the Capgemini Microsoft Dynamics team

What we are looking forward to at Extreme 365

4 people from the Capgemini Microsoft Dynamics team went to Extreme 365 in Dubrovnik, what we were looking to

Future of customer service in your business

How Field Service functionality can help your business

How inverting the problem can help you find different solutions

Inverting your thinking about a problem can help create different solutions and more innovative solutions

Dynamics brain teaser

A brain teaser involving Microsoft Dynamics 365 Solutions, can you solve the puzzle

Create folder in SharePoint from Dynamics 

How to create a folder in SharePoint triggered from a Microsoft Dynamics 365 plugin

Software engineering and .NET articles

Here are some articles from the various Java and Microsoft teams in Capgemini, different technology but both focus on good software engineering practices.

A design review checklist for non‑designers

A checklist for developers reviewing designs

How fast are your React‑ions 

Comparing React to other JavaScript frameworks, seeing how much faster it is and other considerations

Cloud Native Apps on Azure 

Development is moving to the cloud, the article shows how you can use Azure cloud to give you an advantage

Roslyn-Based .NET Code Analyser

Roslyn, which enables .NET software engineering teams to implement automated code reviews based on the skills which they already have.

Serverless and using it

Understanding what Serverless computing is and why it’s a good thing

Debugging into a NuGet package

How to debug NuGet packages

 

Advice on improving as a Microsoft Dynamics 365 developer

The stupid questions are the ones you didn’t ask #HoskWisdom
I get asked questions directly, I write them as posts so the answer can then help many people instead of just one.  Earlier questions

Ask the Hosk questions

If you ask a question if you are polite it will increase the chance of me answering, don’t forget to say how great my blog is (that really helps).

Consider I’m a busy and sometimes I won’t be able to answer you question.  I might not know the answer.

The CRM Forum

I would recommend raising a question in the CRM Forum

  • It’s free
  • CRM experts who have experience will answer the question
  • Microsoft CRM support answer questions
  • You might get a number of answers and opinions

If no one answers you question then if you email me I can see you have tried

CRM forum

When you raise a question, try to give as much information as possible, this will help anyone who answers your question.

The CRM forums are a great way to learn Microsoft Dynamics 365, you can see common questions raised by users/developers and the answers from experts.

Question – Transition to Microsoft Dynamics is tough

Hi Ben, I have been working on CRM as a consultant/lead for the last 5 years. Earlier I was working on IBM Mainframes/AS400. The transition has been a rough one with trying to learn on the job. Struggling a bit with plugins as .net fundamentals aren’t strong enough. Can you kindly recommend a good learning path?

Its like for every stumbling block I try to Google it out which is kinda taking the fun out of it

 

I didn’t answer so he reverted to flattery

Hi Ben, I have been eagerly waiting for your response. Would love to hear your wise words

It worked!

Help yourself

When you ask for help, the person wants to know you have tried, got stuck and now you need some advice to set you off in the right direction.  I am reluctant to help people who haven’t tried or thought about the problem because they are taking a shortcut (googling answers, copy code and not learning).

I will go one step further and believe people should think about the problem

Thinking about a problem is the best way to solve it #HoskWisdom

 

Define what the problem is and work out solutions.  I encourage people to think

It’s useful to use the cardboard developer technique and explain the problem to yourself or a small figure (my preference is a Teenage Mutant Ninja Turtle).

Consultant or developer?

First understand where your destination is before you plot a course.  You should have an ideal job role or identified your next role.  Answer the questions

  • What do I like and dislike about my current role?
  • What did I like/dislike about my previous roles?
  • What is your dream role or dream job?

I recommend going through the Career Conversation as specified by Radical Candor: How to Get What You Want by Saying What You Mean (a great book I recommend it for team leaders/manager)

I think its better to specialise in become either a functional consultant or a developer.  Consider what role you enjoy more because you will be doing it every day for 8 hours.  They are separate roles, which need different skills

Consultant skills

  • Good communication
  • Presentation skills
  • Understanding requirements and analyst skills
  • Running meetings and workshops
  • Strong knowledge of Microsoft Dynamics 365 out of the box functionality
  • Gathering requirements, questioning the business, listening
  • Converting requirements to Dynamics 365 functionality

Developer skills

  • Strong coding skills and experience
  • Design code – SOLID Principles, design patterns
  • Unit testing
  • Integrating systems
  • Software engineering
  • Knowledge of out of the box functionality
  • Debugging, bug hunting

Do everything average or a few things well

I have worked for small companies were my role was consultant, developer, technical setup and support, it was great to learn different aspects of Microsoft Dynamics but I didn’t specalise and I was doing tasks I didn’t enjoy (installing software and configuring servers).

When you work at a bigger companies, you work with experts consultants, developers, DevOps, testers, architects etc.

I think you should focus on becoming either a great Dynamics consultant or a great Dynamics developer but if you try to be both you will be good but not great.  Many Dynamics professionals can’t code and instead focus on improving their consultanty skills.

“The man who chases two rabbits, catches neither.” ~ Confucius

Developer path

I’m a developer, so here is advice on becoming a better developer.

Stop googling answers and think, learning and solving problems, this build up your Microsoft Dynamics 365 knowledge.  Becoming a CRM developer is difficult, it takes time and effort.  Becomean expert in Microsoft Dynamics 365 and improve as a Software Engineer.

No shortcut in become a Dynamics developer

Understand Microsoft Dynamics 365 out of the box functionality, the best way to do this is to take and pass Microsoft Dynamics 365 certifications.

When you come up against problems, don’t search the internet, instead search the Dynamics SDK and understand how it works.  The SDK is the core development engine of Microsoft Dynamics 365

Start with the CRM SDK

The reason to stop getting answers from the internet is because the Internet gives you the answers but it doesn’t help your learn and understand how Microsoft Dynamics 365 works.  Getting answers without learning is short-cutting learning and growing your knowledge.  This leaves  you with fragile knowledge which won’t help you resolve problems not previously tackled.

Known as Chauffeur knowledge

The Two Types of Knowledge: The Max Planck/Chauffeur Test

If you want to improve read books

read the articles below

Dynamics 365 Online Deployment – MB2-715 study notes

You cannot create a solution with Microsoft Dynamics 365 if you don’t understand it #HoskCodeWisdom

The goal of Dynamics certifications is to broaden your knowledge, learn how new features work and get a certification to prove you know it.  If you study, earn the knowledge the certificate is useful to you and employers.

Short-cutting creates technical debt for yourself because employers, colleagues are expecting you to be an expert in Microsoft Dynamics 365.

The benefits of Dynamics certifications are discussed in the posts below

Certification criteria

Understand what you will be tested on and read the certification criteria

Microsoft Dynamics 365 customer engagement Online Deployment certification criteria

These are the main areas

  • Create a Customer Organizational Structure (25% – 30%)
  • Administer the Microsoft Dynamics 365 Environment (25% – 30%)
  • Integrate Microsoft Dynamics with Other Applications (20% – 25%)
  • Manage Microsoft Outlook and Mobile Environments (25% – 30%)
Look at the details under these because they will include parts of the Dynamics 365 you don’t have experience with.  This article explains why you might not have experience with certain areas of Dynamics 365.

Certification Process

I have been getting Dynamics certificates since Microsoft Dynamics CRM 4 and I use the same technique

Watch the Dynamics learning portal videos for the certification for the functionality I don’t know(and sometimes watch them for a refresh).

Whilst watching the videos I will make study notes, I believe in active reading/watching otherwise I can’t tell if the information is sinking in or bouncing off.

For functionality I haven’t used before I create a trial in Dynamics 365 and play with the functionality, using the functionality is the best teacher.

I make notes on the limitations of functionality and absolutes because these are the things Microsoft likes to test you on.  It’s also easy to read these notes and put them into a quiz to enable you to test your knowledge.

The more you try to retrieve a piece of information the more your brain will realise it’s important and put it in a prominent part of your brain for easy access.

Source of Information

Hosk study notes

Please note these were made in 2017 some things could have moved on

blog post with a few details on Dynamics 365 instance management

  • There are two types of Instances 1. Production Instances 2 Non- production Instances.
  • Sandbox instance can be put in Administration Mode and System Administrator and System Customizer role can sign in to the instance
  • While Copying instance, target instance can be a Sandbox or Preview instance; not a Production instance.
  • When an instance is copied, target instance will be deleted and replaced with copy Source instances data, customizations.
  • Global administrator can copy all available instances. But Dynamics 365 system administrator can copy instance for which they have system administrator role.
  • Notifications are sent to administrators or any additional recipients configured when 80 % for storage limit is reached. If storage limit is reached no new records can be created. Here then data needs to be removed and/ or additional storage needs to be purchased
  • Full Copy includes all application data, user, customizations from the source instances and is suitable for UAT, upgrade testing, preview in Production (TAP/EA) and training.
  • Minimal copy includes users, customizations and is suitable for iterative team deployment, Partner/ ISV Solutions and Proof of Concepts.
  • System backups occur daily.
  • System backups are retained up to three days. Check your expiration date.
  • System backups do not count against your storage limits.
  • You can back up Production and Sandbox instances.
  • You can only restore to a Sandbox instance. To restore to a Production instance, first switch it to a Sandbox instance.
  • Only CRM Online 2016 Update 1 or later versions are supported for backup.
  • On-demand backups are retained for up to three days. Check your expiration date
  • The instance remains available while being backed up.
  • The instance remains unavailable while being restored.
  • Copied instances are copied to the same region as the source instance.
  • Instances that are reset are reset to the current region.
  • Preview Instances do not consume any of the storage quota purchased for Production and Sandbox instances.
  • A tenant can include up to 50 Dynamics 365 (online) production instances and up to 75 non-production (Sandbox) instances.
  • Each instance within the tenant receives its own SQL database.
  • Dynamics 365 data is not shared across instances.
  • Storage is shared across the primary instance and any additional instances.
  • All instances for a single customer tenant will be set up in the geography where they initially signed up for their account. Storage consumption is totaled and tracked across all the instances attached to a customer tenant.
  • You can set up separate security groups for all instances.
  • A licensed Dynamics 365 (online) user can potentially access all the Dynamics 365 (online) instances associated with the tenant. Access is controlled by instance security group membership.
  • You can purchase additional instances through the Additional Instance Add-On. Additional instances can be added only to “paid” subscriptions – not trials or Internal Use Rights (IUR). If you purchased your Dynamics 365 (online) subscription through Volume Licensing, you must go through your Large Account Reseller (LAR) to purchase the additional instance.
  • You can’t merge existing trials or subscriptions onto an additional instance; instead, you will need to move your data and customizations.
  • User accounts, identities, security groups, subscriptions, licenses, and storage cannot be shared among tenants. All tenants can have multiple instances associated with each specific tenant. Dynamics 365 data is not shared across instances or tenants.
  • Your instance will not be updated unless you approve it. This means your organization will go without the latest features and functionality until you explicitly give approval for the update to happen. Keep in mind, we do have an update policy that will make some updates mandatory, with no approval required.
  • At any given point a customer must be on the current version (n) or a version prior (n-1). For example, if you are on CRM Online 2016 Update (n-2) and chose not to take the available CRM Online 2016 Update 1 (n-1), then you would need to take December 2016 update for Dynamics 365 (online) (n) as a mandatory update.
  • Twice per Year new features become available through customer-driven updates in the Microsoft Dynamics 365 instance.
  • Office 365 admin centre to add/remove users
  • Best practise is to make the user change their password when they login
  • You add the user in Office 365 admin centre but you then must log into Dynamics 365 and give them a security role
  • Authentication is having a licence and office 365 user
  • Authorisation is having a security role
  • Removing the Dynamics 365 license makes the user disabled
  • Role assignment will stay the same for a disabled user.
  • Non-interactive user are for service accounts/integration
  • You can have 5 non-interactive accounts
  • Non interactive users can be used for programmatic access
  • Non-interactive users don’t consume a licence
  • Global Administrator – access office 365 admin centre
  • Administrative roles don’t use licences
  • Administrative roles can’t see any Sales, Marketing or service records
  • Administrative role is set to Administrative on user settings
  • To reduce administration, it’s recommended you setup federation because you must have an office 365 user. Synchronise your AD with Azure AD
  • A global administrator will, by default, also have systems administration privileges in Dynamics 365
  • Global administrator can access Dynamics 365 without a license but they cannot view any records without a Dynamics 365 license in read-write mode
  • Global Administrators are the only people who can assign other admin roles
  • You can assign alternative email addresses
  • Customized Administrator roles
    • Billing Administrator
    • Dynamics 365 service administrator
    • Exchange administrator
    • Password administrator
    • Skype for business administrator
    • Power BI service administrator
    • Service administrator
    • SharePoint administrator
    • User management administrator

Licensing

  • Dynamics 365 is available in two editions. Business and Enterprise. – not any more but the exam might not be updated
  • Enterprise is aimed at customers with more than 250 users
  • Enterprise can include operations and finance
  • Enterprise has dual rights which means you get a free on-premise licence with your on-line licence
  • Business edition is aimed at companies with 10-250 users
  • Dynamics 365 is based on named users – e.g the license is assigned to a Office 365 user
  • Enterprise edition application licenses are often $95 each. Whilst the customer engagement plan, giving access to all of the engagement apps is $115 per user per month
  • The Dynamics 365 Plan license, giving total access to all of customer engagement and operations is currently $210. Whilst the Unified Operations Plan is $190.
  • Business edition, full users are $40 per use per month. And a Business edition team member license is $5 per user per month.
  • One sandbox and one production instance are provided with your first purchase of a Dynamics 365 license.
  • Additional sandboxes cost $90ish per month

Portal

  • One portal is included with any Dynamics 365 Customer Engagement Plan subscription, per tenant, shared across all Customer Engagement Application
  • Each portal may only be associated with one instance

Instances

  • Tenant – an account created in Microsoft Online services
  • One tenant > many instances
  • Each instance is deployed to a separate SQL database
  • Different instances can be used for different tasks – test, dev, training, etc
  • Security group – what users can access what instances. g. you could have a developers security group, with access to the development instances
  • Two Instances types
    • Production instances
    • Non-production instances – Sandbox
  • Production and sandbox instances are purchased as addons for a subscription
  • Trials cannot purchase add-ons
  • All instances have names and unique url
  • Instances are managed in the Dynamics 365 admin centre
  • Sandbox instances have actions not available on production instances such as
    • Switch (change from production to sandbox or sandbox to production)
    • Reset
    • Delete
    • Copy
  • An admin can switch between product to sandbox and sandbox to production.
  • You can only switch instances if you have paid for the different types
  • Production instances cannot be reset
  • When an instance is reset, it’s deleted and created as a new instance
  • Sandbox instance can be moved to Administration mode
  • Administration mode, limits access to administrators and customizers
  • Administration mode stops back group operations such as Async services and workflows
  • All the storage is shared between all instances
  • A full copy, Copies an instance copies Data, users and customisations
  • Minimal copy only copies users and customisations
  • When copying consider how much data you have available and cost
  • You might not want developer users to see production data – be careful
  • You can only copy instances to a sandbox instance
  • You can copy from production or a sandbox instance
  • A tenant can include 50 production instances and 75 non-production instances
  • Each tenant is bound to the same region
  • You can ask Microsoft to create instances in different regions
  • You can only copy between instances in the same region
  • You can have multiple tenants, you cannot share anything between tenants
  • Each tenant is linked to a separate Active directory
  • You can enable Admin mode (Administrative Access) and only users with Administrator or System customizer security roles can sign in.
  • Administrative access will disable Asnc jobs such as Workflows, async plugins, service side sync)
  • You can only enable Admin mode on sandbox instances
  • You can switch a production instance to a sandbox instance
  • You can delete a sandbox instance
  • You cannot delete a production instance
  • You can reset a sandbox instance
  • You cannot reset a production instance
  • Resetting an instance wipes it clean, removes customisations, data, users, everything
  • You can copy an instance to a Sandbox instance
  • You cannot copy sandbox to production or production to production
  • The maximum data you can copy is 100 GB
  • Full copy copies customisation, data and users
  • Minimal copy copies customisations and users but not data
  • Reset an instance, deletes it and recreates it. This is useful to set the sandbox to a different version, free up storage space, delete the data

Storage

  • Storage is shared between all instances
  • If storage capacity is reached, new records cannot be created
  • Storage is connected to a subscription not an instance
  • You get a warning when 80 percent of storage is reached
  • You can add more email recipients to the notification list (e.g. partners)
  • You cannot reset a production instance
  • A new subscription will provide 10Gb of storage, a free sandbox instance, free portal
  • an additional 5Gb will be granted for each 20 full licenses purchased
  • You can see your Microsoft Dynamics licenses within the licenses option under billing in Office 365 admin
  • There is a limit of 30 TB
  • Dynamics 365 has a limit of 300 custom entities
  • default a Dynamics 365 Customer Engagement subscription will provide 10Gb of storage. Then an additional 5Gb of storage is automatically added for every 20 full users. (Team member licenses do not contribute to this increase.)
  • The amount of extra “free” storage is capped at 30Gb.
  • Additional storage can be purchased in 1Gb chunks. Up to a maximum of 5Tb of extra storage.

Updates

  • Updates become available twice a year
  • CDU – Customer driven update
  • You can skip one update but you cannot skip 2 in a row
  • The next update will be mandatory if you skip one
  • Patches will be released between major releases
  • Update emails are sent prior, during and after the update
  • Updates need to approved for each instance
  • Your instance won’t be updated without your approval. Unless the update is mandatory where it will be updated without approval (e.g. you must take 1 update per year)
  • You must be a Dynamics 365 System administrator to approve an update
  • When an update is approved, you can reschedule it as long as it hasn’t started
  • When an update has started the reschedule option will no longer be available
  • Four stages of an update
    • Queue (Not Started)
    • Backup
    • Restore
    • Database Upgrade

Notifications

  • You get notifications for
    • Service outages
    • 80% storage limit reached
    • Potential upgrades

SharePoint – Document management

  • SharePoint can store documents outside of Dynamics 365 and is a way to save space in Dynamics 365
  • SharePoint is server to server integration
  • All combinations of Dynamics 365 online/on premise and SharePoint online/on premise are supported

Microsoft OneDrive

  • 1TB of cloud space provided
  • You can share documents on OneDrive to provide a more private method of sharing, instead of the public SharePoint
  • You need SharePoint integration for OneDrive to work
  • You must be assigned an Office 365 licence
  • Dynamics 365 on Premise or on line
  • You must enable OneDrive for business in System settings
  • There is a security privileges called OneDrive for Business, found in in core records à miscellaneous privileges

Microsoft OneNote

  • OneNote is used to capture notes
  • OneNote integrates with Dynamics 365 and On premise
  • OneNote notebooks are stored in a SharePoint site
  • SharePoint integration must be enabled
  • You enable OneNote integration at an entity level
  • For enabled entities OneNote notebook will appear on the activity wall, after Notes

Microsoft Skype/Skype for business

  • You can configure which skype is used
  • It can automatically open when you click on a phone number

Office 365 groups

  • Shared workspaces for people to collaborate
  • It allows collaboration with Dynamics 365 and Office 365 users (who don’t have Dynamics 365 licences)
  • You need an Exchange Mailbox for each user that will use Office 365
  • SharePoint integration must be enabled for Office 365 Group users to view documents
  • Office Delve uses Machine learning to search all data (but not data held in Dynamics 365)
  • Delve can be shown in the Dynamics 365 as a dashboard
  • Delve dashboard cannot be shown on Dynamics 365 on premise

Dynamics 365 Apps

  • Apps allow you to edit the site map to only show certain entities, regardless of security role
  • Apps can be enabled/disabled for one or more security roles
  • Each App has it’s own URL
  • The apps suffix will work in the url
  • Users can navigate to the app from the menu
  • Apps only work in the web client
  • Apps can modulise the UI and provide a filtered view
  • Apps is another solution enabled entity
  • Apps can used Dashboards, Forms and views and Charts and Business process functions
  • App validation warns users on missing dependencies during app creation
  • App has a sitemap designer, which can be used by non-admin users
  • App Source allows you to find apps
  • Apps can add Site Map, Dashboards, Business process flows, entities (forms, views, charts)

Powerapps

  • PowerApps allow you to create no code apps
  • PowerApps can be built from templates
  • PowerApps can run in a web browser or mobile device (IOS, Android, Windows phones/tablets.)
  • To use PowerApps you need Office 365 or Dynamics 365 licence
  • You can access PowerApps from the app selector in Office 365
  • Powerapps is free of Office 365 and Dynamics 365 users
  • 2 Paid plans for PowerApps
  • Free PowerApps cannot use the common Data Service
  • 1 paid plan can use the common data service
  • 2 paid plan can model your data using common data service and enterprise grade admin
  • You can connect powerapps with 90 plus different services
  • You don’t write code but can use Excel like formulas
  • You can link PowerApps with Flow

Outlook integration

  • Dynamics 365 for outlook is installed on a users computer
  • You can track emails, appointments, contacts and tasks
  • Dynamics 365 for outlook allows you to work offline
  • Dynamics 365 for outlook supports 32 and 64 bit
  • Dynamics 365 for outlook works with Windows 7, 7 SP1, 8, 8.1, 10
  • Dynamics 365 for outlook works with Windows server 2012 and 2012 R2
  • Deploying can be done manually, command line, group policy, remote desktop, Microsoft System Center configuration manager
  • To track emails, the outlook email address must match the users email address in Dynamics 365
  • You can add multiple instances visible in Outlook
  • Only one instance can be a syncing instance
  • Offline data is stored on a local Microsoft SQL server express database
  • The offline data filters controls what data is downloaded to the users computer
  • You cannot add new field or custom field to the synchronisation settings
  • Dynamics 365 app for outlook
  • Dynamics 365 apps works online not on each users machine
  • You can track meetings and appointments not just emails
  • Dynamics 365 email templates can be used in the Dynamics 365 app for outlook
  • Dynamics 365 doesn’t have built in email functionality
  • Server side sync, integrates Exchange and Dynamics 365
  • Server side sync doesn’t need Outlook to be running
  • Server side sync talks direction with exchange and Dynamics 365
  • Incoming – None, Microsoft Dynamics 365 for Office outlook, Server side sync or email router or forward mailbox
  • Outgoing none, Microsoft Dynamics 365 for Office outlook, Server side sync
  • Folder level tracking will automatically track emails when they are moved to certain folders
  • You can link Exchange rules to move emails into folders and linked with Folder Level tracking
  • A limit of 25 rules/folders
  • You create folder tracking rules

Mobile Apps

  • Dynamics 365 for phones – uses the same forms as web applications
  • Dynamics 365 for phones – CRM onlines 2015 updates 1, CRM 2016 on premises
  • Dynamics 365 for phones express – CRM 2013 on prem, on line
  • Dynamics 365 for tablets – CRM 2013 online and on premise
  • Mobile apps are free for licenced users
  • Go to a form and click a field to set if a field is visible on the phone
  • Forms are used for both web app and mobile
  • Entity metadata has a checkbox – enable for mobile
    • Read only in mobile
    • Enable for mobile offline
  • 2 Security privilege restrict access Dynamics 365 for mobile and Dynamics 365 for phones express
  • Mobile security privileges are found in the business management section
  • All custom entities can be enabled for all mobile apps
  • Dynamics 365 for phones and tablets can make entities read only
  • Some system entities cannot be enabled
  • Tabs, sections and fields can be hidden from Dynamics 365 for phones
  • You cannot hide components (fields, sections, tabs) for Dynamics 365 for tablets
  • You can hide components for Phones but not tablets
  • Multiple dashboards can be enabled for Dynamics 365 for phones and Dynamics 365 for tablets
  • System or user dashboards can be enabled for phones and tablets
  • There is a dashboard property called Enable for mobile
  • You can only enable offline sync in a production instance
  • You need 5+ professional licences or 1 enterprise license
  • You need to create mobile offline profile, which defines what data is taken offline
  • You can define data to be download as My data, Teams data or business units data
  • You need to add users to a mobile profile and publish it
  • You can choose to set Synchronization conflicts