CRM 2016 – Release management, Solution packager and why you should automate your deployment

I have always found that plans are useless, but planning is indispensable.

–Dwight Eisenhower

I found this articles on Microsoft Dynamics CRM and the application life cycle, I thought I would share them.  These

Deployment best practices

The articles above got me thinking about the CRM deployments best practices but which focuses on manual deployments and the best practices involved with that.

Another consideration is organising your solutions – CRM 2016What’s the best way to organise solutions in Microsoft Dynamics CRM

make surec ustomizations are kept at a high standard

Here are a few bet practices to follow
  • ID on lookups
  • early binding
  • Unit tests
  • never change production
  • CRM Configuration mover
  • Automate where possible

Automate your deployments

When I wrote the article on deployment best practices I only worked on projects which deployed projects manually and I had no experience with the solution packager.

I believe automating the deployments would be the best practice because manual deployments are

  • Manual deployments are boring
  • Manual deployments take a lot of time
  • Manual deployments can go wrong due to use error
  • it‘s a waste of developer
  • More environments more time wasted

The question CRM developers should ask is why are most CRM projects not using the solution packager?, it‘s best practice, it saves time, fewer deployment mistakesso why isn’t it standard practice.

Companies and project managers don’t give time for the team to learn and setup the solution packager because it‘s time spent on infrastructure with no business value.  Setting up the solution packager for Dynamic CRM projects is short-term pain for long-term gain.

The solution packager allows you to commit your customisations into source control because it breaks down the customisations into xml files.

One of the reasons I moved to Capgemini is because they have a DevOps team for Dynamics CRM projects.  Capgemini focus on delivery high quality large difficult projects, to do this you need to think long-term, focus on keeping quality of customisations high, keep technical debt low and automate where you can.

Now I have worked on a project with DevOp, the solution packager, continuous integration I am of the opinion all Enterprise CRM projects should have this setup.

Having a dedicated DevOps team or someone who has learnt to use the solution packager and creating builds will help the process.  Building automated build environments takes experience and the job falls to a developer they will take time to get up to speed in the same

Benefits of the Solution Packager

The solution packager is a powerful tool which can automate importing solutions between environments but it has a number of other useful benefits.

Automated deployments

Importing solutions is a boring and time consuming which should be automated to not waste developers time, allowing developer to concentrate on creating customisations.

If you can automate a boring task then you should automate it #HoskWisdom

The solution packager enables scripted automated deployments and some other benefits

Track changes

The solution packager gives you control and visibility on what changed, who changed it, what it was for and when.  The solution packager shows CRM changes, including customisation change (form, fields, views) gives visibility of those changes.  This enables CRM developers to check in changes to tasks and stories

Data

The solution packager can be scripted and incorporated in builds using Visual studio Team Services (VSTS).  Automating the build processs allows data to be imported into different CRM environments (a step which is often missed or done incorrectly).  Automating data import keeps the guids the same between environments.  CRM 2016The importance of keeping the same guids between CRM instances

Solution Packager articles

Here is a collection of Solution packager articles if you want to learn more

Conclusion

The article started out with links to the ALM – CRM lifecycle but morphed into clarifying the purpose and benefits of using the solution packager to automate solution deployment.

The solution packager allows automated builds/continuous integration which can save time and reduce import errors.  The solution packager breaks down CRM customisation to XML files which can be checked into source control (VSTS/GIT) and linked to individual tasks and stories.

Solution packager isn’t easy to configure but the benefits are worth it, companies and projects should see it as an investment in quality, long-term benefits which pay dividends on large CRM projects.

 

Advertisement

Programmers imagine #NoEstimates

Estimates aren’t bad, but there usage is #NoEstimates #HoskWisdom

Estimates are often incorrect, a waste of time and misused, why do we bother #NoEstimates #HoskWisdom

I heard the words today – Imagine a life with no estimates, for a developer this is a radical idea, particularly if you consider most developers have been beaten with an estimate at some point.

The word imagine instantly made me think of the John Lennon song Imagine

I progressed to imagining the song with the lyrics changed to focus estimating or #NoEstimates, I have done something similar in the blog post Why CRM Developers should always start with the CRM SDK changing Gunnery Sergeant Hartman: Pray! to focus on the Microsoft Dynamics CRM SDK

