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

 

Quotes

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

awesome-1

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

Great Dynamics 365/Power Platform articles this month

Programming/Scrum

Other/Business/Leadership/Management

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

Advertisements

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

Entities

  • 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

Hosk’s recommended Dynamics 365 and other articles April 2019

Quotes

Not all problems have a technological answer, but when they do, that is the more lasting solution. Andy Grove

The bug that stands in the way becomes the way

Articles of the Month

awesome-1

Great Dynamics 365 articles this month

Programming/Scrum

Other/Business/Leadership/Management

The Hosk – currently reading

The Hosk – last 5 recommendations

Selected  HoskWisdom

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

The prepared developer writes better code

There are no secrets to success. It is the result of preparation, hard work, and learning from failure. Colin Powell

Look beyond today and plan tomorrow #HoskWisdom

Many developers believe writing code is the most important part of development but you can’t create good code without being prepared.  Preparation, planning and understanding requirements helps find problems in solution design and before you create code.

Lack of preparation results in stuttering development, slowed by bugs, missing requirements, technical debt and late delivery.

While persuading my son of the benefits of getting to football early (more practice, more play with his friends and more football), I said the early bird catches the worm; he said the early footballer catches the ball, but what does the early developer catch?

The early developer catches the bug

Replace early with prepared and getting clarity before you code.

Doing things last minute.com, winging it and making it up as you go creates half.  You might disagree, thinking about the time you winged it and it worked but what about the times you were unprepared, usually it results in lower quality work which took longer.

The result of a bad decision can work once but constant bad decisions don’t work in the long term.

Quote from Bill Walsh on being prepared.

“Hearing someone described as being able to “Fly by the seat of his pants” always suggests to me a leader who hasn’t prepared properly and whose pants may soon fall down.” Bill Walsh

Being prepared makes the most of a situation and you can prepare for other outcomes.

If you know the goal, you can get there in the most direct way.

Meetings

A bad meeting has no agenda, too many people, not the right people, not the right materials. The result is a boring, frustrating and ineffectual meeting which takes longer.  A common goal of meetings is to decide but you need information, options, evaluate before you can decide.

A good meeting has an agenda, it allows attendees to be prepared and focused on the topic, it has decision makers and only the people needed.  creating an agenda, preparing material and only inviting key people takes preparation, but it maximises the time of the people invited.

The focus is on the goal and the purpose. The meeting runs to a schedule. The meeting is followed up with a summary, actions, owners and deadlines.

Coding

Bad
A Developer gets a user story, hasn’t read it before, doesn’t understand the business needs or the purpose behind the requirement. Skims the story, jumps to the acceptance criteria and codes.

Result
Developer finds the story is in complete, acceptance criteria missing, has to ask questions, who asks the business, developer waits, he can’t start anything new because he is halfway through. Gets more requirements, repeats the cycle as they get into the details. Developer codes the rest of the story.

The code is built on a changing design. No coherent structure. Duplicate code used because developer hasn’t prepared or designed the code.  Creates new code in an inconsistent style and standards, this gets rejected at code review and he has to fix, developer frustrated.  The developer has looked at the code base to see what’s there, hasn’t read the standards document.

Developer told to write unit tests.  Tester finds bugs, goes back to the developer.  Users test and find it doesn’t do everything they need and find bugs. Code squeezed in to fix bugs making it harder to understand, maintain and extend.

Good example
Developer reads documentation and understand what the business is trying to do, the purpose of the business and the functionality. Developer reads requirements, asks the tester to make sure the requirements are testable. Questions get raised with business, fuller requirements.

The requirements are understood and the technical design is created and discussed before development starts.

The Developer understands code base, structure and what is there. Designs solution using existing code to avoid duplication and improve consistency.  The developer writes unit tests agaisn’t requirements.  The developer considers not only the happy path but tests exceptions, errors and other paths through the code.

The earlier you find problems the smaller the feedback loop and the quicker you can fix it.  The path you want to follow is fixing problems as near to the source as possible, the fewer people and environments you find the problem quicker the bugs are found and fixed.

Testers will find bugs, the developer will take these bugs and create unit tests to fix the bug and then code it.

