Hosk’s Top Dynamics 365 Articles of the week – 13th January

Quotes

Positive thinking will let you use the ability which you have, and that is awesome. Zig Ziglar

#HoskWisdom Favoutes this week

  • If recruiters want to be treated with respect, they need to treat people with respect #HoskWisdom

Want more #HoskWisdom then follow #HoskWisdom or follow @BenHosk

Articles of the week

awesome-1

CRM Development hacks

great article with some great link to show all fields, enable all fields, get record guid and links to other pages such as advanced find/solutions.

Azure functions are a useful tool to learn about, to help move long running processes out from Dynamics 365

Best of the week

CRM for Dynamics 365 Top 10 New Features

Dynamics 365 – What does Include entity metadata do

Top 10 Microsoft Dynamics CRM/365 Tips from 2016

Dynamics 365 – Editable Grids

Hosk’s favourite Hosk Dynamic blog posts of 2016

Dynamics 365 – Editable Grids JavaScript Example

How to show signature accepted using Pen Control in Reports & HTML web resources – Dynamics CRM/365

The Top 10 Hosk Dynamics CRM blog posts for 2016

Learning Path authoring now available in Dynamics 365 (online)!

Business Rules – Dynamics 365

Will Dynamics 365 redesign Microsoft Dynamics CRM Online? 

XrmToolBox : Marketing List Manager Plugin

worth a read to refresh me about outer join functionality added to CRM

Replicate Microsoft Dynamics 365 (online) data to Microsoft Azure SQL Database

What’s new for developers: Microsoft Dynamics 365

Microsoft Dynamics 365 App for Field Service – A Walkthrough Tour

 Email Engagement in Dynamics 365 (CRM)

Dynamics 365 – You can’t add new forms to the appointment entity

Executing Dynamics 365 workflows from Microsoft Flow

CRM 2016 – ActivityParty and ActivityParty Lists

WHAT’S NEW IN THE DYNAMICS 365 DEVELOPER TOOLKIT

CRM 2016 – Tips on passing the MB2-712 customization and config exam

Programming

Write a Live Code Analyzer for Your API

Why “Agile” and especially Scrum are terrible

3 Strengths That Make Microsoft Corporation (MSFT) Stock A Buy Now

What are story points

too cool for school – lego kanban board

Other

 The Outrageous Cost of Skipping TDD & Code Reviews

 10 ways to better lead your agile team

Former Navy SEAL commanders explain why they still wake up at 4:30 a.m. — and why you should, too

Managing Your Boss

32 Little Rules I Follow To Live A Life That Feels Good Every Day

4 WAYS TO PUSH THROUGH ADVERSITY AND FAILURE WITHOUT EGO

The Hosk currently reading

The Hosk – just finished reading

Hosk’s CRM Developer Articles

A collection of my favourite CRM Developer articles I have written

CRM 2016 – Tips on passing the MB2-712 customization and config exam

All the CRM 2013 content to help you pass the exam

picture from here

Hosk’s favourite Hosk Dynamic blog posts of 2016

Start by doing what’s necessary; then do what’s possible; and suddenly you are doing the impossible. Francis of Assisi

You are always a student of Microsoft Dynamics 365 never it’s master #HoskWisdom

The minute you stop learning new Microsoft Dynamics 365 functionality, you are falling behind #HoskWisdom

I only published 63 blog posts, compared to 148 in 2015 and 220 in 2014, 455 in 2011!   Numbers don’t mean anything because it’s the quality of the content not the amount which is important.

Most of the popular blog posts were written in earlier years, this could be because these blog posts are linked to more blogs, the blog posts are better or more developers are not using the latest version of Dynamics CRM/365.  Below is a link to the most popular blog posts in 2016

The Top 10 Hosk Dynamics CRM blog posts for 2016

