Quantcast
Channel: Hosk's Dynamic CRM Blog : crm 2011
Viewing all 469 articles
Browse latest View live

CRM Developers need Passion

$
0
0

My mission in life is not merely to survive, but to thrive; and to do so with some passion, some compassion, some humor, and some style.

 

If you don’t enjoy CRM development, you will produce poor code and have long days.

Instead

  1. Commit to becoming a better CRM developer
  2. contribute to the CRM community
  3. Keep learning CRM, CRM SDK, 3rd party solutions, Azure, etc
  4. Produce great CRM Solutions

If you do the above you will soon be a CRM Ninja and you can give yourself a silly name like THE HOSK!

I listened to an interview with James McAvoy,  he was asked if he enjoy promoting films, McAvoy gave an interesting response

He said interviews weren’t the reason he became an actor, but he was contractually obliged to do them.

The presenter replied “but you seem to be having a good time or are you just acting”

McAvoy replied “I found that by being passionate, committing fully to the task made it more enjoyable for me and the interview and then the day seems to go quicker.”

He went on to say you have to go for it, it costs you more energy, but you get more out of it

Do Life on Purpose

It worked for the interview because it seemed both were enjoying participating and I enjoying listening.   The advice and point of view from McAvoy very interesting and it got me thinking it was relevant to CRM development.

Be Passionate

Successful people are passionate about what they do, this passion brings enthusiasm and drive. Examples of a successful people in your field and you will find a person who enjoys what they do and have a passion for it.

Who are passionate in IT? the first two names that pop into my head were Steve Jobs and Bill Gates.

There are aspects of my work and particular tasks I can find boring, try to be as passionate doing these tasks and the interesting fun tasks.

When you do something with passion you fully commit to the task, If you don’t enjoy your job, the days will be long and unenjoyable.

Quality

I encourage CRM developers to become craftsman, produce the best work they can, which they are proud to say they did.

CRM developers who don’t enjoy work do just enough and produce code and customizations which meet the minimum criteria.  Code which works but is complex (The problems with complex code and complex CRM Customizations), hard to read and difficult to maintain e.g. LEGACY CODE 

Sometimes when legacy code groups itself into a whole system, you can end up in a situation like the excellent Dilbert cartoon below
After you write some code, ask yourself
“is that the best I can do?”

Work is sometimes boring

Some tasks of a CRM developer are not as enjoyable as other tasks e.g.
  • Production builds
  • Importing Data
  • creating loads of fields on an entity
  • Morning 15 minute
  • writing release documents
  • debugging line by line to find a bug

Being a CRM developer can be frustrating,  consider the amount of time spent on doing non-coding tasks

Rudyard Kipling advice to CRM developers

If you can meet writing coding and boring non code tasks
And treat those two impostors just the same;
ours is the Earth and everything that’s in it,
And – which is more – you’ll be a Man, my son!

Just kidding read the full poem If here.

Tackle the boring tasks with effort and you will do a good job, you will finish the task quicker.

Learning

If you don’t enjoy your job it’s difficult to improve, improving at something needs practice, learning, energy, enthusiasm and lots of time.
CRM developers have a lot of information to learn and more to learn all the time with new releases of CRM and new technology being used such as Azure, mobile etc.
CRM developers have a lot to keep up, I have found the best method is to contribute and interact with the CRM community.
One final tip, don’t forget to combine thinking with your passion for CRM.

Passion makes idiots of the cleverest men, and makes the biggest idiots clever.


Filed under: CRM 2011

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

$
0
0

“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

 

 


Filed under: CRM 2011, CRM 2013, CRM 2015

Hosk’s Top CRM Articles of the week – 15th December

$
0
0

CRM 2016 is released, which is great news for CRM on premise users because it mens they finally get the functionality delivered to CRM 2015 Service update 1, as well as CRM 2016 functionality.

Download the CRM 2016 preview guide here

It’s worth reading the CRM 2016 preview all the way to the end because then you find out what’s missing

CRM 2016 what's not in it

The Microsoft Dynamics CRM landscape is changing, CRM developers should think Online first and On Premise second for CRM solutions

CRM Online really only works if you utilize Microsoft Azure.  The tricky part is both are evolving at a rapid rate.

Azure is massive, with functionality to be leveraged with CRM 2016 Online.  There are lots of great things like Azure Service Bus, Machine Learning and the new Power apps.

Read more about PowerApps – Introducing Microsoft PowerApps

Quotes

Either you run the day, or the day runs you.

JIM ROHN

if opportunity isn’t knocking down your door, go and find it and demand to know why

Hosk

There are three rules to being a great CRM developer, unfortunately no one knows what they are? in the meantime think, learn and work hard

Hosk

Article of the week

Using Microsoft Social Engagement Together with Dynamics CRM

fantastic presentation from CRM MVP Jukka Niiranen on social engagement

10 Tips for Success designing solutions for Dynamics CRM

This article is a must read for anyone who design solutions for CRM

Best of the Rest

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

Full CRM Deployment in Azure – Part 1 – Infrastructure

Sample: Auto-complete in CRM control

CRM Developers need passion

Business Process Flows – Considerations and Lessons Learned

Dynamics CRM 2016 Excel Templates

CRM 2015 – How to set focus in Javascript

Tips for working with Business Rules in Dynamics CRM 2015 Online

Support Ending for the .NET Framework 4, 4.5 and 4.5.1

What are task flows and how do they compare to other tools in Dynamics CRM?

Monitoring and Statistics for Sandboxed Plugins

Dynamics CRM 2015 – Delay Load Functions

Modifying Global Search in CRM Online

Tip #533: Tipster guide to automatic record creation in Dynamics CRM

Resco’s perspective on ‘Microsoft to Acquire FieldOne‘

Announcing support for Azure Express Route for CRM Online

Programming

Everything You Know About Latency Is Wrong

Software Craftsmanship – Revenge of the SDET

other

9 parenting tips from Warren Buffett to set your kids up for success

Microsoft apologised to Surface owners who have had a ‘less-than-perfect experience’

The Cross of the Moment

Previous top picks

Hosk’s Top CRM Articles of the week – 10th November

Useful Hosk Links

Hosk list Of CRM 2013 Tools

A list and review of CRM 2013 tools, this will probably work in CRM 2015 as well

Hosk’s CRM Developer Articles

A collection of my favourite CRM Developer articles I have written

MB2-703 – CRM 2013 Customization and Configuration Certification Information

All the CRM 2013 content to help you pass the exam

HoskWisdom – Hosk Developer Quotes

 Words of Wisdom from the Hosk.  I have written over 900 articles, surely I should have said a few memorable things


Filed under: Hosk’s Top CRM articles of the week

The 10 most popular Hosk CRM blog posts in 2015

$
0
0

It’s Christmas, a time where terrestrial TV shows greatest hits and compilations.  Instead of spending time crafting new exciting CRM blog posts I will do my own version of greatest hits by listing the most popular Hosk CRM blog posts of 2015

The most clicked on blog posts in 2015

  1. CRM 2013 – Step by Step Update Plugin Tutorial using the CRM 2013 Development Toolkit
  2. CRM 2013 – Understanding Solutions and how they work
  3. MB2-703 – CRM 2013 Customization and Configuration Certification Information
  4. CRM 2011 – Javascript Xrm.Page Basics
  5. CRM 2013 – Setting up Visual Studio with the Developer Toolkit for Microsoft Dynamics CRM
  6. CRM 2011 – Javascript and Subgrids code example
  7. What are the limitations of Microsoft Dynamics CRM Online and how do you work with them?
  8. CRM 2013 – Javascript to get id of current record
  9. CRM 2013 – quick way to get the guid on a form
  10. CRM 2011 – Quick tip – Javascript to stop a form saving

It seems most readers are still developing with CRM 2013 and CRM 2011, it would be interesting to see the number of CRM deployments and versions.

Most clicked articles written in 2015

  1. What are the limitations of Microsoft Dynamics CRM Online and how do you work with them?
  2. Understanding Plugin sandbox mode
  3. Where is the CRM Developer toolkit for CRM 2015?
  4. CRM 2015 – Why filtered views are useful
  5. Getting the CRM Developer toolkit working with Visual Studio 2013
  6. Why .NET developers struggle with CRM Development
  7. CRM 2015 – how to find Statecode value
  8. What’s new in CRM 2015 SP1 for developers, customizers and admins
  9. CRM 2013 – Understanding SystemJobs and Async Plugins
  10. CRM 2015 – Understanding CRM Metadata

Thanks for everyone who has read and commented on my Hosk CRM blog posts, I look forward to creating interesting content next year.

Blogging is a great way to help learn Microsoft Dynamics CRM, if you haven’t got a CRM blog then I recommend you start writing one NOW.

If you have enjoyed reading my blog posts this year please leave a comment.


Filed under: Hosk CRM Dev, Hosk’s Microsoft Dynamic CRM Development

Microsoft Dynamics CRM Community is awesome

$
0
0

Develop an attitude of gratitude, and give thanks for everything that happens to you, knowing that every step forward is a step toward achieving something bigger and better than your current situation.

 

Develop an attitude of gratitude

We get help in many ways by many people but rarely do we thank people and organisations who have helped us.

It’s a small effort to thank someone for helping you, which makes it puzzling why it doesn’t happen more often.

This last year I have learnt lots of great things from my colleagues

  • ideas
  • conversations
  • opinions
  • best practices
  • new technologies/tools

We learn little when we are talking but have the potential to learn lots by watching the actions/work of our colleagues.  You will benefit from actively listening to our colleagues.

We have two ears and eyes and one mouth, try to watch and listen more than you talk.  Do it intelligently to make sure you pick out the important points, understand them and incorporate these things in your work.

I read this advice in the book How to Win Friends and Influence People by Dale Carnegie, the advice is  simple, honest and concentrates on long term giving.

“The difference between appreciation and flattery? That is simple. One is sincere and the other insincere. One comes from the heart out; the other from the teeth out. One is unselfish; the other selfish. One is universally admired; the other universally condemned.”
― Dale CarnegieHow to Win Friends and Influence People

Microsoft Dynamics CRM is awesome