CRM developers: [chanting]

This is my CRM SDK. There are many others like it, but this one is mine. My CRM SDK is my best friend. It is my life. I must master it as I must master my life. Without me, my CRM SDK is useless. Without my CRM SDK , I am useless.   I must development with my CRM SDK true.  I will.

Before Hosk I swear this creed: my CRM SDK and myself are defenders of my CRM Solution, we are the masters of the CRM Solution, we are the saviours the CRM Solution. So be it, until there is are no bugs, but peace in CRM dev land. Amen.

 

Here is Imagine no Estimates

Imagine there’s no Estimates
It’s easy if you try
No reports to management for us
Above us only sky
Imagine all the programmers
Writing code for today… Aha-ah…

Imagine there’s no deadlines
It isn’t hard to do
Nothing to deliver late for
And no requirement changes, too
Imagine all the programmers
Writing code in peace… You…

You may say I’m a dreamer
But I’m not the only one
I hope someday you’ll join us
And developers will be as one
(expect arguing about which programming language is best)

Imagine no documentation
I wonder if you can
No need for Word or Powerpoint
A brotherhood of devs, man
Imagine all the programmers
Sharing all their code… You…

You may say I’m a dreamer
But I’m not the only one
I hope someday you’ll join us
And the programmers will live as one

image from here

Will Dynamics 365 redesign Microsoft Dynamics CRM Online?

Start where you are. Use what you have. Do what you can. Arthur Ashe

Your life will not get better if you don’t move from where you are #HoskWisdom

With the imminent release of Microsoft Dynamics 365 (Dynamics 365 is coming and why you need to be ready) Microsoft is making significant step forward.  I looked at my draft blog posts and found this blog and it seemed an interesting time to publish it.

Dynamics 365 gives Dynamics professionals a time to reflect and ponder the future and the past of Microsoft Dynamics CRM.  Microsoft is removing the faithful CRM from the product, it’s a distinctive move.

Dynamics CRM moves to the cloud, will Microsoft redesign the architecture of Dynamics 365 to a cloud solution and utilize Azure and scalability. Is the one database design creating a bottle neck in performance?

If evolution really works, how come mothers only have two hands? Milton Berle Microsoft Dynamics CRM has evolved at a frantic …

The post was inspired by a response to the blog post The rise of Microsoft Dynamics CRM and a response from Andrew

That’s a great summary. Have been on the CRM journey since being early adopter of 1.2 in the UK. I do wonder if Microsoft need to take a step back and consider the whole product as its rapidly becoming an unmanageable scattergun collection of products..

Fixing some of the really annoying, and in most cases very well established issues in the product that make users stare at you in that ‘are you serious’ way would help.

Bolting several varieties of UI together, new, old an positively ancient makes for a confusing collection of experiences. Lookups that require many mouse clicks to get to the entry you want, the fact you still can’t return a count of how many records you have due to how database, security and localisation conspire against you to kill performance – and sure everyone has some other feature they wish would get sorted.

Don’t get me wrong, overall it’s a great product but stapling on newly aquired functionality at a rate of knots isn’t sustainable.

CRM needs to evolve into a new platform – probably not called CRM as even its name is a distraction.

Take the good stuff, turn it into a cloud based platform then add a modern, mobile first, cross platform adaptive UI and allow us to add or remove stuff so you get the system you actually need minus clutter and bloat. If I am never going to use marketing, or finance entities, allow that.

CRM should then be just one of a number of Dynamics products that sits on the platform. If I need accounts let me add modules from a proper accounting solution, or elements of ERP, or an Event Management solution – all modular, extensible and integrated.

The other core feature that’s needed is inbuilt integration and Master Data capabilities. I should be able to define one instance of contact, address, and account and share across multiple applications. Single version of the truth.

It will be interesting to see how things evolve as it moves to an inevitable cloud only model – looking forwards to the journey..

Thanks for a great blog…

CRM Architecture

The CRM SDK architecture page is a great resource to understand the architecture of Dynamics CRM

this picture explains the architecture, showing the moving parts along with the order and flow of Microsoft Dynamics CRM.

