Advice on improving as a Microsoft Dynamics 365 developer

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

Ask the Hosk questions

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

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

The CRM Forum

I would recommend raising a question in the CRM Forum

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

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

CRM forum

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

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

Question – Transition to Microsoft Dynamics is tough

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

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

 

I didn’t answer so he reverted to flattery

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

It worked!

Help yourself

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

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

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

 

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

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

Consultant or developer?

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

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

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

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

Consultant skills

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

Developer skills

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

Do everything average or a few things well

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

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

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

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

Developer path

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

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

No shortcut in become a Dynamics developer

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

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

Start with the CRM SDK

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

Known as Chauffeur knowledge

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

If you want to improve read books

read the articles below

Advertisement

Meet great Dynamics 365 people in London 21st November 6pm

I am convinced working on enterprise IT projects is for madmen, and I must be one of them #HoskWisdom

My favourite type of person, is a Dynamics 365 person #hoskwisdom

The Hosk is going to the a meetup in London tomorrow to meet like minded Dynamics professionals, so if you are in the Greater London area please come along

You can hear some live HoskWisdom or hear me talk about how the Capgemini Dynamics team deliver enterprise Dynamics 365 projects

The Capgemini Dynamics 365 DevOps

How we are bringing the best practices from software engineering to Dynamics 365 development

or

just talk about Dynamics 365 development and have a few beers.

It’s a chance to meet the Hosk and say, hmm I thought you would be taller or you are more hairy in person.

If you live in London and love Dynamics 365 or writing code, come down the pub for some drinks, food and networking courtesy of hunters recruitment

 

How to evaluate job offers for Microsoft Dynamics 365 roles

IMG_20181021_165309

Your work is going to fill a large part of your life, and the only way to be truly satisfied is to do what you believe is great work. And the only way to do great work is to love what you do.

Steve Jobs

 

It‘s likely as a Microsoft Dynamics CRM professional you will move jobs several times, particularly with recruitment consultants on LinkedIn sending potential jobs to CRM professionals on a regular basis.

What should you consider when evaluating job offer’s, why should you take one job offer over another?

Moving

We keep moving forward, opening new doors, and doing new things, because we’re curious and curiosity keeps leading us down new paths.
Walt Disney

In this article Job Hopping Is the ‘New Normal’ for Millennials: Three Ways to Prevent a Human Resource Nightmare has a great quote

Ninety-one percent of Millennials (born between 1977-1997) expect to stay in a job for less than three years, according to the Future Workplace Multiple Generations @ Work” survey of 1,189 employees and 150 managers. That means they would have 15 – 20 jobs over the course of their working lives!

The Dynamics recruiters Nigel Frank do a survey of Dynamics professionals every, it has a lot more detail than just the average salary Dynamic CRM Salary survey 2016

34% plan to leave their current job within 12 months (if you listen carefully you can hear recruitment consultants cheering)

34.3% said the reason to move job was lack of Leadership & vision

You need to manage your own career because it‘s unlikely you stay at one company for your whole career you can’t let your employer manage it.  The question of who you work for? is important because you work for yourself and you should ensure you are doing what’s best for your career. 

Identify your dream job and work out

  • What skills and experience do you need for that job
  • Who do you need to network with
  • What is the career path to get to the dream job

People struggle to come up with an answer or don’t know their dream job, it‘s difficult but you should persist., this questions can help

  • What roles have you enjoyed working in?
  • What roles don’t you like?
  • What have you enjoyed doing in your job?
  • Do you like the technical side of Dynamics CRM jobs e.g. coding?
  • What job do you see yourself doing in 5 years, 10 years?

here is a list the common Microsoft dynamics CRM roles, do any appeal?

Senior/Lead Developer
Consultant
Solution Architect

You will need to climb the ladder of Junior, standard and senior for most roles.

The more thinking you do the closer you get to understanding what you like and don’t like and what your dream role will involve doing.

Once you identify your dream job you can work backwards and plot your route and make a plan.  You can use this information with you current employer and work out ways they can help you get the relevant skills and experience in your yearly appraisal.