I thought I would share the most useful blog posts I wrote last year

  1. How to evaluate job offers for Microsoft Dynamics CRM roles 
  2. CRM 2016 – The importance of keeping the same guids between CRM instances 
  3. CRM 2016 – What’s the best way to organise solutions in Microsoft Dynamics CRM 
  4. CRM 2016 – Tips on passing the MB2-712 customization and config exam 
  5. CRM 2016 – Failed to generate excel
  6. Will Dynamics 365 redesign Microsoft Dynamics CRM Online? 
  7. In Praise of the Incomplete Dynamics 365 consultant 
  8. CRM 2016 – ActivityParty and ActivityParty Lists 
  9. What is the purpose of a CRM Practice 
  10. Extreme ownership – taking ownership for what you do 
  11. Study tips for the Scrum Certification 
  12. Looking at the ideas behind SCRUM
  13. Microsoft buys LinkedIn – What you need to know

Picture from here

The Top 10 Hosk Dynamics CRM blog posts for 2016

Once you replace negative thoughts with positive ones, you’ll start having positive results. Willie Nelson

The company that needs Microsoft Dynamics CRM, and hasn’t bought it, is already paying for it #HoskWisdom

I have written Dynamics CRM blogs for 6 years and this year I got the most views in a year 673873,  beating last years numbers 661057.  Thanks to all the people who read my blog posts and support the Hosk Dynamics CRM blog post.

I have written blog posts so long the default category is CRM 2011!

A lot of people have told me this year how the Hosk Dynamics CRM blog post has helped them which is great.

Here is a list of the most viewed blog post in 2016 (I am always tempted to write CRM 2016, that will now stop with Dynamics 365).  The views don’t include articles viewed on other sites.

Home page / Archives 48326
CRM 2013 – Understanding Solutions and how they work 13408
Microsoft Dynamics CRM Developer Interview Questions 12904
CRM 2013 – Step by Step Update Plugin Tutorial using the CRM 2013 Development Toolkit 11382
What are the limitations of Microsoft Dynamics CRM Online and how do you work with them? 10162
CRM 2015/CRM2013 – JavaScipt to get the current users name 9753
CRM 2013 – Javascript to get id of current record 7370
CRM 2015 – how to find Statecode value 7141
MB2-703 – CRM 2013 Customization and Configuration Certification Information 7131
CRM Plugins – Stopping infinite loops and understanding PluginExecutionContext.Depth 7005
Where is the CRM Developer toolkit for CRM 2015? 7004

image from here

Dynamics 365 – You can’t add new forms to the appointment entity

I can’t change the direction of the wind, but I can adjust my sails to always reach my destination. Jimmy Dean

Thinking is difficult, which is why most people avoid it #HoskWisdom

Just when you think you understand Dynamics 365 it bamboozles you making you think your browsers broken.  I was trying to add a form to the Appointment entity, only to find the new form button was missing.

I tried it in different browsers but the create form button on appointment was refusing to appear.  I asked another developer to add a new appointment form but the button was missing for them too.

Here is custom form with the create form button

no-create-form-1

Here is the Appointment entity and there is no create form button

no-create-form

Why?

As always we start with the CRM SDK but I couldn’t really find anything but I did find this tip of the day instead

Tip #561: Custom Activity Forms

It has this interesting information and opinion

There is no New button or Save As button that is available on the following activities:

  • Social Activity
  • Appointment
  • Recurring Appointment

This is mostly likely is due to the binding of the information on the form fields to the Outlook client for Appointments and to Microsoft Social Engagement for the Social Activity. Custom versions of the form would likely endanger the integrity of the sync.

 

This forum post discusses

Why can’t I create new forms for the Appointment activity?

I wasn’t sure the reason for not being able to add appointment forms but Outlook integration would seem the most logical.

I was thinking the problem could have been the old forms which Microsoft haven’t updated yet, discussed in this blog post

CRM 2016 – Why can’t I add a business rule to the Article entity

 

What can you do?

You can update the existing appointment form and this is a valid option but you should consider if you need to use the default appointment form and if a heavily customized appointment form will cause problems and maintenance overhead.

You could use business rules and Javascript to show/hide sections or fields on the appointment form.  Be careful with Outlook integration because new fields won’t appear on the Outlook appointment record (but will appear on the CRM appointment record).

The other option is to create a new entity.

If you are going to create a new entity it might be an activity,  read this blog post to understand what this means

Be careful making an entity an activity because it’s very difficult to add security to an activity because all activities live under the one security setting.

Creating an activity will mean it appears under activities, you must need this functionality.

Conclusion

