Why you shouldn’t put unsupported customizations in Microsoft Dynamics CRM

I was answering a CRM forum question on unsupported changes in CRM.  The developer wasn’t really sure why it was important not to put in unsupported changes into CRM.

Here are my thoughts on why you should not put in unsupported customizations

The main problem with unsupported changes in Microsoft Dynamics CRM, is there is no guarantee they will work in the future because it may use/reference some functionality that Microsoft will change in the future or possible remove

if your CRM instance has a problem and there are unsupported changes in the code Microsoft support will not help you (only offer limited support) because the unsupported changes may be the cause of the problems you are experiencing.

finally when it comes to upgrading the solution, the unsupported changes may not work and could cause difficulties when upgrading.  This probably seems a long way off when you are putting the change in but upgrading versions of CRM will involve a lot of checking anyway, you don’t want to make more work for yourself later.

It can be difficult because sometimes the customer really wants the unsupported customization but you need to inform them of the drawbacks of doing this

MVP writes about the dangers here
http://gonzaloruizcrm.blogspot.co.uk/2011/08/risks-of-unsupported-customizations-in.html

Below are some links to what are unsupported and supported changes in the various different versions of CRM

Unsupported changes in CRM 2013
http://msdynamicscrmblog.wordpress.com/2013/10/18/common-unsupported-customization-practices-in-dynamics-crm-2013/

supported and unsupported changes in CRM 2011
http://msdn.microsoft.com/en-us/library/gg328350.aspx

CRM 4 – unsupported customizations
http://msdn.microsoft.com/en-us/library/bb928224.aspx

Build Queries with FetchXML instead of QueryExpression

When developing I like a good QueryExpression because once you have got one in code it’s easy to change it to the new query you are doing.  I usually work out the rough logic with an advanced find and then download the xml to see the names of the fields etc.

You can read some of my great blog posts on QueryExpression’s below or read on for some FetchXML fun

CRM 2011 – QueryExpressions where a field is null

CRM 2011 – How to select an Id in a QueryExpression

CRM 2011 – How to do Like statement in QueryExpression

Recently I was doing a QueryExpression but I need to link the query expression to two or three different entities and the query expression was getting out of hand.  I could do the query with an Advanced find so I was thinking if I could just use that it would be a whole lot easier than trying to convert the FetchXML to a QueryExpression.   So after a bit of googling I found that you can use FetchXML queries inside plugins.

It was while I was studying for CRM 2011 Extending CRM exam that I found this page – Build Queries With FetchXML and this line

A FetchXML query can be executed by using the IOrganizationService.RetrieveMultiple method. You can convert a FetchXML query to a query expression with the FetchXmlToQueryExpressionRequest message.

If you want to use FetchXML in your plugin/Custom Workflow you will need to download the FetchXML from your advanced find.  There is a very helpful button on the advanced find that appears after you have run the advanced find, which you can see below magnetismsolutions blog)

You will have to do a bit of conversion from the downloaded fetchXML because all the fields will be in double quotes and these will need to be in single quotes and you will need to put an @ at the front and double quotes around the whole FetchXML query whilst you save it to a string variable.  You then pass the string RetrieveMultiple as shown in the example below

The example below is taken from here

// Retrieve all accounts owned by the user with read access rights to the accounts and 
// where the last name of the user is not Cannon. 
string fetch2 = @"
   <fetch mapping='logical'>
     <entity name='account'> 
        <attribute name='accountid'/> 
        <attribute name='name'/> 
        <link-entity name='systemuser' to='owninguser'> 
           <filter type='and'> 
              <condition attribute='lastname' operator='ne' value='Cannon' /> 
           </filter> 
        </link-entity> 
     </entity> 
   </fetch> "; 

EntityCollection result = _serviceProxy.RetrieveMultiple(new FetchExpression(fetch2));

foreach (var c in result.Entities)
   {
   System.Console.WriteLine(c.Attributes["name"]);
   }

The results are same EntityCollection you would get from a QueryExpression, which makes it easy to reuse code you have written for query expressions.

The other thing you will probably need to do is integrate values and guids into the FetchXML.  You can pass in a guid and then put in double quotes, the guid variable with a + sign either side.  You can see the example below

Guid contactGuidVariable;

EntityReference contactEntityRef;

string fetch = @”<fetch version=’1.0′ output-format=’xml-platform’ mapping=’logical’ distinct=’false’>
<entity name=’contact’>
<attribute name=’fullname’ />
<attribute name=’address1_upszone’ />
<attribute name=’address1_line1′ />
<attribute name=’address1_postalcode’ />
<attribute name=’createdon’ />
<attribute name=’contactid’ />
<order attribute=’fullname’ descending=’false’ />
<filter type=’and’>
<condition attribute=’statecode’ operator=’eq’ value=’0′ />
<condition attribute=’contactid’ operator=’eq’ uiname=’BEN HOSK’ uitype=’contact’ value='” + ContactGuidVariable + “‘ />
</filter>
</entity>
</fetch>”