When you know you perfect job, you can focus your time and effort in moving towards that role.

Don’t just move for more pay

You should know the average wage for your current position and the wage for roles you applying for, knowing the average wage is a useful bargaining tool to take into your review.  It gives an anchor to the discussion and offers an impartial view of an average wage in the industry.  If you move somewhere which is paying below the market average then you could get more if you moved somewhere else.

Money is important and you should make sure you are getting the going rate for you position but money won’t make you happy in a role.

Money isn’t the most important factor, unless you find out someone in the company is getting paid more than you for the same role #HoskWisdom

 

Money will stop motivating you and there are many other aspects of the jobs which can make work enjoyable.  

You are at work at least 8 hours a day, you should try to ensure you are doing work you enjoy.

What to consider on job offers

When you have a job offer(s), compare the job offer(s) with your current job.  I like to make a list of the pro’s and the con’s of each position and give them a value between 1-10.   I use a general list (below) and add extra points if they are relevant.

I use a list because it allows you to compare different roles using the same criteria and give more points to factors which are important to you.

This list below is useful as a guide to help you create some questions for the company before your interview.

Job role

Role is important because what you will do and the experience you will get from the role.

Salary

compare salary and benefits

Career progression

What is the potential for career progression, what is the companies view of promoting internally.  How do your bosses see your potential and future at the company.

Experience

What experience will you get in the role, what projects you will be working on.   Experience can be measured on project size, role, technologies used.

Culture

What is the culture of the company? does it fit with how you like to work and your values.

Location

Location is important because if you can reduce commuting time you will save hours of your life you can spend with your family, friends or doing something else

Company size – Pond size

Do you want to work for a big company or a smaller company?  This will effect your impact on the company, in a small company you will have responsibility because there isn’t anyone else to do it.

Larger companies have bigger resources and usually pay better but you might have to accept you are a smaller fish in a big pond.

Structure

How is the CRM team structured?

Learning potential

What is the potential to learn at the company?  Is there training material, will you go o n training courses? are there senior CRM professionals for you to learn from?

This blog has some other factors to consider

16 Factors to Consider When Comparing Two Or More Job Offers

You can add other points to consider, the list above its a list to start with.

List done, then what?

Once you have created the list you should have a score for each role and this can give you something to think about.

I recommend sleeping on it and looking at the results of the list again the next day.

Do some research on the company and see if anyone in your network has worked there or is currently working there, they will be able to give you a first hand account of what its like.

Talk the decision through with other people in your network, other people can often give you a considered opinion and can often give you a different perspective on your different options.

Finally

Finish a role the same way you started the role with enthusiasm and effort.  You will be asked for a reference and you may work again with the company or quite likely with some of the people from the company.  People who leave jobs badly are not easily forgotten

Why do people stay in boring jobs?

 If you are going for an interview make sure you read the blog post below

Microsoft Dynamics CRM Developer Interview Questions

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

I never learn anything talking. I only learn things when I ask questions.

Lou Holtz

 

Welcome to a new episode of Ask Hosk, where I answer a Hosk CRM readers question.

Ask the Hosk questions

If you are going to ask me a question please be polite, it will increase your chances of me answering your question, don’t forget to say how much you like my blog (that really increases your chances of getting an answer).

Take into account I’m a busy Hosk, I work, I have 2 young children, a wife and sometimes even get to chill out or play football.  Sometimes I could be too busy to answer your question quickly.

I won’t always know the answer to your question, if I haven’t read about a topic or got any experience in the topic I can’t give a good answer.

The CRM Forum

Instead of asking individuals a question I would recommend raising a question in the CRM Forum, for these reasons.

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

A bonus reason to raise the question on the forum is after you have raised the question on the CRM forum, you can email me and ask me to look at the question.

CRM forum

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

The CRM forums are a great way to learn CRM, you can see common questions raised by CRM users and the answers from CRM experts.  I answered over 400 forums questions and learnt a lot and helped users in the CRM community.

Previous Ask Hosk Questions

Question

Good day to you. I have been reading your post at