How did the original CRM Artchitecture come about?

Microsoft Dynamics CRM is one product made of multiple Microsoft products knitted together.  The programmer in me thinks this is good design, splitting up the solution into logical parts.

  • CRM is made up of many separate parts
  • Active Directory
  • Microsoft SharePoint
  • Reporting Services
  • Microsoft SQL Server
  • Internet Information Services
  • Active Directory Federation Services – ADFS – for expose CRM to the web
  • Microsoft Exchange

The reason for using these separate parts is they are Microsoft products and it made sense to use existing products and delegate responsibility to products and service which specialize in.

When CRM was released cloud solutions were not popular, common or achievable (no Microsoft Data centres).  It made sense for Microsoft to use it‘s own products because it could then persuade people to buy more Microsoft products or integrate CRM with existing Microsoft products a customer already owned (Exchange, Active directory, etc)

CRM evolving

In the article The RISE OF CRM, Microsoft has upgraded the CRM front end making it look better.

The new forms is so they compatible with Microsoft mobile friendly functionality such as Business rules and Business Process flows.

Microsoft Dynamics CRM 2016 has new forms mixed in with old forms.  I learnt this when investigating why I couldn’t add a business rule to the article entity – Why can’t I add a business rule to the article entity and in this article – CRM 2016 – How to rename the default business rule

Architecture

There is a great comment in this article comparing Microsoft Dynamics CRM and Salesforce

Since its day one, Salesforce was designed as a cloud based application with design features optimized for a browser experience not a desktop program experience.

Microsoft created Windows-style drop down menus within its CRM tool and has modified the look and feel dramatically. This gives customers a common user experience across different Windows products and its web-based CRM tool.
The article discusses how products evolve and where you need to stop refactoring and start again.  Starting again and focusing effort on a better long-term strategy is where Dynamics 365 is at.  Creating Dynamics 365 using an app approach or Microsoft services structure will allow Microsoft to stop wasting time and money developing multiple products and instead develop shared services.
The POA (Principle object table) is a constant cause of Microsoft Dynamics erformance problems and I wonder if Microsoft started again would they design the database tables to force security privileges to use one table.   Recent security enhancements tried to work round this with Access teams adding security to teams instead of individual roles.

Where are we

Joel on Software’s article on why you should rewrite/refactor products Things You Should Never Do, Part I recommends you think before you recreate something because it’s easy to underestimated the complexity of the product.

Microsoft Dynamics CRM has a front end with a mixture of modernized forms and old CRM 2011 form style (5 years old).

The architecture wasn’t designed for the cloud.
CRM online can be painfully slow read this
Microsoft cloud solutions needs CRM solution architects to change the way they design solutions, plugins have a limit of two minutes, so you need to do these long running processes in an
When I attended on the Azure architecture training, it opened my mind to the fact as solution architects we biased by old designs.  There are lots of different databases in Azure which can be used in different scenarios.  hey mentioned Amazon shopping basket using a document storage database for it.
I wonder if the single database is a bottle neck for performance, too much table locking with relational databases
Will a common data model help resolve this problem – Powerapps common data model

Conclusion

The article raises questions on the architecture of Microsoft Dynamics CRM, most of them related to the technologies used to create Microsoft Dynamics CRM Online.  Will Dynamics 365 resolve any of these problems?
Will the promise of Dynamics 365 be realized by the performance and functionality of Dynamics 365.
Is Dynamics 365 a great rebranding or will it be a real game changer which tackles the problems Microsoft Dynamics has and creates an environment where integration is a priority.
Dynamics 365 brings enhanced functionality, cheaper prices and greater integration.  Is this the time Microsoft Dynamics makes a decisive move against Salesforce.

Birmingham Dynamics Crm User Group has started – Join now

Unity is strength… when there is teamwork and collaboration, wonderful things can be achieved. Mattie Stepanek

 

I got an invite to the Birmingham Dynamics CRM User group, which I accepted thinking it would be great to meet Dynamics CRM\Dynamics 365 users in the Midlands area.

Exchange ideas, hands on sessions, discuss new features\functionality etc.