I enjoy working with Microsoft Dynamics CRM for these reasons

  • Microsoft Dynamics CRM is a great product evolving and improving
  • It offers a great starting point for solutions
  • CRM professionals are self motivated
  • CRM is moving towards the Mobile and Internet of things
  • Azure cloud functionality

Microsoft Dynamic CRM projects are challenging and rewarding,  CRM Online projects where CRM is acting as a hub in the centre of lots of services and applications.

What makes Microsoft Dynamic CRM projects great is you can create solutions which help the users do their jobs effectively.

People are the glue which hold CRM projects together, most CRM professionals are focused on learning and improving to enable them to create CRM solutions which enable users.

Feedback and comments

Thanks to those who read my blog, particularly those who take the time to comment on my blog posts.

Comments are a great way to add extra information, personal experiences and a different perspectives to a blog post.

Make it one of your new years resolutions to add more comments to blog posts you have enjoyed, it’s a great way to contribute to the CRM community.

I’m thankful for the feedback someone gave me about the Hosk CRM blog, they were not sure I knew much about Microsoft Dynamics CRM.  I had written 400 blog posts, so I wondered why they would think that.

This was the spur for me to stop reblogging other people CRM blog posts and write more original blog posts.  Writing original content it harder but more rewarding for me because I have to think more.

The Microsoft Dynamics CRM Community

The Microsoft Dynamics CRM community is awesome, with lots of great free content, tools, talks, tweets happening every day it’s fantastic.
When I havea Microsoft Dynamics CRM problem, thereisalwaysa blog posts onthesubject.
Everyone has something to teach you but only if you want to listen and learn – Hosk
I learnt from watching and listening to my colleages, a great piece of advice
“Always ask for feedback
When you write code, deliver a workshop, present, etc, etc, ask for feedback.  If you have given training or presented, email the attendees and ask them what you did well and what could be improved.
Get senior developers to code review your code.
One of my goals is to continuously improve, replace things you suck at with things you which are OK, keep improving and do things better.
To improve you have to practice, understand what you are doing badly so you can stop it and what you are doing well so you can do more of it.
I piece of advice I got about a solution document I wrote, the person told me to ask this question to all the parts of the document

“What is the purpose of this

I used to write documents copy formats of similar documents or examples, I realized I should question the content of my documents and justify all sections and paragraphs.
There is too much waffle in documents, get rid of the parts you don’t need and create a clear document with simple language not buzzwords and techno babble.

Junior developers

Trying to explain CRM development to someone who has no experience gave me a different perspective on CRM development.

Explaining development best practices seem illogical, below are articles I wrote last year trying to explain why to junior developers.

I will leave you with this famous thanks

This was the fourth book of the fantastic Hitch hikers guide to the galaxy by Douglas Adams

So Long, and Thanks for All the Fish: 4/5 (The Hitchhiker’s Guide to the Galaxy)


Filed under: CRM 2011

Hosk Developer goals 2016 – CRM Online, Azure and FieldOne

$
0
0

 

If it doesn’t challenge you, it doesn’t change you. – Fred DeVito

 

Discipline is the bridge between goals and accomplishment.

 

If you write down you goals you are more likely to achieve them, something to do with social pressure and brain thinking you might be more serious about your goals.  I thought I would do it because goals without actions are just words

2015

In 2015 I wrote 150 blog posts, which is pretty good but half of those were Hosk weekly articles of the week.

I spent more time writing the individual blog posts, it took more effort but was more rewarding for myself and hopefully the readers.

Certifications

Passed the CRM 2015 Customization and configuration certification.

Job

I moved job to KPMG Crimsonwing in November

Training

  • Azure Architect workshop
  • FieldOne training

Technical Books read

Goals for 2016

The main theme of my goals for 2016 is to keep up to date with the latest and greatest technology around Microsoft Dynamics CRM such as

  • Microsoft Dynamics CRM 2016 new features
  • Microsoft Dynamics CRM Online
  • Azure
  • FieldOne

Microsoft Dynamics CRM moves at a fast past and it’s important to keep up with the new features.  CRM Online, Mobile and Microsoft Azure is where CRM development is moving and to develop CRM Solutions for CRM Online involves not only a change in thinking and solutions but skills needed.

Reading the Microsoft White paper highlighted this to me last year when I wrote this blog post

What are the limitations of Microsoft Dynamics CRM Online and how do you work with them?

I’m starting to read more articles about

  • CRM and Azure
  • CRM and Internet Of things
  • CRM Online

Hopefully I can start contributing to these topics in 2016

Read More

I want to read more technical or work related books this year.  Books are a great source of deep learning on a subject and a great way to learn new ideas and processes.
This quote highlights why you should read more
“In my whole life, I have known no wise people (over a broad subject matter area) who didn’t read all the time — none, zero. You’d be amazed at how much Warren reads–and at how much I read. My children laugh at me. They think I’m a book with a couple of legs sticking out.” Charlie Munger
I want to read more books, not just technical books because you can get lots of great ideas from books.  The book which had a major influence on me last year was
This book changed the way I look at things, I also now fold my pants and socks!

Microsoft Dynamics CRM Online

I want to start focusing on Microsoft Dynamics CRM online, creating solutions, the architecture and understanding how it links in with Azure, mobile devices and other CRM online development.
Microsoft continue to push CRM online and it’s getting to a level similar to the capabilities to CRM on premise and has technology 6 months in advance of On Premise and not all functionality is going to CRM On-Premise.
CRM solutions and development will be moving to the cloud and those who only create solutions for CRM on premise could find themselves slowly getting isolated, so I am getting with the program and learning how to develop CRM solutions for the CRM Online.

FieldOne

FieldOne is going to be an excellent acquisition for Microsoft and will lead to a lot of opportunities in using Service Management.  FieldOne is built on top of CRM, so any changes to to it are standard CRM development.
FieldOne allows companies to create Field Management solutions quickly building on top of FieldOne solution.  The field service management sector has lots of potential with not many CRM solutions out there.
FieldOne is a big solution but does come with excellent learning material to help you get to grips with it, I will be working my way through it this year.

Azure Architect Certification

After attending the Azure architect training course I see the future of Microsoft Dynamics CRM being online connecting to many services, applications and mobile devices with being the glue which integrates everything.
It will be a lot of work but I think it’s an investment in the future and the knowledge will hopefully help me in the years ahead.
It will be interesting to learn new concepts and azure offerings, many of which I am unfamiliar with.
I will aim to do a CRM certification after my Azure certification

how about you

If you have any CRM goals this year, please leave a comment and tell me what you are planning to do and learn

Filed under: CRM 2016

CRM 2016 – FieldOne – windows emulator SA.NoUserData error

$
0
0

 

FieldOne without mobile integration is like Hosk without CRM!

FieldOne without Mobile integration is like England without queuing

 

My first  FieldOne post, it will be the first of many as I will be using FieldOne a lot in 2016.

I have been getting to know FieldOne and going through the Learning Management System

FieldOne Learning Management System (LMS)

https://fieldone.litmos.com/self-signup/

It’s a great resource with lots of material, the slight complaint I have is some of its out of date but FieldOne is going through changes whilst the product is incorporated into the main CRM product.

Mobile

I wanted to try the mobile application, so I decided to try the Mobile Emulator.  I downloaded the mobile emulator, unzipped it.

I fired up the Mobile Emulator

Mobile Emulator

Go To Setup, fill in your details on the CRM tab

Setup mobile setup

I was getting an error

SA.NoUserData error

or

no permissions

Now What?

I am half way through my FieldOne training, I haven’t used the mobile app or emulator.  I couldn’t see any log files to help, so I was a bit stuck.

I searched the internet and even my blog didn’t come up with any solutions!! (this time)

I tried asking a question on the CRM Forum

FieldOne windows emulator SA.NoUserData error

The weakness of the forum’s is they are answered by CRM users but it means the more common your question the likely someone is to answer it.  In this case no one answered it.

FieldOne is relatively new so there are not many people who have knowledge about it, so for new products there won’t be many people who will have answers.

Neil Parkhurst to the rescue

If you are starting out with FieldOne, bookmark Neil’s blog, it’s an excellent resource for getting started with FieldOne.

http://neilparkhurst.com/category/fieldone-sky/

In his blog he had a section on installing the FieldOne Mobile App

FieldOne Sky – Install Mobile App

In here he had a tip which resolved my problem

I had a problem that my application would not run on some mobile clients, giving an error of “SA.NoUserData” or conflict with meta data. To solve these issues;

2. In CRM, on the system user form add a field called “Allow Mobile Access (Depreciated)” and set this field to “Y”.

 

I went to the user form and added the field – Allow Mobile Access (Depreciated) to the CRM user form.

Add to user field

I opened my user and set the field to Yes.

Started the emulator again and pow, I started syncing

emulator synced

You would have to set all the users you want to have mobile access to Yes

Why?

The question is why is this causing an error.  I think the problem is caused because FieldOne is being integrated into the main CRM product there are lots of fields being depreciated and there might be a few bugs caused by this whilst the code catches up and new fields used.

I think Microsoft is allowing free access to the mobile client but I’m not sure and licensing questions are always confusing and changing.  That’s my guess of the problem.

This forum has the same solution as well.

FieldOne Mobile App – sa.nouserdata

As an extra tip, check you have the latest version of the CRM mobile app


Filed under: CRM 2015, CRM 2016, FieldOne

FieldOne – Mobile app thoughts, problems and solutions

$
0
0

“IT IS NOT THE PAST THAT MATTERS BUT THE FUTURE.”
Varun Ravikumar

FieldOne is a service management solution built into the core CRM product, a key part of the FieldOne solution is the mobile app.  FieldOne Sky mobile app takes the CRM functionality out of the office to where the field agents are working, keeping the office and the field agent in sync.

See it in action here

Microsoft Dynamics CRM has made dramatic improvements in mobile functionality in it’s own mobile app to provide a rival excellent Resco mobile CRM App.  Resco functionality is slightly ahead of Microsoft CRM mobile application at the moment.

Built on Resco CRM Mobile App

The current mobile application is built using Resco mobile CRM app, this functionality is included when you buy an Enterprise license (things are always changing). The mobile app is a key part of FieldOne, Resco  didn’t want to give free access to the excellent Resco CRM mobile app.