Only being able to update the one appointment form stopped me in my tracks, what if we needed to use the appointment form in other scenarios, I would be difficult to support.

This made me pause to think if I needed the appointment functionality and when making entity changes it’s better to think longer and avoid a mistake because deleting things in Dynamics 365 is a slow painful business.  Much better to think hard and avoid creating entities incorrectly.

Dynamics 365 gives you the power to quickly and easily create entities but that doesn’t mean you should.

CRM Entity ownership – How do you decide?

Dynamics 365 – What does Include entity metadata do

 

Man’s greatness lies in his power of thought. ~ Blaise Pascal

As the functionality in Dynamics 365 grows I find there are more options and check boxes which I have no idea what they do, today I came across a check box called Include entity metadata

appointment-no-metadata-0

Dynamics 365 developers should not be comfortable using functionality you don’t fully understand because it could cause you problems later and sometimes once you enable a setting it cannot disabled, such as setting entities values

  • Business process flows
  • An entity being an activity
  • Connections
  • Queues
  • Activities

Entity ownership can cause problems when you need to apply security to organisation entity – CRM Entity ownershipHow do you decide?, you need to get the decision right first time or don’t make it organisational if you think there is a chance it will need security.

Dynamics professionals are craftsman (Are you a Dynamics Craftsman or a CRM developer?) their main tool is Microsoft Dynamics 365/CRM.  You must become a master of Dynamics 365 and understand the nuances, limitations and capabilities.

If you don’t understand certain functionality, work out how it works and the underlying logic, keep asking questions until you can explain it to someone else.

Dynamics CRM/365 developers you should use the SDK rather than Google and you should always start with SDK.

Metadata

Dynamics 365/CRM metadata has the potential to confuse people because it can prove a slippy subject for people to grasp and when explaining it you end up saying things like “it is data about data”.

To understand how metadata works in Dynamics CRM/365 read this article – CRM 2015 – Understanding CRM Metadata 

A quick explanation on field metadata such as (I am only going to list some of the more interesting fields available not all of them)

  • LogicalName
  • DisplayName
  • SchemaName
  • AttributeType
  • IsAuditEnabled
  • IsRenameable
  • IsManaged
  • IsPrimaryId

A field itself holds  a value but the metadata is

  • Display name
  • is it audited
  • is it a manged field

The metadata doesn’t affect the value of the field but it changes the way it interacts with Dynamics 365.

What is entity metadata

If there is a checkbox for entity metadata, we need to understand what metadata there is for an entity.

On the entity form in the solution, the entity metadata is all the check boxes like notes, activities, queues, access teams etc.  When this gets broken down in the solution packager to an xml file you can see all these check boxes have a field and a value.

entity-metadata

When you don’t select include metadata The entity name in the entity xml element

appointment-no-metadata

If you select to include metadata you get the metadata