After my invite was accepted I was then asked if I wanted to pick a topic and present at the first session!  We shall see about that but it’s a great opportunity for the growing number of Microsoft Dynamics CRM/Dynamics 365 professional in the Midlands area to meet up, share ideas, experiences and knowledge.

 

Question – Why should I join?

Answer – You can meet and collaborate with Dynamics CRM\Dynamics 365 professionals in the West Midlands.  This can build your network (Networking can help with job opportunities)

Question – Why meet up in person, everything  online these days isn’t it?

Answer – When you meet people you can build a rapport and you might be working with some of these people in the future.  If you attend a session in person then you can ask questions to the speaker, to other members attending.  Learning and understanding often is better explained in different ways by people with different skills and experience.

Socializing and meeting people is fun and great discussions are often not the discussions are often not scripted or pre-determined but the ones which happen from just talking.

You will meet great people and learn about Microsoft Dynamics CRM\Dynamics 365, awesome

Question – What CRMUG they have great meet ups in the UK?

Answer – Yes you are correct (although the Hosk has never been, people have told me they are excellent) and there is one on the 23rd November in Reading.  If you don’t know about CRMUG read CRMUG FAQ or What is CRMUG? Should you join?

CRMUG meetings are usually held around London or Reading, the Birmingham Dynamics CRM User group is based in the West Midlands.

Question – How do I join?

Answer – That’s the spirit , go here and click the Join us! button

join-now

Question – Any other reason to join?

Answer – Yes you get the Marvelous Hosk

response – Wow that’s awesome, wait why are you having an email discussion with your pretend self

Hosk – I have no idea, I’m going to end this blog post and look to see some of my blog readers in person at the first meetup of the Birmingham Dynamics Crm User Group

Image from here

Dynamics 365 is coming and why you need to be ready

The Dynamics 365 winter is coming, so get your big coat on #HoskWisdom

The imminent release of Dynamics 365 brings forth a big change in the Dynamics landscape (we are losing CRM – what should I call my blog now!) the Dynamics CRM community is heading for a big change.  Change brings opportunities to those ready to take advantage.

This blog posts highlights interesting blog posts on Dynamics 365 and my views on why Dynamics 365 is a step in the right direction.

Change

Time and tide wait for no man and bugs and builds wait for no developer #HoskWisdom

Working with Microsoft Dynamics CRM has involved working with constant change and an evolving product, discussed in The rise of Microsoft Dynamics CRM.

The Dynamics CRM product has evolved at a rapid rate and Microsoft has tried to speed up change by purchasing products which can augment existing functionality in Microsoft Dynamics CRM.

Microsoft’s success with integrating external products and services has been hit and miss.  Some purchases looked doomed to failure at the start

  • Parature
  • MDM
  • Social Engagement (with persistence it might work but with a lack of demo’s available it hasn’t got much traction, experienced users or positive sentiment)

Microsoft slow integration with these products made it difficult to use the products with Microsoft Dynamics CRM.

Great article on MDM and Microsoft Adobe cloud – Dynamics 365 and the Adobe Marketing Cloud

The successful companies Microsoft integrated

  • FieldOne (now FieldServices)
  • ADX Portal

A couple of companies I think Microsoft should purchase are ClickDimensions and Resco.   Fantasy Sales Team is OK and after working with FieldOne (FieldOneMobile app thoughts, problems and solutions) purchasing products with existing integration with Dynamics CRM is a more successful strategy.  Fantasy Sales Team isn’t a failure but gamification is not a mainstream product and many question gamification – Is Gamification in a Microsoft Dynamics CRM a gimic?

This blog post summarizes the Dynamics 365 acquisitions

Dynamics 365 – Acquisitions that Made the Cut, or Didn’t

Will the expensive purchase of LinkedIn be successful

Microsoft buys LinkedIn – What you need to know

Microsoft’s development of Microsoft Dynamics CRM and purchasing products has made life more difficult and interesting whilst you struggle to keep up with the rate of change.  I admire Microsoft’s ambition and drive to improve Dynamics CRM at a rapid pace and close the gap with SalesForce.

Dynamics 365

Now we arrive at Dynamics 365 with Microsoft looking to create a new platform integrating CRM, ERP and field services.  A big move dropping CRM from the title and moving towards business applications and a more app/micro services architecture.