To include FieldOne Sky mobile app, you are not allowed any non FieldOne functionality.

When I opened the mobile application I got an error saying

Customization contains an entity that is not allowed

The reason for this error is you had to pay for mobile access but now it is free with the caveat of no non FieldOne data or functionality available in the mobile app.

To get you FieldOne mobile application working you have to remove all sales entities from the woodford mobile solution, which can take a bit of trial and error to work out what to remove.  This great blog post by Neil Parkhurst lists all the entities not allowed

FieldOne Sky – Customization contains an entity that is not allowed

The other common error you might get is SA.NoUserData error,  another temporary error whilst FieldOne merges its code with the default CRM code.

I blogged the solution to this problem in the post

CRM 2016 – FieldOne – windows emulator SA.NoUserData error

How to test Mobile functionality

When I wanted to test the FieldOne mobile application I instinctively chose the Windows emulator.

The reason for is I haven’t got use to using Windows 8 and downloading apps on my laptop computer, in my mind apps live on phones and tablets.

Microsoft uses apps on Windows computers will be the same as on phones and tablets, which should encourage developers to create them.  The reality is if I’m on my laptop I don’t want to run an app, I want to run either the full program or browser based app and use the benefits of my laptop.

Apps run best on touch screen devices and offer a cut down version of an application on a laptop, it doesn’t make a great experience.   One of the reasonsthere arenot many apps, the main reason is the target market of Windows devices is smaller than Apple and Android.

To test the FieldOne mobile application don’t use the emulator I believe it‘s not going to be updated and possibly removed and it might not be the same as the other mobile applications.

I have tested the mobile app on my personal android device, it works, I tested it on my Windows 8 laptop, full screen is annoying but it works well.

The future for FieldOne Mobile

FieldOne is integrated with the core Microsoft Dynamics CRM so it makes sense FieldOne will be developed in the default Microsoft Mobile application.

It will take time to match the functionality offered in the Resco FieldOne application but with time and will you can do achieve great things.

My first experience of Resco CRM mobile is it’s a great application and made mobile development is easier than I had imagined.

Here is an interesting interview with Ivan Stano, chief operating officer (COO) of Resco.net, Inc

Microsoft Dynamics CRM Still Rich Ground for ISVs, Partners, Says Mobile Solutions Vendor

You can get a free 30 day trial for Resco and I recommend you try it, it’s good fun.

CRM with internet of things

Seeing FieldOne mobile in action, shows me Microsoft Dynamics CRM working with a mobile application.

When I have looked at the CRM mobile application before the functionality was limited and I didn’t see many convincing business cases for mobile applications working with CRM.

I believe mobile applications will become more common and along with Azure apps and Azure Service bus there will be increased integration with Microsoft Dynamics CRM.

The FieldOne service mobile sky application will give many people an introduction to the effective mobile applications working with CRM and give people something interesting to think about.

The out of the box CRM mobile application has improved functionality and offline capabilities, the tools are there and ready to go, don’t be surprised if you find yourself working on a CRM mobile application in the near future.


Filed under: CRM 2016, FieldOne, Mobile, Resco

Why did Microsoft partner with Salesforce?

$
0
0

When Microsoft teamed up with Salesforce last year it prompted shock and a few grumbles from the Microsoft Dynamics community.

Microsoft makes money selling non crm services and products

  • Windows
  • Microsoft Office
  • Azure
  • Cloud infrastructure
  • Other products

Microsoft Dynamics CRM resellers were frustrated because one of the key advantages Microsoft Dynamics CRM had over Salesforce was its integration with Microsoft products.

The CRM community questioned if the Salesforce partnership would lose Microsoft CRM deals to competing bids from Salesforce?

The first reaction is often an over reaction and Microsoft CRM resellers didn’t lose bids to their Salesforce counterparts en masse after the partnership (integration will take time from Salesforce).  I doubt the key reasons for choosing Microsoft Dynamics CRM as the technology to deliver a project wasn’t due to it’s integration with Microsoft Office.

Why do companies win bids?

What are the key ingredients to a winning bid?
  • People
  • connecting with the customer and understanding their problems and requirements
  • Vision
  • Experience
  • vertical or industry solutions
Competing bids using different technologies are usually close with different strengths and weaknesses.  The key differentiator is the company, people and how well they connect with the customer.

Consider the most common cause of failure of projects isn’t the technology used but the people and the working relationship.

Microsoft Azure

I attended an Azure Architect training course in November last year and am now a Microsoft Azure fan.  Microsoft Dynamics CRM online and Microsoft Azure is used to deliver Cloud solutions.

Integratiing Microsoft Dynamics CRM with Microsoft Azure, letting Azure host processes and heavy customizations and integration pieces of Cloud solutions will be model used in cloud solutions.

During the Azure training I was impressed by the amount of Azure services available and the possibilities.

Companies will move their computing online because why bother hosting your own servers which need space, maintenance and will age, dropping in value when you can do it Online with just an internet access.

Advantages of Azure

  • Pay by the minute, scale down during nights and weekends
  • You can scale up slowly to match demand
  • You pay for what you use
  • You can pop up machines for testing, drop them when finished

Azure changes the way people can think about servers, they are not massive investments they can be short term setups (prototype, testing, customer demo).  You do have to remember to turn off everything you setup :)

Azure has lots of services

  • Different database options
  • Service Bus
  • Apps
  • Web services
  • Web Site
  • Hadoop – Crunching Big Data
  • Azure Machine Learning

The Azure services can integrate with CRM or Salesforce, making the CRM part a part of the solution.  Microsoft Dynamics CRM can be the centre for a cloud solution.

Microsoft Dynamics CRM integrating with Azure you widen the possibilities of potential solutions.  Microsoft Dynamics CRM can be the centre of solutions with acquisitions (Social insight, Parature, MDM) and their services sitting outside of CRM and connecting in and integrating.

This is an interesting article on Microsoft’s change of strategy

Mobile
An interesting article on Microsoft strategy

Azure and integration of services the next step is mobile applications and the internet of things.  If Microsoft brought Resco Mobile app it would encourage mobile development and solutions with CRM.  Microsoft could start to move from lagging with Mobile solutions to start catching up.

My experience of Microsoft Dynamics CRM and mobile integration was zero, I hadn’t worked or seen any projects which had mobile integration, Sales people use laptops with Outlook instead of mobile devices.

Mobile devices are ubiquitous appearing in offices with more frequency, most people use them as lightweight computers accessing email and office.

The internet of things is about seeing where mobile devices can be used be used effectively, for this to happen we need to be looking for opportunities, need developers experienced in writing mobile applications and have business case for them.
Micro services
solutions will link together a web of different smaller services, zure will help integrate these , if a new one comes along you should be able to swap it in or out

Azure machine learning

Analyising your data, learn and make recommendations.  Cross selling or recommendations to existing customers a good example.

There are lots of opportunities to use existing data and pull out insights and recommendations.

Microsoft will want the Machine Learning services to be used in lots of applications, not just CRM.  Machine learning will cuddle  up with the Internet of things , mobile devices will capture more data and Machine learning will use the data to create useful insights and actions.

FieldOne

I have been looking at FieldOne, a Service Management solution built on top of Microsoft Dynamics CRM.  Microsoft brought FieldOne, the solution is being incorporated into Microsoft core product.

Field Service agents need to be on site to do a service e.g. Fix things, inspect, replace, empty, etc.

A integral part of the FieldOne solution is the excellent mobile application which allows the back office scheduling the jobs to get updates from the field agents and schedule jobs more efficiently, reacting to real time information.

The driving forces in the service management industry is keeping costs low.  Costs are managed by scheduling of resources and getting the right person, with the right skills, with the right equipment to the right job.

Doing it wrong costs go up, repeat trips cost more for the same cost

  • Wrong person
  • wrong equipment
  • inefficient use of people/equipment

Summary

Microsoft are selling lots of services which can be consumed by any applications hosted on the internet.

The Azure services will grow in usage,  intergrating of systems in the cloud.  The IT industry will move from focusing on what do I need (in terms of hardware) to deliver required functionality to thinking what does the user need to do and use Azure to trial and scale up when needed.

Azure works in compute, database actions, by the minute, focusing on what you use, meaning the customer pays only for what they use.

Microsoft Dynamics CRM implementations are moving to the cloud using Microsoft Dynamics CRM online, with more mobile applications and integration with Azure services.

Microsoft Dynamics CRM will become the hub of lots of interconnected services, applications and devices.

Instead of focusing on competing with Saleforces, Microsoft is focusing on improving the applications which can integrate with Microsoft Dynamics CRM and Azure services which can be consumed by CRM.

 


Filed under: Azure, CRM 2015, CRM 2016

CRM 2015 – Best practices for CRM Deployments

$
0
0

“Is life not a thousand times too short for us to bore ourselves?”
Friedrich Nietzsche

With boring repetitive CRM Developer tasks  – share the pain, share the knowledge – Hosk

 

Live deployments of customizations are tedious, stressful and critical events for CRM Developers.  Often done outside of hours to avoid disrupting the users (what about the CRM Dev’s, they have lives too!), if they go well it’s as it should be, if something goes wrong the lightbulbs are swapped to read and end users can be heard shouting SHOW STOPPER.

Despite the importance of production deployments not much time is spent thinking and improving the process, it’s often delegating to someone at the start of the project and they are left to get on with it.  In the article below I look at the different aspects of the production deployment and highlight parts to improve.

Solution Overview

CRM developers need to know solutions inside out, upside down and back to front.  Solultions organise and move customizations between CRM environments but be warned, they can cause problems during importing.  When problems occur importing a solution, knowledge of solutions will help you diagnose and resolve the problem.  It’s important you have a deep knowledge of the CRM SDK and why I am often saying Why CRM Developers should always start with the CRM SDK 

CRM developers need a good knowledge of solutions because solutions are a tool you will use regularly, you need to understand

  • What customizations are included in the solution file
  • what customizations are excluded from the solution file
  • working with multiple solutions
  • Which customizations persist when mutiple solutions contain the same entity
  • What the default solution is and how it works
  • The difference between unmanaged and managed solutions
  • When to use manage or unmanaged solutions
  • dependant components
  • common solution importing problems