CRM 2013 – Businses rule workings, limitations and exam notes

I am quite new to Dynamics CRM so please excuse me, but i am trying to do some business rules for the Articles entity but the option is grayed out. Furthermore when i go to “Customize Entity”, under the Articles entity there is no Business rule option. What am i missing here because according to your post it seems that business rules are available for all entities whether default or custom.

Hosk Answer

This was an interesting question and I’m not sure of the answer but I can put my best guess.  I had seen something system entities before either in a blog post or study for the customisation and config exam, when I mention system entities I am referring to entities which you cannot edit like SystemJob

The first task is to make sure I couldn’t add a business rule, make sure the user was looking in the right place and it wasn’t a permissions issue. NEVER ASSUME THE USER IS NOT DOING SOMETHING SILLY, check the silly things and cross them off.

The article entity is not your standard entity because there are lots of things greyed out

Article Entity question

Notice there is no option for business rules, it seems the Hosk CRM blog reader was right

Article Entity question 1

I was searching through my entity related posts to see if I had the answer

Then I found some answers in my CRM 2013 – entities and fields revision page (highlighting why doing the customization and configuration certification has value)

This gave me some interesting limitations/facts about entities

  • Microsoft Dynamics CRM default instance starts with more than 260 systems entities but which many are hidden from the UI
  • There are two types of entities – Custom entities and system entities
  • More than 90 system entities can be customized
  • Some system entities cannot be customized e.g. system job
  • Entities which can be customized (system and custom) are known as customizable entities
  • Not all components of a customizable entity can be customized e.g. system fields like created on cannot be deleted
  • IF an entity is selected as an activity this cannot be undone
  • System entities cannot be deleted

Interesting things to consider but they weren’t helping solve this problem, I remember one of my CRM developer maxims, always start with the CRM SDK and there is a good page on entities

Introduction to entities in Microsoft Dynamics CRM

I’m guessing not people have read this page because entities are easy to understand but this is a great example why you should read the CRM SDK, there are lots of useful information on this page, I recall coming to this page a few times whilst writing these blogs

It’s here where it gives us an idea of how Entities are structure

Creating an entity record (or, simply a record) in Microsoft Dynamics CRM is like adding a row in a database table. The entities are divided into three categories: system, business, and custom. As a developer working with business data, you will use business and custom entities. System entities are used by Microsoft Dynamics CRM to handle all internal processes, such as workflows and asynchronous jobs. You cannot delete or customize system entities.

 

A bit further down the page it explains business Entities are account, contact etc

you can set business and custom entities and attributes to be either customizable or non-customizable

You cannot modify a non-customizable entity

 

There is a msdn page called Which entities are customizable?

In CRM 2016 there are 271 entities, 98 are customizable!  You should note the Article Entity has the schema name of kbarticle and this isn’t included on the fully customizable entity list, instead it’s on the list of customizable entity properties.

The information about entities and what you can do is all held in the Metadata but how do you view that.  Luckily for the Microsoft Dynamics CRM community we have a Tanguy and he has created the awesome XRMToolbox and there is a Metadata browser, here it is.

Article Entity question 2

Business rules thing

lets recap where we are

  • kbarticle does not have Business rules showing on the entity
  • it’s not on the fully customizable entities like account, contact etc
  • The CanCreateForms = False
  • IsVisibleInMobile = False
  • IsCustomizable = True

I felt the answer perhaps was something to do with Business rules.

I go to the Create and edit business rules page looking for clues and under the section How do I configure business rules there is a note

Business rules will only work for Updated entities or custom entities.

 

I remember a colleague complaining how some of the forms in CRM 2016 are still CRM 2011 style and how the end users complained.  I wrote about it in the blog CRM 2016 – How to rename the default business unit, saying it was weird the Business Unit form was old style.

The technet page describes what has happened

Microsoft Dynamics CRM provides many options for designing forms. The forms for the Updated entities and custom entities provide the most options. We selected a group of entities that are used by most people and gave them a new user experience that includes many new capabilities including support for the Microsoft Dynamics CRM for tablets client, business process flows, and business rules. One of the key requirements in providing these new experiences includes the goal that a form customizer can design once and deploy to all clients.

 