Some articles to get you up to speed with Dynamics 365

Dropping the CRM name is a good move because most of the projects I have worked on have used Dynamics CRM as a development framework to deliver XRM solution.

Why is Dynamics 365 important

Integration between Microsoft Dynamics products is painful, hopefully Dynamics 365 can help this pain go away #HoskWisdom

The integration between Microsoft products is painful, complicated and difficult.  Complexity is inherent in syncing records using different data models and functionality.

Customer expectations are a problem with customers expecting synchronising two Microsoft products is easy, the reality is you are syncing two different products created by separate teams with little thought to integration.

One of the fundamental problems trying to sync CRM and AX/NAV is the different data model used by CRM and AX.  AX tends to have more complex data model around quotes, products, orders and invoices and there is no easy way to sync them.  The only real solution is to to recreate the AX\NAV functionality in CRM which is difficult and costly.

Integrating CRM/AX is like trying to cast a double into an int (AX the double, CRM the int) and you will lose information

Integration using a tool or Azure service bus takes considerable development with little customer pleasing front end functionality.

CRM and ERP

Projects which need both ERP and CRM functionality need to answer this question

Do we need two different products or can we deliver the project using one?

Then

Is the cost of integrating ERP/CRM more than the cost of developing the functionality in either CRM  or ERP (NAV/AX).  The common problem Microsoft is tackling is having separate products under the Dynamics umbrella which share some functionality but different data models and functionality.

Microsoft found themselves in a difficult situation of having two products with with overlapping functionality but strengths in different areas. Should they develop the functionality in the separate products or  push users into buying separate products?   Microsoft provided no easy or cost effective way to integrate the products and they chose not to develop functionality held in the separate products.

Scrum has a concept of inspect and adapt, looking at the past and changing your process/products to use the feedback.  Microsoft has decided to create Dynamics 365 and use a shared data model and put integration at the heart of the solution.

Dynamics 365 is an integrated framework where CRM, ERP, FieldServices, sales, marketing can work in one integrated platform, Dynamics 365.

Dynamics 365 will allow Microsoft to invest in developing services to be used in Dynamics 365, develop once and use by Dynamics 365, instead of developer in either Microsoft Dynamics CRM or Dynamics NAV/AX

Advantage over Salesforce

Salesforce lead the CRM market and Microsoft Dynamics CRM creating a leading cloud solution, Microsoft created Dynamics CRM using it’s existing products (AD, SQL Server, IIS, Outlook, SSIS) and has slowly moved them to a cloud service.

Salesforce got in first and built up a big customer base whichI view in similar way to next generation console releases first (PS4 versus XBox One).  Dynamics 365 see’s Microsoft creating a service which can compete with Salesforce with these advantages

  • Dynamics 365 can help Microsoft to create real ISP for Microsoft, the ability to integrate CRM and ERP functionality together in one environment is a real selling point.
  • Microsoft Dynamics has LinkedIn integration coming
  • AI integration is improving

Microsoft is starting a price war with Salesforce on the 1st November

Microsoft will launch its price war with Salesforce on November 1

Interesting things to end

In the past I have followed twitter

  • #Dynamics2016
  • #msdyncrm
  • @msdyncrm

you can now follow

  • #Dynamics365
  • @MSFTDynamics365

Conclusion

The Dynamics community is a mixture of excitement and trepidation when Microsoft releases new Dynamics products or updates   Microsoft has a history of half releasing functionality (CRM 2013) and buying products and not integrating them.

The move towards Dynamics 365 is a logical restructuring of products to create a flexible framework to deliver business applications with the ability to add modules of functionality where needed.  Dynamics 365 is a cloud framework which moves towards an app architecture.

  • Dynamics 365 is a rename and re-branding to focus on business applications
  • Dynamics 365 should makes it easier to integrate AX and CRM functionality
  • Dynamics 365 looks like it will be cheaper than purchasing multiple products
  • Dynamics 365 will be the hub between many services and applications
  • Dynamics 365 is coming whether you are ready or not, so do yourself a favour and be re

Shark image from here

The Fairy of failure – Who broke the build

fairy-of-failure

But man is not made for defeat. A man can be destroyed but not defeated. Ernest Hemingway