CRM production deployments are often done out side of hours because importing a solution can freeze Microsoft Dynamics CRM but did you know you can import a solution asynchronisly using the CRM SDK – Asynchronous Solution Import

All CRM developers should have read CRM SDK Introduction to solutions

I have written a brief summary of the CRM SDK solution content in the article Understanding Solutions and how they work

Solutions use guids and sometimes solutions can get out of sync, this article explains how I got into and out of such a mess

Managed solution problems with out of sync solutions

Solution import Errors

Patching solutions

Solutions package CRM customizations, CRM 2016 has improved solutions to allow patching solutions, which allows you to import a smaller range of customizations instead of the whole entity and related customizations

read articles on patching solutions

Whether you are importing an older full solution or a patch solution, the solution is often only a small subset of the customizations being deployed.
Manual deployment steps
CRM deployments can include multiple manual steps, you should consider what manual steps need to be deployed in each deployment, list them out and practise them
  • Unregistering plugins
  • Workflows to deactivate
  • Data to import
  • Security roles to configure
  • Configuration settings to update
  • Workflows to re-point (workflows using data in the CRM instance, which changes guids between organisations)
  • App pool settings to change
  • update WCF dll‘s and config files
  • update GAC dll‘s (if you have deployed any)

Unregisteringplugins is a manual step because solutions are additive, which is a fancy way for saying they don’t remove or delete customizations from a target CRM instance.  Someplugins will need to be deactivated manually, usually using the Plugin registration tool.

Workflow re-pointing happens when a CRM records are used in the logic of the workflow.  CRM records will have an inidividualguid, which is assigned to it on creation of the record.  A record could have the same name in different CRM environments but will have different guids e.g. an Account named Hosk in DEV and PREPRODUCTION will have the same name but different guids.  Workflows use lookup (EntityReference) which has the name of the entity and guidto uniquelyidentify the record.

Workflows which use CRM records will become unpublished when imported into a new CRM environment because the record guid can’t be found because it doesn’t exist.  The manual workaround for this process is to open the workflow and lookup the correct CRM record and this is what I call Workflow re-pointing.

Solution Configuration

The structure of a solution can minimize the number of  customization’s included in a solution and the potential problems when importing the solution.

A solution with all customization’s could grow when customization’s are added, taking longer and longer to import and maintain.

You can split up the solution to reduce the customization’s changed and deployed.

Two common methods of organizing the Solution file are

Release

You can organise solutions to releases/phases/sprints, including the changes for each major release of functionality.  During development it’s easy for developers to work with the solution.  Developers with experience of the project will find release/sprint solutions easy to understand but new developers won’t find the solution content obvious.

The release solution can lead to many solution files because solutions are not reused but it can stop solution files becoming to large.

  • Release 2.1.1.1
  • Release 2.2.1.4
  • Release 3.1.1.0

Customization’s by type

I have seen a few projects organise solution files by type of customization’s
  • Entities
    • Entities and fields
    • Lists
    • Forms
  • Code
    • Javascript
    • Plugins
    • Workflows
    • Custom workflows
  • Reports

Its easy to create visual studio projects containing similar types of customization’s and it’s straightforward for developers touse.

Over time solution files can grow to be big, this can cause problems with several developers changing the same customization, an example is discussed

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

There is no right or wrong way to structure a CRM solution, it depends on the project, number of customization’s, number of developers, etc.  You need to create a solution organisation method which is logical and easily understood to the developers working on the project.

Document the deployment process

We create CRM development best practices and standards to ensure CRM development is created in standard way and to the required standard.  All the code/customizations should be similar despite being created by different developers.

The deployment process should be documented and processes created to ensure deployments are done sequently, in the same way by different CRM developers.  The benefit of documenting the deployment is transferring the build knowledge out of an individuals head and into a document other developers can follow.

  • The benefit of documenting the deployment process
  • deployment knowledge is shared
  • steps are not forgotten/missed
  • manual processes are documented

A standard deployment document, to act as a checklists to tick off during the deployment.

Pilots have a checklist when landing.  Pilots are skilled individuals often with thousands of hours experience but without a checklist even experienced professionals can forget a step when the pressure is on.

The Checklist Manifesto: How To Get Things Right

During the pressure of a deployment, it’s easy to miss a deployment step, documentation and checklists will help you avoid this.  Checklists and documentation can help do the deployment in the correct sequence (which might be important).

Don’t leave it to one person

Deploying to a production environment is a dichotomy, it’s a group of simple (and usually boring) tasks but it’s important it goes without problems.  Problems with deployments will affect end users and  impact the customer/developer relationship

When one person is tasked with doing deployments they get the deployment process down to a fine art and becomes a slick deploying machine.  The downside is you have created a deployment dependency and no one else knows how to deploy or is confident to do it.  There is pressure on the deployer moving project and when they go on holiday.

Deploying is a boring task which should be shared out between developers, minimum you should have at least two CRM developers who are comfortable deploying customizations in the production environment.

Don’t use personal users accounts

It’s good practice have a general service account to deploy CRM.  This allows anyone to log onto the production environment with a user account who has the required security roles and access to the server.

If the deploying account is a specific user, when someone else logs in to deploy the solution, their user might not have the required security privileges.

Importing the solution is linked to an individual user, the user won’t want to share their user password details.  A big problem can occur if individual users are not in the office and you don’t use a generic service account, you can’t do a deployment!

Backups

Rule 1.  BACK UP everything, no arguments, no excuses, just do it because if it goes wrong and you can’t roll it back the person deploying will be responsible.

A live CRM instance should have multiple backup strategies such as long term backup strategy, weekly and disaster recovery.

Production deployments needs a short term backup strategy, only used if when a problem is identified during deployment and you need to roll back the changes to leave the CRM and related components in the same state pre deployment.

Make sure you are able to roll back all data changes/config changes.

for on-premise it‘s not only the database(s) which needs to be backed up

  • Configs
  • WCF services
  • Windows applications (often running as services)

What to backup? consider different components and data

  • Databases (CRM, Config, External)
  • files on the CRM Server
  • Data on other services (Sharepoint etc)

Data and SQL stored procedures are kept on a separate database, this best practice.  It seems like added complexity but it’s separates the solutions custom tables and stored procedures from the CRM databases, meaning it won’t stop working when a CRM update/upgrade is applied.

Practice restoring

If you ask CRM Developers if they know how to rollback the changes they will say yes, you restore the database blah blah blah.

If you ask the same CRM developers to do it, they will suddenly look worried.  Most CRM developers haven’t rolled back changes.

The last place you want to learn how to restore a database or roll back solution changes is on a live production deployment.

Practice rolling back changes so if you need to do it, you can.

Data

Guids and data can be a headache, if you import the data on each environment the guids will have different guids.  Data used in workflows will break when you move them between environments.  Deploying workflows can be a long arduous job if you have to re point imported workflows referencing CRM records.

A better method is to ensure the guids of your data are the same in all CRM environments.  You can do this by importing data and specifying the guids, this can be done 3 ways 

Manual Method

Exporting the data out of your DEV CRM (ticking for reimport), turning the files into CSV files, this will have the guid each row.  You can import these into different CRM instances

Create a CRM SDK Console app

You can create a console app to export data out of your DEV CRM into XML or CSV.  Code the console app to import data specifying the guids

Use a Tool – CRM Configuration Data Mover

CRM tool wizard Lucas Alexander has created a CRM configuration Data mover to move the data and keep the guids.  He has written a great blog post to step you through using it

Introducing the Alexander Development Dynamics CRM Configuration Data Mover

Release notes

Creating a release note is a pain, it’s a boring manual job but…. they are very useful.
  • Customer knows what is being imported
  • You have an audit of production deployments (data, list of customization’s)
  • You can see what bugs have been fixed and when
If you put your bugs into TFS you should be able to create release notes by creating a view and exporting.  Like all boring jobs, automate the process and where you can and share the task between developers (e.g. share the pain and the knowledge)

Solutions

Solutions have version numbers, use them.  Don’t deploy customizations without changing the version number.

It’s frustrating and confusing when CRM developers update customization but don’t change version numbers.  This works OK in dev environments but when you have 3 or 4 CRM instances hosted on customer servers it makes it impossible to know what has been deployed.

Solutions have a description, you can use this to add more information about what was released.

Automate

If your deployment has manual steps which need to be done every time or often then automate those steps.

You can use simple bat files to copy files to the correct location and restart IIS, CRM Services. install DLL’s into the GAC, etc.

The danger of repetitive and boring tasks is they can be easily missed.  I worked on a CRM deployment which had 11 CRM servers.  The build process involved installing DLL’s to the GAC, updating solutions, updating Windows services and often importing data.  When doing this repetitive task you enter a zombie like state

clicking, copying, clicking, copying, restarting

The process was boring and took two hours to do a simple deployment.  I created bat files to copy files to the servers.  A bat file on each server, deployed DLL’s and restarted ISS, restarted CRM services.

The benefits were two fold

  • all dll‘s were all deployed and all services restarted
  • The deployment took half the time
  • The deployment wasn’t as boring

I’m sure there were better ways to automate the build but to create the bat files was simple and made the deployments less of a pain for me.

If you can automate parts of the build, do it because automating will avoid mistakes, take less time and isn’t as boring for the person deploying.

Plan and Preparation

On one project one deployment was a whopper, twice as big as the average deployment.

The deployment would take 4 hours but the size of the deployment cause us to plan the deployment in more detail and we were more prepared.  We deployed in 3 hours and it was the smoothest deployment we had done on the project.

Time spent on deployment preparation leads to smoother deployments, make sure you are given adequate time to plan and prepare for the deployment

Pair deployment

You rarely need two people to deploy customization to production but having two developers doing the deployment has advantages

  • It’s quicker with two people
  • reduces mistakes
  • Less likely to miss steps
  • Not as boring with a buddy
  • Deployment knowledge is shared

Two people will ease the pressure and work on a single person deploying.  It’s keeps both people focused during the deployment.  If the deployment goes wrong during the deployment, two heads are better than one.

Summary