if you pass in a guid you can just pass in the guid variable but if it’s an EntityReference then you would need to contactEntityRef.Id

Microsoft have written some good articles on this you can read here

Build Queries With FetchXML

Use FetchXML to Construct a Query – this one is good because it has code examples, which I have borrowed in this blog

Some good articles on this are

http://www.magnetismsolutions.com/blog/roshanmehta/2012/04/16/dynamics_crm_2011_querying_data_using_fetchxml

Anticipated Microsoft Dynamic CRM salaries for 2014

I was pursuing LinkedIn yesterday and I noticed an interesting post from an old colleague of mine Helen Artlett-Coe who is an excellent recruitment consultant who works for Crimson..

The link was for anticipated salaries for various Microsoft Dynamic CRM roles, you can read the whole article which makes some good points as to why CRM people will be in demand next year, which in some ways is thanks to the release of CRM 2013

Dynamics CRM Market Analysis Q4 2013

Interestingly Crimson thinks the permanent market will be busier than the contract.

I have copied their predicted wages, although I’m not sure what region of England it is, so it could be London but it will provide you a rough idea of what you the average CRM wages are.  I would recommend reading the whole document because it gives some analysis and explains what the CRM market will be like next year, click here to read it

Anticipated Salaries

Microsoft Dynamics Community page and earning Badges

leaderboardb

I logged onto the Microsoft Dynamics Community page today and found that it has been done up, it reminded me a bit of the Xbox 360 for some reason.

The old site was rather clunky, which I always thought was quite odd given that Microsoft is a massive company who specialize in technology.

So what is the Microsoft Dynamics community actually for, well Microsoft describe it as a place to collaborate with your peers and expert

Whether you’re here to get help or to help others, thanks for stopping by.  As you complete specific activities in the community, you will earn badges to showcase your participation and credibility.

So the Microsoft Dynamics Community allows you to collaborate with fellow CRM users, there are CRM blogs, which my blog gets syndicated to, there are also forums where you can post and answer CRM questions.

Here is a link to my profile if you fancy following me or adding me as a friend, although I’m not entirely sure what adding me as friend actually does

https://community.dynamics.com/members/hosk/default.aspx

Contributing to the CRM community allows you to earn badges.  You can get badges for blog posts, answering forum questions and what’s more there are different levels of badges

So why would you want to earn badges and contribute, well it’s so you can become a CRM expert and maybe if you contribute a lot to the CRM community you may become a CRM MVP, below is a snipped from one of Microsoft blogs about it

EARN BADGES AND SHOWCASE EXPERTISE

As you complete specific activities in the community, you will earn badges to showcase your participation and credibility.

BECOME AN EXPERT

Ready to take the next step?  Compete for the Microsoft Community Contributor (MCC) badge and strive to become a Microsoft Most Valued Professional (MVP).

I was looking at the badges I had acquired, you can check out my badges here, unsurprisingly I have a blogger 4 badge, which means I have posted 150 blog posts and 47 other members have earned this badge.

one badge that made me laugh and showed Microsoft does have a funny side

I’ve been a member for 2 years and all I got…

there is also some fan and celebrity badges for following and being followed.

It was interesting looking at the badges and the badges the CRM MVPS have earned, which you can look at by clicking the link below for the people who have the

https://community.dynamics.com/braggerbadges/badge/69.aspx?pi10956=1

amusing the MVP badge is worth 1 point!

The Microsoft Dynamic Community is a good concept and does work well because CRM experts to answer the forum questions in their quest to become or keep the CRM MVP status.  I’m sure most people reading this blog have found the answer to a CRM question from a forum post.

It also offers a route for people to become CRM MVP’s because by blogging, answering questions and doing lots of other things for the CRM community anyone can become a CRM MVP, although it isn’t easy because if you look at the current CRM MVP’s here you will probably recognize lots of the names on the list because they have published CRM tools, books, answered lots and lots of forum questions and probably have fantastic CRM blogs which you have read many posts from.

 

Free CRM book from powerobjects

Anyone who has used Microsoft Dynamics CRM 4, CRM 2011 and if they are really keen CRM 2013 will have at some point read an article on CRM by the good people at PowerObjects and the PowerObjects CRM blog is one of the best out there, click the link below to have a look

http://www.powerobjects.com/blog/

Recently they have released a CRM book for free, wooohoo.

The book is more like a web resource than your stand PDF/ebook, in fact I will let them describe it, which they did in their blog post here