One of the reasons I am enjoying working for Capgemini CRM team is the projects have a DevOps team and we have continuous integration. It’s so awesome to have check-ins triggering automatic builds which verify your check in has not broken anything.  Quick continuous feedback gives confidence in the validity of the CRM solutions.

Continuous integration

We have lots of builds being regularly kicked off and we have regular builds to move the latest code into the CI environment, enabling us to test our code in a shared environment.

The more often you build the quicker you find problems and with smaller changesets

The Devops team have created dashboards for the different scrum teams, allowing the development team to check the build is good and the build is green.

build

You may notice we have gone for the solution structure of customisations, plugins and workflows.  Which is the solution structure I prefer, which I have discussed in this post

CRM 2016 – What’s the best way to organise solutions in Microsoft Dynamics CRM

Build breakers

When you have a lot of builds you have developers who break the build.  These build breakers must be publicly shamed.  Making mistakes when you are trying new things is fine, often mistakes are caused by bad processes and systems – take ownership for what you do

Mistakes caused by laziness need to highlighted so the team knows someone has been slacking at work

Many developers are asleep at the keyboard of development #HoskWisdom

To help with the public shaming of build breakers I have brought in the fairy of failure which gets awarded to the developer who

  • Breaks the build
  • Makes a schoolboy error
  • forgot/couldn’t be bothered to do something

It was the fairies first day today and she has already been sitting on two different developers monitors and it was quite amusing shouting FAIRY at a developer today.

If development isn’t fun, you are not doing it right #HoskWisdom

 

 

Extreme ownership – taking ownership for what you do

IMG_20181021_172339
“There are no bad teams, only bad leadership” Jocko Willink, Leif Babin
Own your actions and take responsibility for them – HoskWisdom

The book Extreme Ownership is written by two Seal officers and the core message is leaders take extreme ownership and responsibility for the actions of their team.

by Jocko Willink (Author), Leif Babin (Author)

There are some great quotes in the book which I’m sure many readers can empathize with

“If I shouted less and encouraged more, my team would have done better

I believe in encouraging effort, skills and ability can be learnt but without a person putting in effort nothing gets done.    Instead of criticizing, shouting or blaming individuals you should focus on encouragement and how people can get better.

Humble

“I had to take complete ownership of what went wrong. That is what a leader does — even if it means getting fired. If anyone was to be blamed and fired for what happened, let it be me.”

The leader must take responsibility for the teams actions.  If someone checks in bad code this is because the person felt it was OK.  If the quality of someone’s work isn’t good enough, it‘s because you have explained the standard you expect.

Implementing Extreme ownership requires checking your ego and operation with a high degree of humility.  Admitting mistakes, taking ownership, and developing a plan to  overcome challenges are integral to any successful team.  Ego can prevent a leader from conducting an honest, realistic assessment of his or her own performance and the performance of the team. Jocko Willink

Standards

“When setting expectations, no matter what has been said or written, if substandard performance is accepted and no one is held accountable — if there are no consequences — that poor performance becomes the new standard. Therefore, leaders must enforce standards.” Jocko Willink

This is true for development if you don’t define the standards you expect or if you let people developers check in lower quality code, this will become the norm and other developers will follow suit.

It‘s not what you preach, it‘s what you tolerate Jocko Willink

Developing CRM customisation should focus on keeping the quality high

 You are responsible

The key message in the book is extreme ownership and you are responsible for the work produced by the team you work in.

You collaborate with other people and teams, sometimes the quality of work or the the time taken to produce the work can have a negative effect on the project.

It‘s easy to place the blame on other people and think you have done your work so the blame should be attributed to you.  Extreme ownership says you should take responsibility for any work you have worked on.

If you are the leader of a team, you can ask yourself could you have done better.  Could you

  • Explained things clearer
  • helped others resolve their pain points
  • given more help (resources, knowledge)
  • can you work differently to help others to their part of the work

If some part of the project is not working you should think what can you do better to help the team work more effectively because you are responsible for delivering the project and how can you do that better.  You might be working with other people but you should take responsibility of the work done.

When people make mistakes it’s not usually the person who is at fault but the system which let them make a mistake.  The problem is not with the person but inherent in the systems and processes.