Conclusion

Lack of preparation shows in execution.  Preparation allows you to get the right information, consider other options and think about the situation.  An example is presenting, if you prepare and practice it, you deliver a better performance, you can concentrate on the delivery not just the content and make a bigger impact.

For Developers the writing of code is one part of the solution, being prepared saves times and create a higher quality code base with less technical debt.

If you look ahead for bumps in the road you can avoid them

Hosk’s recommended Dynamics 365 and other articles January 2019

Quotes

“New ideas emerge when you question the assumptions upon which a problem is based”   Shane Snow

if you can’t stand the heat of development, step away from the keyboard

When Hosk is the answer, your problems are much worse than you first thought

Articles of the Month

awesome-1

Great Dynamics 365 articles this month

Programming/Scrum

Other/Business/Leadership/Management

The Hosk – currently reading

The Hosk – last 5 recommendations

Selected  HoskWisdom

  • At a high level all projects seem easy, it’s when you get into the details you find its infinitely more complex
  • Code you are proud of today, you will be ashamed of tomorrow.
  • When you see water flowing up hill, a developer has just written code with no bugs in
  • Many project managers are uncomfortable with doing nothing and letting people do thier jobs, they prefer to disrupt, question, prioritize, reorganise, confuse and slow down the project
  • Love is a simple line of code
  • You’re only as good as the code you create
  • Every decision should move you in the right direction
  • It’s better to know your enemy than be wondering where they are and who they are
  • If you think small, you act shall and you stay small
  • When Hosk is the answer, your problems are much worse than you first thought
  • Don’t fear the actions of others, fear your own impatience, mistakes and ego
  • Changing people on a project is a great way to create the illusion of progress
  • You control the decision, not the outcome
  • A persons past reveals their future
  • Learn today for a better tomorrow

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

Recommended reading for software engineers

In my whole life, I have known no wise people who didn’t read all the time – none, zero. Charlie Munger

Books allow you to delve deep into a topic, stop focusing on doing and think about your situation, your approach and effectiveness.  Spending time on design before writing code creates better quality code, thinking about how you code, run a scrum team, deliver a project, work with people helps you do these things better.

Reading a book is conversing with an expert on that subject, you learn from their mistakes, success and experiences.  You get that knowledge and apply your adventures and conclusions on top.

Read why developers should read books if you are still not sure. If you don’t like reading it’s because you haven’t found a good book but you have come to the right place.  Those who read books, get wiser.

Coding

Coding is a fundamental skill software engineers should try to master.  Improving your coding will have a significant impact on your career.

It shocks me the number of developers who don’t learn how to design, write, test and refactor  code to a high standard.  They are paid cash money to write code, so be an expert in it.   Not being a great coder is like a chip shop that doesn’t make tasty chips, it makes no sense.

Let’s start with books to make your code shine brighter than a full moon

Clean Code: A Handbook of Agile Software Craftsmanship (Robert C. Martin)

I love this book, it’s short, concise and focuses on the fundamentals of coding.  Every developer should read this book and earlier the better.  Master the fundamentals and you have a solid foundation to build on