This post was meant to be a small post to highlight a few observations I made during a successful production deployment.  The more I though about production deployments the more parts to a successful deployment process I found.

What I found unusual was the lack of time spent on improving production deployments and ensuring they are efficient.

Automating as much of a deployment as possible should be priority because deploying customization’s takes lot of time and there are usually at least four CRM environments to deploy to.

 


Filed under: CRM 2011, CRM 2013, CRM 2015, CRM 2016

FieldOne – Quick way to add Territories for the UK

$
0
0

Territories play are an important part in FieldOne and to understand the functionality provided by FieldOne you will need to setup territories.

Why do you need Territories

Once you have setup territories you can then use them with your resources at set their location.  The location information is used in

  • Work Orders
  • Scheduling assistant and routing engine
  • Filters on the Schedule board

Once you have Territories setup, you can add locations to your resources and work orders.  You can then schedule resources near to the work orders by searching or FieldOne can help you do this by automatically routing using the routing engine or the Scheduling assistant.

Understanding

“In theory, theory and practice are the same. In practice, they are not.”
― Anonymous

 

I recommend CRM developers add theory to the practical knowledge, which is Why CRM Developers should always start with the CRM SDK.

To get full understanding of something you need theoretical knowledge and practical knowledge, this will allow you to find the limitations and functionality of something.

FieldOne is a great example of this because it’s not really until you start to actively use the system by setting up a demo environment or put in customers data until you really begin to understand how it works.  I call this active learning and it’s where the knowledge and practical experience come together to start creating a solution.

List of Territories

The territory on resources specify which area(s) the resource can be allocated work from.

The first step is you want to download some territories, I have found a list of cities

https://github.com/Gibbs/UK-Postcodes/blob/master/postcodes.csv

postcodes csv

You can see the postcodes have geocode details but in this case I’m not going to use them.

Territory

I now have a data to create some territories, I copy the postcodes csv to a new tab/csv, I deleted all the columns expect region and renamed this  Territory Name.  I selected Remove Duplicates so I had one row for each region, I save the file as Territory.csv

Territory

Territory postcodes

FieldOne can match partial postcodes, so if you add the postcode B32 it will match all B32 postcodes. To link postcodes to a territory you need to import into the entity called Zip Codes.  I used the original postcodes.csv and deleted all the fields except region and postcode and named the region Territory Name.  I saved the file as Territory Postcodes.csv

Territory postocde

Import the file using Import Wizard and select the entity Zip Code

Zip code import mapping

Next step

Zip code import

You will end up with 2700 territory postcodes

Next steps

You now have territories in CRM, the next logical step would be to create resources and then import a territory resource to the resource.

This sets up the territory where the resource can be scheduled for when using auto routing or the resource scheduler, if you do manual scheduling you can select any resource but you would probably filter by resource territory.

Below you can see I created some resources called

Birmingham Depot Truck Driver Test001 (to Test011) and created a service territory of Birmingham.  These trucks can be scheduled for Birmingham jobs

Birmingham Truck driver territory

It’s a quick way to get territories into FieldOne, it’s more likely individual clients will have set territories and the data above won’t be specific for your customers.

The steps above will help you get some default territories in FieldOne so you can start to see how territories and scheduling work.

 

 


Filed under: CRM 2013, CRM 2015, CRM 2016, FieldOne

Why isn’t code reused in Microsoft Dynamic CRM projects?

$
0
0

Microsoft Dynamic CRM code and customizations are rarely reused between projects and few companies create solutions to share between projects. This means CRM companies need to rewrite the same code again for each project but is there an alternative method.

CRM projects focus on delivering solutions but don’t to reuse solution and code.  In many companies CRM developers can create different versions of the same solution.

When developers work on projects they are focused on delivering a solution to meet the customers requirements.  Iftimethe developer will

  • Improve code design
  • Refactor code
  • Reduce technical debt
  • Unit test code
  • Update documentation

The tasks mentioned focus on long term benefits and the reason they are often omitted.  Improving code design and refactoring make code easy to understand, extend, debug and maintain, these steps are unnecessary but make a huge different in maintaining the code.

The difference between good and average CRM developers can’t be seen in functionality delivered to the customer because they will be the same.

This posts

Why your CRM code and customizations should be simple

The problems with complex code and complex CRM Customizations

It’s difficult to simplycode, refactor and improve the design, a reason average developers omit those steps.  Explained beautifull by Martin Fowler

“Any fool can write code that a computer can understand. Good programmers write code that humans can understand.

Martin Fowler

Simple code reduces time spent debugging, maintaining, understanding and interacting with the code e.g. further phases of development.  This explains why failures in CRM projects often occur after the first release of a CRM solution when the CRM developers struggle with a messy solution.

Other signs you CRM project is doomed can be found in this article 13 signs your CRM project is doomed

I have worked on a project where a plugin had a method which was over 1000 lines long.  This method became a bottleneck in the project because developers struggled to understand what it did or how it worked.  Small changes took hours whilst developers tried to understand the code, work out where to put their fix and testing the fix hadn’t broken existing code was impossible because the code was to complex to unit test.

Custom code

Most CRM projects will have custom entities which exist only in the individual project to either make the customers business processes or needed to deliver the required functionality.

Writing bespoke projects often preclude the project code and customizations being reused because the customers requirements are not needed in other projects.

CRM developers who don’t use solid principles to reduce coupling in their code are unlikely to be able to reuse code.

Code cannot always be be reused because of unique requirements, most of the time CRM developers don’t think about reusing the code or writing it to enable reuse.

New project, new code

Before software canbe reusable it firsthastobe usable.”
– Ralph Johnson (computer scientist)

Reusing code is a great, you can add code which has already been written and tested.  It takes more effort to write reusable code, to write code in a generic way ensuring there are no dependencies on the current project.

Developers are not rewarded for code reuse or encouraged to write reusable code and customization’s by their employers.  Without motivation or reward why would developers go to the extra effort of writing code which benefits developers/company in the long term?

To write of reusable code you need skilled developers, sometimes called craftsman.  Highly skilled developers, take pride in their work and consider long-term implications of their code and who look to reuse code.

Most CRM projects are run with short-term goals in mind, answer these questions about Microsoft Dynamics CRM projects you have worked on?

  • How often do CRM developers reuse code from earlier projects?
  • Do CRM developers know what earlier projects did to understand if any of the code or customizations could be reused?
  • Howmany projects isthe code goodenoughtobe reused?
  • Does anyone look at previous projects to see if they could create a generic reusable project?

Companies don’t reuse code or catalog CRM projects.  CRM professions and CRM developers move companies often, most existing and new developers didn’t work on earlier projects and are ignorant of them.

Interaction with historic projects usually occurs whena bug is raised or through a change request.  If you are unluckily enough to be dragged into an old project, they are legacy projects with code and customizations arranged in a baffling structure taking days to decipher even the simplest of bugs.

Is there another way?

Wouldn’t it be great if new CRM projects were created by plugging together small separate solutions.  It would be quicker to create solutions like this and the code would have already been tested.

CRM developers could look at old projects for common functionality that could be reused in different projects.

Identifying functionality whichcould converted into a generic reusable solutionIf the solution was useful it could be sold but at a least it could speed up development on new projects needing that functionality.

This would involve taking a long term view of CRM development and ensuring their CRM developers are writing quality code and customizations.

Why doesn’t code get reused

Code reuse has many advantages but I haven’t seen any examples of code reuse in the projects I have worked on. I have listed some potential reasons for this below

Developers

A lot of developers don’t love writing code and to them it’s just a job, this shows in the quality of their code.  They are not passionate about it and certainly wouldn’t classify themselves as craftsman.  I don’t enjoy decorating, I take shortcuts and aim to paint a room as fast as possible.  The lack of enthusiasm and passion for decorating the room, shows in the finished product, I spot bits I missed and drip marks.

The same result can happens with the code of people who don’t enjoy developing,

To write simple code you will have need to want to improve, the best way is to have a mentor but you can get a paper/electronic mentor by reading classic books on programming or have a mentor to teach you.  I recommend

CRM companies have s high churn rate, offering small payment increases to staff based on their current salary.  LinkedIn pressures this model with recruitment agencies offering CRM professionals the current market rate for their skills and experience, more than the current salary plus inflation.

The regular movement of CRM developers leads to a lack of long term thinking and planning.  Why write code withlong term benefit if you arenotgoingtobethereto gain from it.

Development standards and way of working need a consistent workforce to implement and developers adhere to them.

Project view

CRM solution providers organise effort at a project level, gearing everything around projects.   The approach is understandable because customers pay for projects and effort is focused on money.

Creating reusable code and solutions is an activity which needs to be done around or outside of delivering a project.  It may involve going back and identifying reusable/generic solutions or taking a little bit longer to write reusable code.

Maturity of Microsoft Dynamics CRM

I’m not sure about this but I wonder if creating reusable code/solutions is something which will occur with maturity of companies and developers.

Will companies get tired of recreating everything on each project?

Versions

Microsoft Dynamics CRM currently has a major release every year, this adds a significant challenge to creating reusable solutions and code.

A solution created today could become standard functionality in the next release of Microsoft Dynamics CRM or your solution might not work, with a need to upgrade the solution to be compatible with the new versions of Microsoft Dynamics CRM.

Microsoft Dynamics CRM online is increasing in popularity, CRM online projects use a different architecture than CRM on premise.  This provides a barrier to reusable CRM on premise solutions because those solutions won’t work with the limitations of CRM online.

The long term view I have is CRM providers will create micro services in azure which will integrate with CRM online services, this architecture allows one service to be used on many CRM Online projects.  This architecture model is being used by FieldOne and their autorouting service, which is hosted in Azure.

Size of CRM companies

Small CRM solution providers whose model doesn’t afford to spend time on non project work.  Bigger companies should have an advantage over smaller companies by creating resusable code and solutions but I’m not sure many larger CRM companies do this at the moment.

Summary

It’s easy to point out the problem of lack of code reuse, it’s harder to pinpoint the steps to overcome this.

The CRM project mentality creates project focused code, not reusable or often known about by other developers in a company.