<EntitySetName>appointments</EntitySetName>
<IsDuplicateCheckSupported>1</IsDuplicateCheckSupported>
<IsBusinessProcessEnabled>1</IsBusinessProcessEnabled>
<IsRequiredOffline>0</IsRequiredOffline>
<IsInteractionCentricEnabled>1</IsInteractionCentricEnabled>
<IsCollaboration>1</IsCollaboration>
<AutoRouteToOwnerQueue>0</AutoRouteToOwnerQueue>
<IsConnectionsEnabled>1</IsConnectionsEnabled>
<IsDocumentManagementEnabled>0</IsDocumentManagementEnabled>
<IsOneNoteIntegrationEnabled>0</IsOneNoteIntegrationEnabled>
<IsKnowledgeManagementEnabled>0</IsKnowledgeManagementEnabled>
<IsSLAEnabled>0</IsSLAEnabled>
<IsDocumentRecommendationsEnabled>0</IsDocumentRecommendationsEnabled>
<OwnershipTypeMask>UserOwned</OwnershipTypeMask>
<IsAuditEnabled>0</IsAuditEnabled>
<IsActivity>1</IsActivity>
<ActivityTypeMask>CommunicationActivity</ActivityTypeMask>
<IsActivityParty>0</IsActivityParty>
<IsReplicated>1</IsReplicated>
<IsReplicationUserFiltered>1</IsReplicationUserFiltered>
<IsMailMergeEnabled>0</IsMailMergeEnabled>
<IsVisibleInMobile>1</IsVisibleInMobile>
<IsVisibleInMobileClient>1</IsVisibleInMobileClient>
<IsReadOnlyInMobileClient>0</IsReadOnlyInMobileClient>
<IsOfflineInMobileClient>1</IsOfflineInMobileClient>
<DaysSinceRecordLastModified>10</DaysSinceRecordLastModified>
<MobileOfflineFilters>
&lt;fetch version=”1.0″ output-format=”xml-platform” mapping=”logical” distinct=”false”&gt;
&lt;entity name=”appointment”&gt;
&lt;filter type=”and”&gt;
&lt;condition attribute=”modifiedon” operator=”last-x-days” value=”10″/&gt;
&lt;/filter&gt;
&lt;/entity&gt;
&lt;/fetch&gt;
</MobileOfflineFilters>
<IsMapiGridEnabled>1</IsMapiGridEnabled>
<IsReadingPaneEnabled>1</IsReadingPaneEnabled>
<IsQuickCreateEnabled>0</IsQuickCreateEnabled>
<SyncToExternalSearchIndex>1</SyncToExternalSearchIndex>
<IntroducedVersion>5.0.0.0</IntroducedVersion>
<EnforceStateTransitions>0</EnforceStateTransitions>
<EntityHelpUrlEnabled>0</EntityHelpUrlEnabled>
<ChangeTrackingEnabled>1</ChangeTrackingEnabled>
<IsEnabledForExternalChannels>0</IsEnabledForExternalChannels>
<HasRelatedNotes>True</HasRelatedNotes>
</entity>

In the solution file you can also see what happens when you untick

<RootComponent type=”1″ schemaName=”appointment” behavior=”1″ />

not ticked

<RootComponent type=”1″ schemaName=”appointment” behavior=”2″ />

Why and the When?

This functionality and check box was added with the subcomponents functionality.  Before CRM 2016 you added the whole entity, forms, views and everything else to a solution file.  CRM 2016.

You can only use subcomponents if the environment you are importing your solutions to includes the metadata.

In the blog post CRM 2016What’s the best way to organise solutions in Microsoft Dynamics CRM I discuss the different ways you can organise solutions.

If you choose a base solution method, you might have solutions imported into development environments as managed (to stop dependencies being created for them).   You may then build on top of the base solution in separate environment and solution.  You could add a managed entity, bring in no existing subcomponents and only add new fields.  In this scenario you new solution wouldn’t need the entity metadata because it exists in the core solution.

Conclusion

It turned out to be obvious what was happening but it’s better to confirm you assumptions and don’t give them time to cause you problems.

Writing this post has helped me think through the process of building customisations on top of managed solutions

 

CRM 2016 – ActivityParty and ActivityParty Lists

To code simply you must master complexity and break it down to it’s simpliest form #HoskCodeWisdom

Fools ignore complexity. Pragmatists suffer it. Some can avoid it. Geniuses remove it. Alan Perlis

Junior developers create many lines of code and complexity, senior developers then remove lines of code and simplify #HoskCodeWisdom 

The ActivityParty entity catches many new Dynamics 365/CRM developers by surprise because it’s an entity inside an entity.  This blog post looks at ActivityParty and some great resources to help you conquer it.

To spice up CRM development Microsoft likes to throw in a few special entities that have special powers.  Microsoft have created great documentation but then littered it around so it’s hard to piece all the useful bits together.

There are special non standard entities lurking in CRM, this can catch out new developers because they are not standard, they can also annoy some people because we can’t make them
  • Customers (which can hold accounts and contacts)
  • ActivityParty (can hold any of the activity types)
  • regarding (can hold any object)
  • Owner – it can be a user or a team
  • Address entity, it’s half on the account, contact form but you can see it in advanced finds

I got an odd error once with ActivityParty and casting

The ActivityParty is complex record,  its important to understand how it’s linked to Activities,  Microsoft have some excellent documentation here

http://msdn.microsoft.com/en-us/library/gg309626.aspx

This picture quickly summaries ActivityParty

Richard Knudson has a great blog post on ActivityParties

 

First step go to the MDSN definition