Code Complete (Developer Best Practices – Steve McConnell

This is a monster of a book at 960 pages and it goes deep into the details of coding.  When you read a chapter on how to write a method, it helps you realise the skill that top programmers have.

The Pragmatic Programmer: From Journeyman to Master

Great advice for programmers with common sense, down-to-earth advice.  Less technical than Code Complete but still a great book.  Everyone software engineer who reads this will learn something, it improves your code and your approach.

The Art of Unit Testing: with Examples in .NET

Unit testing is an art, you need to write your code in a testable way but writing unit tests isn’t straightforward but it reduces the feedback loop, allowing the developer to test their code.  Unit testing is something you should master and this book will help.

Head First Design Patterns

This helped me understand Design patterns, I still admire the simplicity of well design code and the patterns featured here are beautiful.  Design patterns are great for seeing examples of well-designed code and giving you a common language to use with other software engineers.

Design patterns are common solutions to common problems, it’s worth the time to read up on them.  Without unit tests changing code becomes risky because without unit tests you can’t be sure you have not broken any code.

Refactoring: Improving the Design of Existing Code

All software engineers will spend time on legacy projects and looking after other developers dodgy code.  This book gives you a way to bring order to a legacy project and improve it.

Projects, Scrum and People

The Phoenix Project: A Novel About IT, DevOps, and Helping Your Business Win

A story about a company who bring DevOps into their business, solving problems and adding drama with characters.  It’s useful to view a project from a different perspective because most people see little in their own projects because they are so focused on delivering the project.

The Inmates Are Running the Asylum: Why High Tech Products Drive Us Crazy and How to Restore the Sanity

An interesting look at the insanity of IT Projects, teams, offices and all aspects of being a software developer.  You may have had an inkling you must be mad to be a software developer, this book will help you understand why you feel that way.  It’s funny and enlightening.

Scrum Mastery: From Good To Great Servant-Leadership

Scrum and agile is a tool, it’s great or terrible depending on who is using it and it won’t be going away soon.  They will use it on many projects you work on, so spend time on understanding how it works and the theory behind the concepts.

Agile projects done well are effective and enjoyable to work on but few people understand the theory behind Scrum\Agile.

Read it, master it, it will help you deliver scrum/agile projects to a high level.

Radical Candor: How to Get What You Want by Saying What You Mean

The driving force behind any project is the people on it.  If you lead anyone, then this book will help you be honest with them and work more effectively.

Never Split the Difference: Negotiating as if Your Life Depended on It

This book contains great practical advice for communicating with people and using emotional intelligence.   The writer was an FBI hostage negotiator, so has experience dealing with pressure situations.  This was my favourite book from 2018.

Mastery – Robert Greene

This book gives many examples of people who devoted their lives to mastering something, it’s inspirational and motivating.

Being a software engineer needs people to master it with constant improvement, study, reflection.

Other recommended reading lists

Time is not wasted if you are reading a book

We are all beta testers for Microsoft Dynamics 365

Working with Microsoft Dynamics 365 is often painful but always exciting #HoskCodeWisdom

Microsoft Dynamics 365 version 9 has seen a lot of bugs in Microsoft Dynamics 365, particularly an increase in bugs in the core functionality, not just new functionality.   I have heard a few Dynamics professional say

“We are beta testers for Microsoft Dynamics 365”

What’s happening and why is it so bad

This is my opinion with no evidence to back this up apart from talking to other Microsoft experts and my experiences.  Before Dynamics 365 was rebranded e.g. Dynamics CRM 2016 and before, there would be a few bugs with new features (which we all know to never use a first version e.g. Microsoft Dynamics Marketing)

In version 9 I have seen lots of bugs, obvious bugs, solution bugs.   I wondered if it was just my bad luck but speaking with other Dynamics professionals they have seen an increase in bugs.

Some bugs I have had the pleasure of in 2018

  • Auditing broken
  • lookups have no names
  • Importing solutions times out
  • holding solutions broken and get stuck (breaking other imports)
  • adding visuals breaks solution import
  • Microsoft minor updates creating dependencies
  • minor update stops solution being imported with duplicate guid
  • Problems with performance and scale groups
  • memory leaks in web servers
  • Microsoft adding dependencies in minor patches – When a Patch to Microsoft Dynamics 365 can break your instance
  • Microsoft adding functionality into Case management and breaking solution imports
  • Microsoft updating instances slowly, stopping up solutions being imported between Dynamics 365 environments
  • Dynamics instances getting stuck, disappearing or being unusuable

What might have caused this?

The direction of Dynamics is to move to business applications, take the processing out of Dynamics and put it into Azure via

  • PowerApps
  • Flow
  • Logic Apps
  • Azure functions
  • Azure WebJobs

Dynamics 365 is one part of the solution and integrated with many services. Processing should be moved out of Dynamics to reduce load on Dynamics and move data out to store it where it’s cheap (e.g. not in Dynamics 365 where it’s expensive)

To do this, Microsoft needed CDS (common Data Service) to be easy and affective to use. I have always thought of Microsoft Dynamics as a GUI front end to a database and a framework to trigger customisations.

Now CDS is a blank Microsoft Dynamics 365

 

To decouple the default functionality of Sales, Marketing and case management, Microsoft needed to recreate these to use standard and supported solutions. Trickier than you would think because the functionality was created using unsupported customisations because supported customisations couldn’t do.

This explains why the CRM 2011 screens have been sitting in Dynamics 365 for so long, Microsoft couldn’t take them out without rewriting all that unsupported functionality (naughty Microsoft).

Microsoft have recreated the functionality with supported customisations (so they could decouple  it). They needed to create the custom control framework and other cool stuff to do this but they have finally got there.  This will be great once they give us a tool to edit the custom controls.

I like the ability to import Sales, Marketing, Case management solution only if you need them, if you are using Dynamics 365 CE as an XRM framework you can now remove those unwanted dependencies.

This rewrite has caused many bugs but I see this is short-term pain for long-term gain.

Microsoft has moved to Azure SQL and moving from SQL server to Azure SQL caused a bunch of problems no one expected.

Process

We got a bug which was reported as fixed,  we tested it and found it wasn’t.  After some investigation the support analyst told me the developer had forgot to check the code in. How did this get reported as fixed?

Azure

Microsoft has fully moved Dynamics 365 to Azure, they are the largest service on Azure,  they are eating their own dog food. This added infrastructure problems to compliment the bugs it added to the system.

Online

The move to Dynamics 365 online has picked up speed, now all customers want to use Dynamics 365.  This means we are getting different projects, doing different things and find different bugs.   The number of projects, type of projects and crazy things developers are doing with Dynamics 365 online has exploded.

Devops and automation

Best practices like DevOps and automation are being brought to Dynamics projects.  This is finding problems not identified before or seen before.

Will it get better?

I read this article about how they build windows 10 and I’m guessing Dynamics does it a similar way

The one version is coming – The new Microsoft Dynamics 365 release schedule is coming and with this Microsoft are moving to a continuous release cycle and a greater testing.

New Dynamics 365 fixes will be tested by Canary (early release) organisations and smaller regions (sorry smaller regions, the need of the Europe and America is greater than the need of everyone else). Everyone will be on the one version which means more testing will be done on the one version.

Microsoft have just persuaded all Dynamics production instances to test it for them or risk breaking their production instance on upgrade.

 

Microsoft has put the pressure of testing earlier onto its customers, accepting the latest major release is not optional and cannot be scheduled. Companies will have no option but to test the new release in a sandbox instance. The one version (to rule them all) should lead to greater automated and manual testing from Microsoft and all its Dynamics 365 customers, this will find bugs faster but will leave the question on how quickly can Microsoft fix and release these fixes.

Features can be turned off, you can avoid using them until they work 

Microsoft are improving the monitoring and proactive fixing and self healing of Azure resources.  Proactively finding problems with customer Dynamics organisations and send them advice. Microsoft will release a tool to check solutions, which does static checks on code to find poor performing code.

The move towards the one version of Dynamics could initially be painful but will improve Dynamics 365 in the long term. Microsoft seem to making the right noises about moving toward continuous deployments, mentioning automated testing and other improvements should help.

The windows development post ends with a good quot

Adopting the principle that the Windows code should always be shipping quality—not “after a few months of fixing” but “right now, at any moment”—would be an enormous change. But it’s a necessary one. Microsoft needs to be in a position where each new update is production quality from day one; a world where updating to the latest and greatest release is a no-brainer, a choice that can be confidently taken. Feature updates should be non-events, barely noticed by users. Cutting back to one release a year, or one release every three years, doesn’t do that, and it never did. It’s the process itself that needs to change: not the timescale.

Embrace it

What I have always enjoyed working with Dynamics is its attitude to change. Microsoft add new services, new tools and new everything. It’s often painful, but it’s always exciting.

Future projects will look nothing like the projects you have been creating for the last 5-10 years and we are all going to need to learn the limitations and best practices. You will laugh, cry and scream with frustration but hopefully not every day.

Other interesting articles

The future of Microsoft Dynamics 365 projects
Will development move towards no code solutions?