Filed under: Code, CRM 2013, CRM 2015, CRM 2016, Hosk CRM Dev, Hosk’s Microsoft Dynamic CRM Development

KPMG Crimsonwing is the number 1 Microsoft Dynamics Employer

$
0
0

You have brains in your head.
You have feet in your shoes.
You can steer yourself in any direction you choose.
You’re on your own.
And you know what you know.
You are the guy who’ll decide where to go.
~Dr. Seuss

I read this article today The Top Microsoft Dynamics Employers and I was pleased to see KPMG Crimsonwing being rated as the number 1 Microsoft Dynamics employer rated by recruitment agency Conspicuous.

Reflecting

I attended training on Core consultancy skills lead by one of my colleagues.  I learnt some valuable consultancy skills and I now have some great tools to use.  Part of the training involved giving a 2 minute presentation on any topic, we then got feedback from the instructor and the rest of the group.  It was a useful session because when watching other people present I was focusing on the content of the presentation but the delivery.

  • Stand naturally
  • Don’t put your hands in your pockets
  • Don’t fidget
  • Talk clearly
  • Use your hands
  • The pacing of a talk is important

I had been reading the book Mastery by Robert Greene and got me thinking about careers and pushing yourself.  On the train back from Canary Wharf I wrote up my presentation into the blog post

Why do people stay in boring jobs

I enjoyed CRM development but I wanted to challenge myself, learn new skills and get more experience in designing CRM solutions.

Joining KPMG Crimsonwing

I joined KPMG Crimsonwing in November and it has been a whirlwind few months and I have been challenged and pushed harder than any of my earlier roles.

In my 3 months I have attended these training courses

  • Attending Azure Architect Training course
  • FieldOne Training
  • Core Consultancy Training

The training courses were excellent but to attend the training courses I did self learning prerequisites, which helped introduce me to the topics.

After the training I have been able to use the skills learnt during training which has helped reinforce the topics covered.

Colleagues

Colleagues are a great source of information, opinions, best practices and advice.  Watching how your colleagues approach tasks can help you assess your approach and the strengths and weaknesses of different approaches.

CRM 2016 Online

A lot of CRM resellers have an attitude of CRM On-premise first and CRM online second.  in recent projects the solution has embraced Microsoft strategy of Mobile First, Cloud First

Microsoft’s Mobile First, Cloud First Strategy, Explained

I have been using CRM Online and Azure knowledge to help design cloud solutions.  I wrote this article last year

CRM online solution need different solutions which need to use Microsoft Azure services, it’s great to be involved in these solutions because the cloud and Azure is the way Microsoft Dynamics solutions will be delivered in increasing number.

FieldOne and Mobile

I have been working with FieldOne and it’s been interesting working on a service solution in CRM.  Seeing a mobile application integrate with CRM to offer a great solution is the first time I have seen a mobile application with CRM.  I have written about it in the blog post below

FieldOne– Mobile app thoughts, problems and solutions

Convergence 2015 and 2015 Microsoft Dynamics Inner Circle

It was great seeing the excitement and buzz in the office about Convergence 2015.  KPMG were a platinum sponsor and created a great stand and content.  Whatwouldmake it evenbetterisif I can attend next time

Being a member of the Microsoft Dynamics Inner circle means KMPG Crimsonwing have a good relationship Microsoft.

Excellence is not a skill. It is an attitude. ~Ralph Marston

 

The post is the opinions of the Hosk and not the opinions of my employer.


Filed under: CRM 2011

Why Resco acquiring CWR’s mobile CRM is important

$
0
0

Price Is What You Pay, Value Is What You Get

Warren Buffett

 

One large purchase for Resco, one big leap for Microsoft Dynamics Mobile space.

Interesting press release from Resco announcing they had taken over CWR’s mobile line of business which includes

  • Technology
  • Customers
  • Partners

You can read the whole press release – Resco acquires CWR mobile CRM activities

Who are Resco?

Resco are one of the leaders in mobile software and it’s product Resco Mobile CRM is a mobile solution for IOS, Android and Windows.  They have been in business for 16 years have 1200+ corporate customers and 50000 licences users.

If you unfamilar with Resco and it’s mobile application this video will give you an introduction

Resco offer a free trial to try their mobile app here

If you want to learn more about Resco, they have an interesting about page 

Who are CWR Mobile?

The CWR Mobile about I have learnt CWR Mobile have been in the mobile business for 10 and in CWR was named Microsoft’s Partner of the Year for Mobility Business-to-Business Applications in 2011.

CWR Mobile’s product is called CWR Mobile CRM, you can read the functionality of the product here.  Watch the video below

Why did Resco buy CWR Mobile CRM assets?

The first thing we should clarify what has happened

It takes ownership of the entire CWR mobile CRM portfolio including its technology, customers, partner activities and responsibilities

Resco have purchased the technology, customers and partner activities, which includes around 11000 users.

Resco and CWR Mobile are the two biggest ISV’s, so instead of of Resco competing against CWR mobile it can now focus on improving the product and competing against Microsoft mobile application which is now it’s main competitor.  There is a great quote in the press release

“CWR has been in a healthy competition with Resco for several years, where both solutions had their specific pros and cons. From now on, customers, resellers, and integrators can buy one unified solution via one software company: RESCO,” says Cyril Vonken, CEO of CWR Mobility.

 

Now Resco has two different solutions to offer to customers and can share resources and possibly some development in the future.

Msdynamicsworld has written an insightful article on the topic

Resco to Acquire CWR Mobility’s Assets, Consolidating Microsoft Dynamics CRM Mobility Space

At the bottom of the article it has a good quote from Resco COO Ivan Stano

“Our ambitions go beyond the Microsoft Dynamics CRM world now,” he says. “Based on our unprecedented position in Dynamics, we are actively approaching the remaining top three CRM providers (Oracle, Salesforce, SAP). We see Resco as a complete mobile strategy for businesses no matter what their back-end systems are. This is our top priority after the take-over.”

 

It raises an important question, with fewer competitors will Resco spend more time focusing on creating mobile applications for other CRM systems?

Why it’s important

My first experience of mobile applications integrating with CRM was using FieldOne where the mobile application plays an important part in the overall solution.

I saw how effective a mobile application can be for service management but it’s likely mobile devices will be incorporated in more projects going forward.  Location was a problem in projects, functionality available in mobile devices means this is an opportunity to capture or consume data with  location data.

The FieldOne application allow service engineers to update jobs and schedulers in the office could react to these updates in real time, reroute other engineers and use the live information.

You can read my initial thoughts on FieldOne in the article below.

FieldOne – Mobile app thoughts, problems and solutions

Mobile applications will play a bigger part in CRM solutions, more customers will want mobile devices to consume and update data in Microsoft Dynamics CRM.  Mobile applications will improve and industries who have mobile workers will

It’s important for a Resco to push Microsoft to improve their own mobile application. It makes for an interesting relationship between Resco and Microsoft,  Resco is a gold partner and have worked with Microsoft for many years.

Resco offers some great functionality in it’s mobile application which

  • signing for items
  • updating CRM
  • uploading pictures
  • work offline
  • consuming data

Resco were mentioned by Leon Tribe article as a company to make Microsoft Dynamics even more awesome!

Four Acquisitions To Make Dynamics CRM Awesome

Will the purchase of CWR Mobile CRM make Resco more or less appealing for Microsoft to purchase?  It will certainly make them more expensive.

 


Filed under: CRM 2015, CRM 2016, Mobile

Never leave a CRM developer stranded

$
0
0

 

What lies behind us and what lies ahead of us are tiny matters compared to what lives within us.

Henry David Thoreau

 

Developers are a community which spans projects, developers jump in and out of different projects for varying times.  Any code or customizations are developer creates might be maintained by himself or another developer, it‘s important to do a good job to make it easy for yourself and others.

When developers in a company work well as a group, they push each other to keep high standards.  Keep high standards takes pride and enthusiasm because it‘s harder to write simple code than complex code.  When one developer drops their standards, this can infect a whole project, Bad code is like a virus, don’t get infected.

Microsoft Dynamics CRM developers need to work as a group because CRM has lots of pockets of specialisation and impossible for one developer to know the functionality and limitations of all aspects of CRM.  The knowledge of the group of developers can give guidance to developers without knowledge of parts of CRM.

Today I say act like a soldier, in an earlier blog I told you to write code like a boy scout, what will future blogs bring

A Team of individuals

One day a call came into the support desk with an urgent bug on a Microsoft Dynamics CRM project I had not worked on, I had to investigate the bug.

The developers who worked on the project, either left the company or was unavailable.  I read the project documentation,itwas outdated and didn’t help.  I looked at the development environment and started my investigation with the code and CRM.

The code wasbig ball of mud, rolled in a plate of spaghetti with technical debt on the side.  This was legacy code with no one to help me, itwould be a long day, my fellow CRM developers had left me stranded.

I poked and prodded the code, toyed with the CRM, asked questions, documented my investigation and was 90 percent sure I had found the bug but it‘s scary changing legacy code with no unit tests.

Legacy code evolves to incorporate lots of fixes to particular problems or processes, when viewing the code for the first time often the code doesn’t seem logical unless you understand the business logic.  

Don’t let you fellow CRM developers down struggling with poor code I had written.  When you take shortcuts, don’t document code and write.

Code echoes

Creating code islike creating a baby, the creation is fast and fun but you havetolookafterthe code foryears.  

Once the code is written it will be read, maintained, extended, debugged for years.  Complex code willmaketakeupmoretime, sometimes asmall bug fix or code change cantake days todo.  Coding faster will slow you down later, particuarly first draft code which has not been refactored.

The code you create today is likely to be used and maintained for years.  Make sure quality is high so the pain of maintaining it is low.   Working with legacy code, finding bugs can take hours/days and thoughtprocessof.  My usual approach to legacy code is

If the legacy code ain’t broke, don’t touch it and slowly back away.

Poor quality code will leave developers maintaining that code stranded and struggling with the code and time taken to get it right.

Starship developer

The best thingsinlifeare beyond money; their price is agony and sweat and devotion ― Robert A. HeinleinStarship Troopers

Reading Robert A. Heinlein Starship Troopers , in the story it follows one recruits journey in the mobile infrantry.  The mobile infrantry are volunteers, their actions are motivated only by their willingness to be in the mobile infranty and they can leave at any point.