http://msdn.microsoft.com/en-us/library/gg328549.aspx

An activity party represents a person or group associated with an activity. An activity can have multiple activity parties.

Where are party lists used?  The most common area in CRM Activity Party is used is the To and From on an email.   The reason the ActivityParty is used is because an email can have multiple email addresses in the TO, CC (it’s a party of people)

Email is a easy way to understand not only how Activity Lists work but why we need them.  The TO field on an email might contain multiple email addresses.  

It also explains the name, each person on an email is an activity party and an activity party is a person or group.

As mentioned before an ActivityParty entity can hold many different entities, to see what type it is you need to check the Activity Party Type

There are 11 activity party types in Microsoft Dynamics 365. The different types are identified by the a different int value as shown below from MSDN documentation.

Activity party type Value Description
Sender 1 Specifies the sender.
ToRecipient 2 Specifies the recipient in the To field.
CCRecipient 3 Specifies the recipient in the Cc field.
BccRecipient 4 Specifies the recipient in the Bcc field.
RequiredAttendee 5 Specifies a required attendee.
OptionalAttendee 6 Specifies an optional attendee.
Organizer 7 Specifies the activity organizer.
Regarding 8 Specifies the regarding item.
Owner 9 Specifies the activity owner.
Resource 10 Specifies a resource.
Customer 11 Specifies a customer.
From the list above the ActivityParty is used with activities –
  • emails
  • appointments
  • phone calls
  • letters
  • faxes.
Not all of the Activity Party types can be used with all all the activities.  e.g. appointments have Organizers, OptionalAttendee, RequiredAttendee but this wouldn’t work with emails.

The following table lists the activity party types that are supported for each activity, and the corresponding activity properties to specify those activity party types. ActivityParty entity

Activity entity name Supported activity party type Activity attribute
Appointment OptionalAttendee
Organizer
RequiredAttendee
Appointment.OptionalAttendees
Appointment.Organizer
Appointment.RequiredAttendees
CampaignActivity Partner
Sender
CampaignActivity.Partners
CampaignActivity.From
CampaignResponse Customer
Partner
From
CampaignResponse.Customer
CampaignResponse.Partner
CampaignResponse.From
Email BccRecipient
CcRecipient
Sender
ToRecipient
Email.Bcc
Email.Cc
Email.From
Email.To
Fax Sender
ToRecipient
Fax.From
Fax.To
Letter BccRecipient
Sender
ToRecipient
Letter.Bcc
Letter.From
Letter.To
PhoneCall Sender
ToRecipient
PhoneCall.From
PhoneCall.To
RecurringAppointmentMaster OptionalAttendee
Organizer
RequiredAttendee
RecurringAppointmentMaster.OptionalAttendees
RecurringAppointmentMaster.Organizer
RecurringAppointmentMaster.RequiredAttendees
ServiceAppointment Customer
Resource
ServiceAppointment.Customers
ServiceAppointment.Resources

Reading a Resource

In this example I will be reading the resources value
 
ServiceAppointment.resources can hold multiple resources
 
the field value is IENumberable but I like to convert it into a list

List<ActivityParty> resources = (List<ActivityParty >)serviceAppointment.Resources.ToList();

On the front end resources can contains users or Facility/equipment.  For those of you haven’t used the scheduling side of Microsoft (I only know about it because you are tested on it for the applications certification and it has been useful to understand how it works as potential customers have asked about it)
 
in my example, if want to display some details about the facilities/equipment and ignore people (they don’t have exciting details!)
 
So after capturing the resources in 
 
The participationTypeMask = 10, which is a resource.
 
There are two guids, ID’s
ActivityPartyId
 
PartyId
 
The ActivityPartyID is the guid of the ActivityParty, the PartyID is the guid of the resource selected (e.g. user or facility/equipment).  
 
In my code I want to check the PartyID, see if it’s a piece of equipment (not user) and if it is lookup the details for 
For an in depth example go to
Some more useful information can be found in the links below

In Praise of the Incomplete Dynamics 365 consultant

If you’re not making mistakes, then you’re not doing anything. I’m positive that a doer makes mistakes. John Wooden

We are what we repeatedly do.  Excellencethen, is not an act, but a habit. Aristotle