So here is the explanation, Microsoft have updated the forms of the popular entities, to enable them to use business rules, work on mobile etc.  it goes on to explain

Yet there are still a number of entities that retain the appearance and capabilities carried over from the previous version. Entities using classic forms weren’t updated because they are not used frequently by most people and updating them wouldn’t have a significant impact on the experience of most people using the application. This allowed us to focus our attention on the updated entities.

 

You can view the Updated Entities by clicking here and then there is a list of 28 entities which are still using the classic form and article/kbarticle appears on the Entities using classic forms , which explains why Business rules are not enabled.  Oddly business unit doesn’t appear on either list.

Conclusion

I have read a bunch of technet/msdn articles and got a better understanding of how Microsoft Dynamics CRM works and why Business rules are not enabled for all entities.

The question I can’t answer is if these entities will ever be able to run Business rules or if their forms will be updated.  Microsoft likes to keep information like this secret, this is frustrating to developers and baffling to customers.

It seems Microsoft have upgraded forms to work with the new functionality such as Mobile, Business Process, Business rules and because there are 271 entities it will take time to upgrade all the entities and some of them it isn’t worth the effort.  The problem is there is no way to request a form to be upgraded.

You need to take into account the effort to upgrade some of the forms, in many of the system entities Microsoft has tweaked things under the hood to offer extended functionality (a form of unsupported customization) which means is difficult to upgrade the entity.

 

Questions on Microsoft Dynamics CRM solutions and environments

The art and science of asking questions is the source of all knowledge.

Thomas Berger

I was asked some questions about solutions in Microsoft Dynamics CRM, I decided to answer using a blog post so other CRM developers could benefit.  If one person is asking the question there are probably many more people thinking it.

Posting the answer to a question on my blog means other people who are having the same problem can find the answer.

Solutions

Understanding solutions is a something a CRM developer must master,  getting it wrong can cause problems deploying and managing your customizations.

The blogs below will give you a good understanding of Solutions, how they work and many of the common problems you experience with solutions (usually managed solutions)

Here are the questions

Q.  All changes made to any (unmanaged) solution are applied to the default solution.

A.  All changes to an unmanaged solution are applied to the default solutio,  you can’t undo the changes except by importing an older unmanaged solution, which is like rolling back those customizations.

Importing an unmanaged solution will overwrite any of the customizations included in the unmanaged solution (assuming the system only includes unmanaged solutions)

Q.  Multiple developers are able to work in parallel on the same entities as all changes are applied to the default solution. Everyone has sight of all changes at all times.

A.  If you are working on the same CRM environment, changes  will be visible instantly to all developers but only published changes will be visible to customers.

  • Fields, views, new entities will be visible instantly
  • Form changes will be visible when the developer publishes the solution

Code changes are different due to the way CRM developers work e.g. CRM developers tend to download a copy of the code (Javascript or plugin) work on the code and then upload when ready.

Developers usually get the latest code from TFS or the source control used in the project rather than getting the latest code Javascript from the CRM form.  This process can result in developers overwriting changes if they are both working on the same Javascript or plugin at the same time because they work offline whilst coding.  You can work around this by setting up processes and source control is your friend.

This blog post discuses multiple developers working on web resources

How do multiple developers work on a web resource within the CRM environment