Self motivation is the strongest form of persuasion and motivation.  This theme was discussed In the book  Leading by Sir Alex Ferguson (Author), Sir Michael Moritz (Author) gives insights into management style of Alex Ferguson and motivated to write Leadership

I like to bring the thoughts and opinions from different areas to CRM development to see if there are similarities and differences.  CRM developers are a community who share and help each other and sometimes contribute to the frustrations of a CRM developers The Frustrations of a CRM Developer

  • CRM developers are volunteers, they havechosen to be a CRM developer
  • CRM developers should be proud to be a CRM developer
  • CRM developers can change jobs at any time if they don’t likeit
  • CRM developers are part of a team
  • CRM developers are part of the Microsoft Dynamics community

I have nothing to offer but code, customizations, sweat, solutions, tears, documentation and unit tests and blood to offer – Hosk

CRM developers are soldiers, battling bugs, deploying troops, creating customizations to take down customer requirements and keeping our heads down when the flack is flying.

Never leave a man down

The chances of CRM developers dying for the cause are remote, therehave been a few close calls but I got away with a few broken bones and nightmares (which mainlyconsist of having to support CRM 4 projects and SSRS report formatting)

The soldiers creed – I will never leave a fallen comrade.

I saw this in the film Black Hawk down, where a helicopter crashes and is surrounded.  Some troops drive in to rescue them and get stuck themselves.  They fight their way back to base.  They realize not everyone made it back and most of them go back and rescue their comrades.

Why is it important because if you were the man left behind you would hope your buddies would come back to rescue you, it gives that Soldier hope.

The American soldiers have the Soldier’s Creed (US version)

I am an American Soldier.
I am a Warrior and a member of a team.
I serve the people of the United States, and live the Army Values.
I will always place the mission first.
I will never accept defeat.
I will never quit.
I will never leave a fallen comrade.
I am disciplined, physically and mentally tough, trained and proficient in my warrior tasks and drills.
I always maintain my arms, my equipment and myself.
I am an expert and I am a professional.
I stand ready to deploy, engage, and destroy the enemies of the United States of America, in close combat.
Iama guardian of freedom andthe American wayoflife.
I am an American Soldier.

I adapted it, similar to updating the quote from full metal Jacket Why CRM Developers should always start with the CRM SDK 

CRM Developers creed (Hosk Version)

I am a CRM Developer.
I am a coder and a member of a team.
I serve the people of the Dynamics CRM Community.
I will always place the project first.
I will never accept defeat.
I will never quit.
I will never leave a fallen comrade.
I am disciplined, physically and mentally tough, trained and proficient in my code tasks and skills.
I always maintain my code, my computer and myself.
I am an expert and I am a professional.
I stand ready to deploy solutions, engage customers, and destroy the bugs in the code.
Iama guardian of freedom andtheLeisurelywayoflife.
I am a CRM Developer.

Here is an interesting article on the subject Leave no soldier behind – no exceptions

Don’t leave a CRM developer stranded

Leave no man down.  You are part of a team, you might not see or talk to your team mates everyday but you are a group and you must work together

Ways to leave your fellow CRM developer stranded

  • hard to read code
  • poor quality
  • lazy bugs
  • no comments
  • poorly labeled code
  • first draft code/no refactoring
  • no documentation

CRM developers are a team, your code/customizations will be used by your fellow developers, don’t let them down with first draft code

  • Have pride in your work
  • Skilled expert
  • Enjoy working with your team mates
  • If everyone keeps a high standard it works
  • Soldiers are highly trained and have pride in their abilities.
  • Soldiers have faith in fellow soldiers

When someone is out of the office and they call you for help, help them I will never leave a fallen comrade.  Stop what you are doing and bust a gut to find the answer because if you were out on site you would help the team would help you.

Final thoughts

Individual commitment to a group effort – thatis what makes a team work, a company work, a society work, a civilization work. Vince Lombardi

To deliver projects successfullyit takes a team effort, with many individuals working together.  Strength of a team of CRM developers comes from each individual working together.

CRM developers might not always work in the same team on the same project by CRM developers team is beyond projects.  The code and customizations you create will be used and maintained beyond the life of delivering the project.  Code and customizations expand beyond their project and unite CRM developers together.  Create code and customizations you are proud of and will be easy for your follow CRM developers to maintain and extend.

Don’t leave a CRM developer stranded.

“Alone we candosolittle, together we candosomuch.” Helen Keller

 

This post is my personal opinions and not the views or opinions of my employer :-)


Filed under: Hosk CRM Dev, Hosk Stuff

Questions on Microsoft Dynamics CRM solutions and environments

$
0
0

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.

Unmanaged 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


Filed under: CRM 2011, CRM 2015, CRM 2016, Hosk CRM Dev, Hosk’s Microsoft Dynamic CRM Development

CRM developers tools of the trade – ReSharper

$
0
0

Do not wait; the time will never be ‘just right.’ Start where you stand, and work with whatever tools you may have at your command, and better tools will be found as you go along.

George Herbert

CRM Tools

Tools play an important part of the CRM developers life, they can save you hours of time and speed up development.  One of the best examples of a tool saving you time and effort is CRM MVP’s Scott Durow’s Ribbon workbench.  The manual process of editing the Ribbon in CRM is incredible tedious, the Ribbon workbench offers a GUI way to do it and it’s free.

Tools allow you to code on the shoulders of great CRM developers

You should checkout Tanguy’s XrmToolBox

I have reviewed a number of tools on this blogpost – Hosk’s CRM 2013 Tools List

Tools

CRM tools are very useful but there are some generic tools which are useful to CRM developers and one I would highly recommend is ReSharper by JetBrains.

ReSharper is a Visual Studio extension for .Net developers.  I have heard a few developers talk about ReSharper, so I thought I would have a look myself.  What you usually find is anyone who has used ReSharper will tell you how good it is.

The downside is this tool isn’t free but it doesn’t cost that much, find the price for personal use here

It is free for various people/groups which you might be part of

Additional options
* For startups (50 percent off)
* For students and teachers
* For education and training
* For Open Source projects
* For .NET user groups
* For Microsoft MVPs

For a personal license it’s 99 pounds.   Which if you use this a few times a week isn’t that much and the benefits to your coding and time spent finding bugs, formatting and other tasks could easily be worth it.  They also have a pay monthly option

ReSharper has a try before you buy scheme
The good news is you can try ReSharper free for the 30 days, so download it and give it a go.
I have tried it and I love it, to get the full benefits you will need to be writing CRM plugins and/or .NET code.
These blog posts highlight the benefits of ReSharper

Lots of features

ReSharper has lots of functionality, one of the difficulties I had was to learn what features were available, what they did and when I should use them.

These blogs were useful in learning about the ReSharper functionality

Warnings not nagging

I appreciate the way ReSharper works because it uses warnings.  These are often best practices but not serious.

It pops a warning mark on the right of the code and if you click on it you will get to a light-bulb.

Often I take these as suggestions, sometimes I do, sometimes I don’t. The way ReSharper warns you I have found not to be annoying or nagging.

Keeps me thinking

One of the positives of Resharper is keeps offering me code assistance and constantly keeps me thinking about the quality of code I’m writing.

  • It has offered to change a query expression to a linq query
  • swap If Else statements to a switch
  • Catching the nulls
  • One great features of Resharper is it warns you if a variable may contain null and offers to add an if statement to catch it.

Correct Naming standards

ReSharper is good for nudging you in the direction of better coding and will warn you to rename fields and functions

  • Lightbulbs – quick fixes
  • closing brackets and quotes automatically
  • Code Generation
  • Alt – INS

RED Errors whilst you type

“Big deal,” you may say. “Visual Studio already has squiggles like that.” True. But Visual Studio only shows the squiggles after you compile. ReSharper points out compiler errors in real-time, as you type. It does its magic completely in the background.

Grey is dead code

If you see grey code, it means you don’t need this code because it’s not being used.  Sometimes this is annoying because you are about to use it.  It’s good for getting rid namespaces you don’t need (ReSharper will get rid of them for you)

One feature I really like is when ReSharper puts up an error, there is an option to click which says

Why is ReSharper suggesting this and it will explain the coding practice to you

Auto Closing Delimiter

ReSharper automatically closes brackets

Not used warning

ReSharper has great features and one of them is to warn when variables are not used

I had an example where I was assigning a value and then overwriting it.  Resharper warned me that variable value wasn’t being used in any code branch

warnings I found annoying

VAR

One warning which annoyed me was Resharper trying to change all varibables to var to improve readability.  Personally I like developers to use the correct variable type and using var is a bit lazy.

it kept trying to persuade me to remove this but FXcop kept advising me to put this in.  Only one way to resolve this

FIGHHHTTT

The good news is it’s easy to turn off the warnings.  You can turn off the warnings in a method or class or project.

Or you can turn the inspect severity and then search for the error you want to remove.

Learn to use your tools effectively

Tools can make speed up development process and make development processes easier. Choosing the right tools is one part of the solution.  The rationale behind this is you probably use your development tools on a daily basis, if you can find functionality which speeds up, automatics tasks you do every day, lots of times a day you will make a considerable time saving.

This sums up my thoughts on resharper, it eases and speeds up my development

information for learning ReSharper

There is a series of screencasts on the Dime Casts website which are quite good as an introduction.There is also the 31 days of Resharper and the official demos give you an idea of what’s possible so you know to dive into the menu.
This article show you how ReSharper’s code creation

Absence makes the heart grow fonder

The time I really notice the work ReSharper does is when I am helping with someone and they don’t have ReSharper.

ReSharper helps refactoring, this article describes why – Why use ReSharper manage refactor code

Overall

ReSharper makes working easier and smoother with lots of great enhancements.

Warning me about unusual variables, methods and usings is useful.

Warnings about code which could be done better is useful

It’s difficult to describe what exactly ReSharper does but it does things better than Visual Studios’s out the box functionality and will make your life easier.  If you use Visual Studio on a daily basis all the small benefits will add up to large benefits.

If you try ReSharper you will see why it’s great and will be tempted to buy it