During dynamics CRM projects there are many scenarios when something goes wrong.  Mistakes shouldn’t surprise us, CRM projects are complex, involving multiple people, processes and goals.

A project is organised chaos, setbacks and mistakes can lower affect the morale of the team but when mistake’s are opportunity to make strategic decisions to put the project back in the right direction, ensuring you are delivering the business goals

Don’t be surprised when mistakes happen during a Dynamics 365 project, be prepared #HoskWisdom 

Complexity 

In the excellent book The Mythical Man-month: Essays on Software Engineering Brooks challenges adding more people to a project to shorten time scales, highlighted by this quote

Adding manpower to a late software project makes it later.”
― Frederick P. Brooks Jr.Mythical Man-Month, The: Essays on Software Engineering

In the Mythical man-month Brooks discusses communication overhead, described here  Brooks Law

Communication overheads increase as the number of people increases. Due to combinatorial explosion, the number of different communication channels increases rapidly with the number of people. Everyone working on the same task needs to keep in sync, so as more people are added they spend more time trying to find out what everyone else is doing.”

Microsoft Dynamics 365 CRM projects meet project complexity overhead when a team works on different parts of a project becoming difficult to understand what other people are doing and how their information affects the CRM project.

The book The Checklist Manifesto: How to Get Things RightAtul Gawande examines complexity and knowledge.  A problem doctors face is not having the required knowledge to cure patients but understanding what treatment should be used among a list of possibilities.  The increase in medical understanding has doctors struggling to make the correct diagnoses in time.

“sometime over the last several decades—and its only over the last several decades—science has filled in enough knowledge to make ineptitude as much our struggle as ignorance.”

― Atul GawandeThe Checklist Manifesto: How to Get Things Right

Microsoft Dynamics 365 projects involve teams working on different partscollecting customers’ requirements and creating technical solution. The difficult to create CRM solutions aligned with business requirements, constraints and limitations required by the business, it’s a great breeding ground for mistakes and missteps.

Microsoft Dynamics 365 projects have many moving pieces with different directions and purposes.  You can’t focus on each piece because you need to understand the whole picture and overall strategy.  Dynamics 365 projects focus on many tasks and trying to understand the overall strategy can lead to mistakes because it‘s difficult to focus on many parts of a project with the same intensity.

Think like a datacentre

data center must not fail to keep within it‘s 99.9% uptime promise,  when failure occurs, it must recover because that what the customers pay for.

Microsoft Azure’s data centres need a strategy not to avoid hardware failure but to cope with hardware failure and not lose service.  Microsoft Azure allow you to choose different availability sets to reduce the likely hood of your servers being on the same rack, datacentre and country.

I’m not suggested you work on a project with the aim to fail but you should be prepared there will be mistakes and you must learn from them and not let mistake turn into failure.

Incomplete Leader

The article the In praise of the incomplete leader https://hbr.org/2007/02/in-praise-of-the-incomplete-leader inspired me to write a CRM version, the quote below gives a flavour.

It’s time to end the myth of the complete leader: the flawless person at the top who’s got it figured out. The sooner leaders stop trying to be all things to all peoplethe better off their organizations will be

The leader’s job is no longer to command and control but to cultivate and coördinate the actions of others at all levels of the organization. Only when leaders come to see themselves as incomplete—as having both strengths and weaknesses—will they be able to make up for their missing skills by relying on others.

Incompleteness and Dynamics 365 Professionals

Incompleteness is a fact of life in the Microsoft Dynamics CRM professional, we
  • Incomplete requirements
  • Incomplete solutions
  • incomplete code
  • Incomplete knowledge
  • Incorrect estimates
  • incomplete knowledge of the project due to communication overhead issues + time issues

Customers expect dynamics 365 consultants and developers to be experts Microsoft Dynamics 365, Dynamics 365 professionals expect customers to be experts in their business, capturing their requirements, limitations and complexities of their business.

There is too much to knowtoo many distractions, not enough time in an IT project.  During a project mistakes are likely, we can miss something, not collect all requirements and there is plenty of scope for misinterpreting the requirements.

We shouldn’t be surprised when things go wrong or off track because this happens with people, complex requirements, complex solutions.