This isn’t really a “book” in the traditional sense. It’s published entirely online and is constantly being updated and improved. We like to think of it as a living, breathing, comprehensive online guide to all things Microsoft Dynamics CRM.

You might be wondering what possessed PowerObjects to publish such a wealth of knowledge online for free. That’s been answered pretty thoroughly in the book’s introduction, but to summarize:

  • We wrote it because we had the knowledge and resources.
  • We made it available online so we can keep it relevant with regular content updates.
  • We published it for free because it reflects a core value at PowerObjects: Always Provide Value.
  • Finally, it helps us reach our goal of positively impacting 1 million CRM users.

The CRM Book covers a wide range of topics from user basics to CRM system administration and even extending CRM. We’re also working on additional content that’s more relevant to the changes that come with Microsoft Dynamics CRM 2013.

We hope you find this new resource valuable. Feel free to dig in and start reading or bookmark it as your go-to CRM reference!

There is some very interesting parts to the book, what I really liked was how they have described how CRM works and what each different entity does and how to use it.  You can take some of these parts and give them to customers/users to help them understand how to use CRM and familiarize themselves with the jargon which can be an stumbling block to begin with.

The book is split up into

Basics

System Administration

Extending CRM

it also have a very useful search feature, so you can just search for the topic you are interested in, this is one area this format has an advantage over traditional books because you don’t have to keep flicking through sections to find the bit you need.

The book seems to be a mixture of CRM logic and knowledge which is non CRM version (e.g. not CRM 4 or CRM 2011 or CRM 2013) and then has some bits which are CRM 2011 and a few which have been updated.  I guess they will continuously update the book as they go along.

There are some links above to the book but http://crmbook.powerobjects.com/is another just in case

Great work from the people at PowerObjects

CRM 4 Mainstream support date ends in 2013

Donna Edwards who is a CRM MVP and pops up all over the CRM world commenting on forums, facebook, twitter and blogs always with useful bits of information tweeted a very interesting link a while ago about support dates for CRM versions.

but before I go into that I recommend you follow Donna via her twitter account – https://twitter.com/#!/edwardsdna

and subscribe to her blog http://edwardsdna.wordpress.com/

When it comes to supporting versions of CRM, I thought it was Microsoft’s policy to support the last two versions but Donna Edwards tweeted this Microsoft page which shows a date, which is useful information to give to your clients who are on Microsoft Dynamics CRM 4.

There is a Lifecycle Support Policy FAQ which is interesting and below I have copied the support dates from this original page.  For my UK readers, these dates are in American format so it’s the 09/04/2013.  Also with all the great enhancements coming to CRM 2011 soon, I think a lot of people will be upgrading

Products Released General Availability Date Mainstream Support End Date Extended Support End Date Service Pack Support End Date Notes
CRM 1.0 1/1/2003 7/11/2006 Not Applicable
CRM 1.2 10/31/2003 1/9/2007 Not Applicable
Dynamics CRM 2011 5/18/2011 7/12/2016 7/13/2021
Dynamics CRM 3.0 12/1/2005 4/12/2011 4/12/2016
Dynamics CRM 4.0 2/29/2008 4/9/2013 4/10/2018

CRM 2011 – a tool to help you run IE and CRM as another user

I saw this blog post with a nifty little tool to help you run Internet Explorer (and subsequently CRM) as another user.

Before I talk about that tool I would say the blog CrmXpress has some very good blog posts and some other tools you might find interesting

Releasing CrmXpress TraceHelper v1.0

Releasing CrmXpress SmartSoapLogger v1.0

Releasing CrmXpress TraceHelper v1.0

so great work Chinmay and now back to my original blog about running IE as a different user.

I often have to do this for testing functionality, like testing security roles for different users or testing different forms or workflows etc.

You can just hold shift and right click on internet explorer and choose run as different user.  If you want to do this read my previous blog which explains how to do this – https://crmbusiness.wordpress.com/2011/11/24/crm-2011-how-to-open-crm-as-a-different-user/

or

you can use this tool from CRMXpress, the cleverly named RunAs Gui Tool, the blog post is here

if you want to download the tool click here

the instructions are pretty simply but here you go

  1. Launch CrmXpress.Win.RunAsGui.exe
  2. Click on Add. It will auto fill current user name and domain/workgroup name.
  3. Enter password.
  4. Click on Save. Your default user profile is now created.
  5. Click on Add again. It will auto fill current user name and domain/workgroup name. Change the name with any other domain/workgroup user name of your choice.
  6. Enter password for the user name that you have entered.
  7. Click on Save.
  8. Now you will have two profiles and you can access them via Profiles drop down list.
  9. Drag any application shortcut on to the CrmXpress.Win.RunAsGui’s User Interface.
  10. The application will be added to the applications list for a given profile and it will be launched with credentials of whichever user profile you have selected.