Q.  Removing the unmanaged solution does not remove the changes in the default solution – these have to be removed manually (or the default solution can be restored (snapshot tools like Cobalt look good and free? Can they be used to perform a rollback in Dynamics online?)

A unmanaged solution is a wrapper to move your customization’s between CRM environments.  When imported it imports those changes into the default solution, overwriting any existing changes.  Deleting the unmanaged solution will delete the solution but not delete the customizations.

Managed solutions can be thought of as read only to the customer.  You cannot modify any of the managed components (unless they are the default CRM fields).  Deleting a managed solution will delete the customizations and the data.

To remove unmanaged customizations you must delete them manually.  Solutions are additive which means they don’t remove customizations.  You can use unmanaged solutions to change the customizations back to previous state.

I haven’t used Dynamics CRM Snapshot from Cobalt but looking at the page it seems to snapshot the data not the solution and customizations

You can create snapshots of your customizations by keeping the solution files so you can import them to roll them back.  Remember to use version numbers otherwise it’s difficult to manage and keep track of the CRM solutions, particularly if you have to move the solutions through multiple CRM environments.

Version numbers are mentioned in the blog post CRM 2015 – Best practices for CRM Deployments

Q.  Managed solutions are essentially a container for any changes you want to move to a new environment. Care must be taken to ensure that all of the relevant changes to entities are pulled into a release. It will become clear when the solution enters UAT if dependencies have been missed.

I have written about Managed solutions CRM 2013 – Managed solution problems with out of sync solutions.   Only a solution from the same publisher can update the customizations in a managed solution

Why use managed solutions

Choosing your solution strategy is an important because it can be difficult to swap back from a managed solution to an unmanaged solution.  There is anxiety before you make the decision and push the button and import a managed solution.

There are many choices you have to make in CRM which are very hard to undo like

CRM Entity ownership – How do you decide?

I have talked to CRM developers who hate managed solutions and only deploy unmanaged solutions. I have been asked numerous times why anyone would use a managed solution, so lets investigate the reasons.

The logic behind a managed solution is two fold

  1. Managed solutions are read only to protect the customization creator from users and CRM developers taking and changing the customizations
  2. Stopping users from changing the customizations which could result in the customizations not working or working incorrectly.

Managed solutions are great for CRM resellers who created a solution for CRM which acts like a products.  E.g. an Autonumber solution.  They can sell the Autonumber solution, it’s gets deployed and the users can’t change any of the code to stop it working and other CRM developers can look at the code to steal the code/ideas.

This scenario is ideal for managed solutions because if the users change their mind and don’t want to use the solution they can uninstall it and it removes all traces of the solution and its data.

Q.  If managed solutions are removed from an environment any data would be removed as well – so we should NEVER remove a managed solution but instead apply a new managed solution on top.

When you remove a managed solution it removes everything

  • Customizations
  • Data

Once the data is gone you can’t get that back, which is why you need to think carefully if using managed solutions are the right choice.

I know many CRM developers who refuse to use managed solutions due to

  • Build problems
  • unable to edit production/live system without importing a new solution
  • Solution dependencies

Unmanaged solutions will give you an easier life but it will potentially let end user modify live customizations which could break the solution and with no easy way to know what had been changed.

CRM 2016 has added patched solutions

Solution patching allows you to release smaller solutions, creating smaller solutions and reducing conflicts and problems when deploying the patch solution.

I haven’t used patch solutions so I don’t know if the theory works in practice.

Q.  Environments setup question

Dev – unmanaged default solution with project related solutions.
UAT – Test environment that managed solutions are deployed into.
Live – managed solutions transition to prod when successfully passed UAT.

There is no right answer for the number of environments, it depends on the development and testing schedules you are doing, how you work with the customer.

The number of environments can reflect the different phases of a project,  you can often have testing and development phases running at the same time.

Ask yourself what is the purpose of each environment.

I would add a preproduction environment, an environment which is hosted on the customers site or a sandbox instance if using Microsoft Dynamics CRM online.  This environment has exactly the same customizations and similar data to the production environment.  It allows the customer to test near production environment and is useful for investigating live issues.

For on premise development it’s common to have a development environment and internal QA/UAT environment for non developers to test fixes.  Developers are terrible at testing their own fixes

The usually test as CRM Admin role – The System Administrator role is a benefit and a curse to CRM developers

They often only test the happy path –Don’t just test the happy path

Development environments have development data – How to create realistic Test Data for your CRM Project and why you should

Here is some final reading on CRM environments for you – The pain of setting up CRM Dev environments

How do multiple developers work on a web resource within the CRM environment

“Alone we can do so little, together we can do so much.” –Helen Keller

 

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

 

I get asked questions from readers of the blog about general CRM topics such as career advice, finding a job, creating plugins or help with a specific problems/errors.

Ask the Hosk questions

If you are going to ask me a question please be polite, it will increase your chances of me answering your question, don’t forget to say how much you like my blog (that really increases your chances of getting an answer).

Take into account I’m a busy Hosk, I work, I have 2 young children, a wife and sometimes even get to chill out or play football.  Sometimes I could be too busy to answer your question quickly.

I won’t always know the answer to your question, if I haven’t read about a topic or got any experience in the topic I can’t give a good answer.

The CRM Forum

Instead of asking individuals a question I would recommend raising a question in the CRM Forum, for these reasons.

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

A bonus reason to raise the question on the forum is after you have raised the question on the CRM forum, you can email me and ask me to look at the question.

CRM forum

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

The CRM forums are a great way to learn CRM, you can see common questions raised by CRM users and the answers from CRM experts.  I answered over 400 forums questions and learnt a lot and helped users in the CRM community.

Question

How do multiple developers work on a web resource within the CRM environment?

With traditional web development if there are multiple developers working on the same page then they will each have local copies/websites to develop and test against then merge the changes in source control.

However, CRM web resources usually rely on the XRM SDK and the parent window within the CRM Evironment.

Are there any best practices for being able to have multiple developers work on the same web resource simultaneously?

 

Answer

This is a great question, working with a team of developers can be frustrating when they overwrite your changes, this didn’t quite make it to my list of frustrations of a CRM developer.

It’s a common scenario, particularly on big CRM projects and part of the problem lies with communication and practices

In the book The Mythical Man-month: Essays on Software Engineering the author Brookes discusses why adding more resources doesn’t always speed a project up, a great quote 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.[3] 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.

 

Communication is key to successfully working with a group of developers, particularly if you are working on a shared environment.

Encourage developers to communicate via talking face to face, phone or instant messaging.

Multiple developers can develop separate parts of a CRM solution.  There will be time when development will overlap.  The quickest technique is to talk and work together, there are some steps to work without overwriting each others changes but this will involve some code merging will can be painful.

Important

If two developers have worked on the same customization, it’s important you test all new functionality to ensure the last modification hasn’t affected the previous modification.

Source Control

Whether you use TFS or something doesn’t matter but what it is important is everyone checks in their code regularly.

Get into a habit of checking in code regularly, at minimum

  • Get the latest code in the morning before starting code
  • Before you are about to change some code, get latest
  • Check in code before you leave

Source control can be a pain, but it will save you skin on many occasions, don’t fight it, embrace it.  The more you refresh and check in your code the less likely you are to suffer merge hell.

Development Environment

Most CRM Development environments are a CRM server hosting a development CRM instance.  Multiple developers access and develop CRM customizations on it.  This lead to some problems if developers were working on the same Javascript file.

Developers will usually be working on separate plugins/Javascript, which avoid conflict and overlapping/overwriting code.

If two developers need to work on the same plugin, you can create and test the code in a separate class, avoiding conflict and merging later.

It’s possible to have separate VM’s on individuals laptops, so each developer has their own separate CRM Instance.  This is possible but the majority of CRM development projects I have not worked with this setup.

Unit Testing

Unit tests allow developers to isolate the business logic by faking/mocking interactions with CRM.  Writing unit tests allows the CRM developer to test their code on their local machine without any dependency on the CRM developer environment.

With unit tests, multiple developers can work on CRM customizations without affecting each other.

No right answer

This question is tricky and I don’t have a right answer or the perfect way for a team of developers working together without stepping on each others toes.

Source control is an important tool for a CRM developer and not just for teams working with multiple developers on the same project. It’s a vital tool which gives an audit trail of the code and saves the code safely in a repository which acts as a disaster recovery for your code on a developer’s laptop.

Source control will help recover overridden code, but it’s unlikely to stop developers overwriting code.  The most effective method is for different developers to work on separate customizations or give allocate only one developer to work on a single customization.

If multiple developers must work on the same customization then communicate with each other to agree on a way of working