Two things are important

  • communication
  • relationships

When you add the two factors together you get collaboration.  Collaboration is a vital ingredient to a successful project and if you have worked on an unsuccessful project, you will find problems in the relationship and communication which created an environment ineffectual collaboration

Internal collaboration

CRM professionals won’t know everything individually, to be effective you must use the experience, knowledge and ideas of your colleagues.  The size and breath of CRM and related services means no one CRM professional can have deep knowledge of all new CRM features and new products.

Group knowledge/experience is key to delivering projects which don’t implement customisation not suited to the business requirements or might cause problems later down the line.

One attribute of CRM professional is to know when to get help or delegate part of the project to someone who specialises in that area.

Four Capabilities

leadership as a set of four capabilities: sensemaking (understanding the context in which a company and its people operate), relating (building relationships within and across organizations), visioning(creating a compelling picture of the future), and inventing (developing new ways to achieve the vision).

Sensemaking

Business requirements must always drive solutions, if a CRM solution is not aligned to a customers business needs it won’t make a significant impact or deliver significant gains to the customer.  When gather requirements the key is to ask the right questions, to do this you have to understand the context of the company and how it operates.

Microsoft Dynamics CRM has generic functionality for sales, marketing, case management etc, most companies do not have generic requirements.  Companies want you to tailor the CRM solution to fit their individual way of working and their particularly business needs.

When gather requirements you must constantly relate them to the companies needs, goals to ensure you solution makes a business impact.

When demoing functionality the CRM professional must simplify the functionality to enable the user to understand what it does and how it works.  On the other side try to get the business users to simplify their requirements and remove any ambiguity.

Sometimes it‘s a case of the CRM professional keep working, understanding the business will help you understand the business requirements.  When you understand the reason behind a business requirement it‘s easier to understand and explain to other members of the team.

Relationships

A successful project builds on the foundation of a good working relationship between the users and the CRM professional.   During the project you spend time asking the team to do things for the project, the better your relationship the quicker and better the users will carry out those tasks.

The key to building a good relationship is to understand the users perspective and present information so they can understand it.  Encourage input and listen to their options.  Successfull projects are collaborations between the user (business knowledge) and the CRM team (technical CRM knowledge).  Unsuccessful projects occur is when one side is to dominate or doesn’t listen to the other sides opinion.

The article called the key point is you when you understand where the user is coming from you can relate to their business requirements and functionality needed.  CRM professionals will find customers can find it hard to relate to Microsoft Dynamics 365 functionality you should use the customers business language and terminology to help visualise the solution.

Solutioning

You gather requirements, user stories which you use to create a solution.  The features of the solution must be easily traced back to the business goals/objectives.  When creating a solution create a compelling vision of the future and sell this to the customer, they must believe this will make their working life better by helping them to their job more effectively.

When creating the solution get input from the business and technical experts with deep knowledge of Dynamics 365 functionality.  Feedback from business users and technical experts is vital at these stage, you must find flaws and problem areas.  A useful tool is a premortem where you predict the source of problems with the solution and investigate it.

The problems you find in the designing the solution are easier to fix before you started creating the solution.  Problems you find later means rewriting code or reworking a customisation as well as designing an alternative which fits the constraints of an existing solution.

Don’t let bugs get into production environments

Delivering

The customer needs to be prepared for the incomplete solution, it‘s this time when missed requirements, incomplete requirements and misunderstood requirements can distort the solution to not forefill the customers requirements.  Mmisaligned solutions are often assumptions not fully questioned.

A key part of delivering is to make sure the users get trained on the new system, customers can get frustrated and annoyed if they don’t understand how to use it.  The new system instead of helping them do their work, hinders the user because they can’t do something or it takes longer than the old familiar system.

Conclusion

Successfully delivering a project is an art not a science, you will make mistakes along the way.  A team delivers a project and the more people you have contributing the better it will be.

Projects must relate to the business goals, processes and the people who work there.  When project teams focus too much on technical solutions they can lose sight of the real purpose of the project and the CRM solution, help users archive business goals, which helps the business execute it‘s business strategy.

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

If someone does make a mistake, make sure they get given the Fail Fairy – The Fairy of failure – Who broke the build