Filed under: Hosk CRM Dev, Hosk’s Microsoft Dynamic CRM Development, tools

Managing Microsoft Dynamics CRM online service updates

$
0
0

I like to go full bore into something. If you have a backup plan, then you’ve already admitted defeat. Henry Cavill

If you don’t manage backups they will manage you into a whole bunch of trouble

Microsoft Dynamics CRM Online delivers two service updates a year, you can delay but you have to update your Microsoft Dynamics CRM online once a year.  One service update is mandatory.  You can delay a CRM online service update but you cannot hide from it.

When Microsoft Dynamics CRM Online was first released I wondered what Microsoft Dynamics CRM online subscribers did before sandbox instances, how did they test the service updates for their Microsoft Dynamics CRM online.  If you consider the on premise version of CRM is often 6 months behind you need a Microsoft Dynamics CRM online to test the new functionality.

There are two key questions you need to ask

  1. How do I test my Microsoft Dynamics CRM Online?
  2. How do I develop for Microsoft Dynamics CRM Online?

 

Microsoft Dynamics CRM Online update facts

  • There are 2 service updates a year.
  • You will receive an email with the schedule update date.
  • You can reschedule the update to a date and time to suit you.
  • Your Microsoft Dynamics CRM online instance will not be updated unless you approve it.
  • You can choose to not apply an update.  The next update becomes mandatory, meaning you have to apply the minimum of one update per year.
  • Best practice (says Microsoft) is to run the latest version of Microsoft Dynamics CRM Online
  • Best practice (says Hosk) is to delay updating your version of Microsoft Dynamics CRM online for 1 or 2 months, to allow any nasty bugs to be fixed by Microsoft.  I discuss something similar in this blog – Should you keep up with Microsoft Dynamics CRM release cycle?

Best approach to updating CRM online

Make sure Microsoft Dynamics CRM online updates don’t break none of your customizations by testing the whole system.

Microsoft has made this process easier by introducing sandbox instances, which allows you to create an environment copy of production on a non production (sandbox) instance.

Microsoft added sandbox instances, you get one free if you 25 enterprise users or they cost £90ish plus data costs a month.

Learn about Microsoft Dynamics Sandbox instances here with a good technet article

You can apply the Microsoft Dynamics CRM online service update to the sandbox instance and test your customisations, if it works without problems you can schedule the service update to the Microsoft Dynamics CRM online production instance.

Microsoft created a great technet article – Manage Microsoft Dynamics CRM Online instances

It has two scenarios on updating Microsoft Dynamics CRM online.

Be Prepared

Be Prepared… the meaning of the motto is that a scout must prepare himself by previousthinking out and practicing how to act on any accident or emergency so that he is never taken by surprise. Robert Baden-Powell

I wrote Why you should write code and customizations like a boy scout and you must be prepared to manage your service updates.

You must be prepared in advance when the service update is available, what’s in the service update and how you will test your CRM instance.

The customer needs to be ready to test the customisations and sign off the update has not effected your customisations.

You can delay one service update but this will put more pressure on the next one, you must ensurethere are resources and time to test the update.

Don’t let a service update sneak up on you and don’t underestimate the effort needed to test all the customisations

The customer will need to have some resources ready and be in a position to sign off so you can schedule the service update to your product CRM Online environment….Time is ticking.

Microsoft Dynamics CRM Online service update waits for no one.  The customer needs to be made aware of the process, cost and time constraints.

  • Time– One service update is mandatory per year.
  • Cost– Cost of a sandbox environment.
  • Effort– You will need a CRM admin to create the sandbox instance.  Resources will be needed to test the customisation, you will need a test plan.
  • Sign off– Someone needs to sign off the sandbox environment
  • Schedule– Schedule the production service update

Practice

The practical usually turns out to be different from the theory.  Make sure you are comfortable with creating and configuring sandbox instances.

Know where to look for service updates and how to schedule them.

Production deployments are not difficult but it’s important they are done right


Filed under: CRM 2016

How are you going to test the logic of your code

$
0
0
Simple systems are not feasible because they require infinite testing. Norman Ralph Augustine

Developers must be able to isolate and test their code easily and often in their own development environment.  If you don’t test your code you will let more bugs into production environments and this will cost you more time and effort in the long term.

Developers must be proud of their work, be craftsman and create quality code.  Poor quality code is a drop in standards which can spread to multiple developers like a virus – Bad code is like a virus, don’t get infected.  As a team/group you can choose to raise standards and get all members to raise their game or you can let standards drop.

Keep your standards high, your code quality and Never leave a CRM developer stranded

Questions

I get questions from Hsok CRM blog readers asking me to resolve problems they are having or asking for advice.  Below are two good examples

If I could offer some advice about asking questions

  1.  Be polite, say hello, how much you love my blog and then your question:-)
  2. Investigate the problem yourself first.  Google the problem, try things, ask your friends/colleagues and then if you still have problems ask the problem on the CRM forum
  3. Provide me (and the CRM forum) with as much information about the problem as possible e.g. CRM version, what you are doing and why, what you have tried, the results of your research.  More information = greater chance of someone/me helping you.

I received an email from Martin who had read my blog posts on unit testing with Microsoft Dynamics CRM

Martin was working on writing a webservice and found unit testing was a great way to test the logic of the code without having to deploy the code in the production environment which was tricky.

Isolate the logic of your code

Logic is the beginning of wisdom, not the end. Leonard Nimoy

 

Unit testing is about isolating and testing the logic of your code.  The main benefits of unit testing

  1.  You think about designing and structuring your code to make it easy to test the logic
  2. You and any developers can rerun your tests
  3. It’s easier to refactor the code because you can test it still works.
  4. Developers who unit test, think more about what they are testing

Thinking about what you are doing, questioning how you are designing the code and thinking about what the code is doing helps create better code.

First draft code works but is sloppy and complex with lots of dependencies.  First draft writing, you must edit your work to remove sloppy code and improve the overall code quality.

UNIT TESTING ALLOWS YOU TO EDIT CODE AND BE ABLE TO TEST THE CHANGES

If you haven’t got unit tests, you might break the code and not know about it, unless you test the code and all areas which uses the code.

How do you know the logic works

When a junior developer has written a plugin, web service or piece of code, I always want to know how they have tested the code works.

Before I started writing unit tests, I used to have a console application which connected to the development CRM environment and ran my plugin code.  I could do this because I wrote the plugin code as a separate piece of code which was passed a CRM connection and entity.

If you cannot run through the logic of the code on your own dev environment then you are making it difficult to test.  Difficult tasks are often not done by developers short on time.

Unit tests are the best way to test the code but a console app so you can step through the code is a good second.

 

Martin’s email about the

Use Case for Mocking WebServices

Hi Hosk,

Unit Testing is at first somehow abstract but we had some requirements to use a 3rd party WebService, where Mocking saved us a lot of time.

The WebService-Provided only allowed connection from whitelisted IP’s. Our customer only ordered the smallest Internet Package from his ISP.

Every 24 hours the customer had a new public IP. So we couldn’t get a connection form the cooperate network. Upgrading the ISP-Packing was also impossible.

The Webservice-Provided refused to add the whole ISP-Subnet. Our customer had already an Azure Cloud Service with a reserved (static) IP. So we decided to deploy our Code there.

Deploying and debugging is somewhat unhandy in this scenario. It take approximately 15 Minutes to deploy the Cloud Service and start Debugging.

I decided then to Mock the SOAP-Service so I could easily develop locally. This was a big time saver.

Maybe this Story helps other to understand what you can also address with Unit Tests/Mocking. Another possible Use Case for it is when you only have a production System and don’t wan’t to mess it up or when you must pay for every requets you submit to the 3rd Party WebService.

Lesson’s Learnt

If any other readers have stories about problems overcome or interesting solutions to problems please write to me at ben.hosking@gmail.com


Filed under: CRM 2011, CRM 2013, CRM 2015, CRM 2016

Source control and Visual studio team services

$
0
0

Do the right thing. It will gratify some people and astonish the rest. Mark Twain

VSTS – Visual studio team services, previously known as Visual Studio Online

Developers have to use source control and system to manage bugs.  I have used lots of source control over the years

  • Visual Source Safe
  • CVS
  • GIT
  • Subversion

I have set up source control, versioned, branched and of cause suffered merge hell.  Source control features on The Frustrations of a CRM Developer.

Source control has saved my bacon many times.  I worked at one company which didn’t use source control, which was extremely scary.

Likemost applications they get picked upand moved tothe cloud andmadeintoa service. Personally I’m beginning to prefer services because it takes the pain of hosting and maintaining a server and you don’t need to go through an IT team to fix problems.

Most developers refer to it as TFS, the team services has not caught on yet and is adding to the confusion at the moment.

When TFS/VSTS is done well its a benefit, a central location for work items and bugs, offering a way to log and maintain your work items. It’s used to create release documents (blog link), link work items with code and offer a history for bugs.

When TFS/VSTS is done badly is a curse, it slows things down and can be difficult to get developers to use.

Start as you mean to go on and get it right at the start of the project.

It takes effort but it‘s best to start a project or phase by putting all the user stories, solution backlog or work items into VSTS/TFS at the start.

  • it sets the standards for everyone
  • all development and work on requirements/bugs is captured, you have a history
  • burn down is done using graphs out of the box
  • once setup the effort to maintain is minimal

As a developer VSTS gives you a history of the effort in developing and for bugs it leaves an audit trail of effort.

It‘s always good to have information in central systems rather than people’s computers and heads because it allows work items/bugs to be picked up by other developers.

VSTS allows users to raise bugs directly and monitor progress, this self service functionality can save hours of keying information from emails and phone conversations.

One final great use of VSTS is to create release notes by exported fixed bugs from VSTS, which I blogged aboutbelow

CRM 2015 – Best practices for CRM Deployments 

One unusual aspect of VSTS is it charges you for building the solution by the minute.  I’m not sure about charging for builds, it doesn’t seem right

VSTS Training

Microsoft has good training resources for VSTS, a great overview and 3 hours of video training.

Overview with documentation

Video tutorial

 


Filed under: CRM 2011
Viewing all 469 articles
Browse latest View live


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>