Hosk’s Top CRM Articles of the week – 1st September

Article of the week

Announcing CRM DevTools for CRM 2015 and Update 1!

This brilliant tool for Chrome has been updated.  Not only is this a great tool but even if you don’t use the tool it points out lots of functionality built into CRM which can allow you to debug and investigate CRM.

The tool is free.  Three cheers for Sonoma Partners

Microsoft Cloud Certification could allow complex CRM solutions to go online

I’m putting my blog post here this week because I want to know readers opinions on the new Cloud Certification Microsoft has just starting offering.  Moving On Premise CRM to a private cloud with one click!

best of the rest

CRM 2015 – Why is the System user shown as disabled in the plugin registration tool

System user is show with disabled in brackets, find out why

How to build an Agile Inspired Project Management XRM Solution in less than a day with Microsoft Dynamics CRM

A great example of how you can quickly create a solution using Microsoft Dynamics CRM

Tip #457: Get your icons here

Get yourself some free icons for your custom entities

CRM 2015/CRM2013 – JavaScript to get the current users name

Javascript to get the current users name

You Too Can Snoop… But Not In A Creepy Way

Fantastic solution to allow you to get information on your plugins

Dynamics CRM 2015 – Top 5 Developers Delights

The inogic’s top five posts on new features for CRM Developers in CRM 2015 update 1

Tip #459: Don’t touch that file. Or that one. Or this one.

If you have edited the CRM web.config beware you may have trouble in the future

Standard and Enhanced SLAs in Microsoft Dynamics CRM 2015: How To Maximize Your Usage

Some help to understand CRM SLA’s

Why the advanced find is a CRM Developers best friend

The CRM advanced find is awesome, find out why

Cloud Certification now available for Microsoft Dynamics CRM

Cloud certification available

understanding plugin sandbox mode

Understand Plugins in sandbox mode

Explaining the built-in SYSTEM and INTEGRATION users

There are two special and hidden system users in CRM, find out more

CRM 2015 – CRM developers should think in Entities

Think in Entities CRM Developers

What Makes A Good CRM Consultant?

What are the qualities of a good CRM consultant

Come Clean With Your CRM Data

Clean your data

A Day in the Life of a CRM Admin

Q&A with a CRM Admin

Programming

How to be the Fastest Developer on Your Team, Part 1

Great article on 40-year-old lessons and the Mythical Man-Month

The mythical Man month is free to download, awesome

a quick summary of the The mythical Man month

Other

Do we need Windows 10?

Rich People like to read

10 Things Productive People Do Before Bed

Intel Inside… literally?

Brains Sweep Themselves Clean Of Toxins During Sleep

Why do some people refer to themselves in the third person? 

Previous top picks

Hosk’s Top CRM Articles of the week – 24th August

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

Microsoft Cloud Certification could allow complex CRM solutions to go online

Complex customizations can be difficult to implement in CRM On-line instances, so the announcement from Microsoft this week offering cloud certification offers a route complex CRM solutions can now be done in the cloud.

Microsoft Announce Cloud Certification

Bob Stutz wrote an interesting and potentially very significant blog this week

Cloud Certification now available for Microsoft Dynamics CRM

The blog post seemed to slip under the radar of the Microsoft Dynamics CRM community, producing little discussion or retweets, which I found surprising.

A possible reason for the muted response could be the title of blog post, using the term Cloud Certification doesn’t make the subject of the article clear.  The term cloud is completely overused, my default response is to ignore articles with the term cloud in them.

If I have understood the article correctly Microsoft are offering the customers the option of deploying an On premise CRM in Microsoft Azure environment and run Microsoft Dynamics CRM using Microsoft Azure infrastructure services.

This is like a having a private cloud or your own personal CRM Online and this seems very interesting because it allows customers not to have buy servers and licences, host CRM in the cloud/Online but have more control over Microsoft Dynamics CRM.

Why is this CRM private cloud different from CRM Online

I often read Microsoft Dynamics CRM online is making great strides and Bob Stutz in the article mentions

Last quarter we reported that CRM Online revenue nearly doubled

Microsoft Dynamics CRM Online improvement helped Microsoft wnin the CRM Magazine market leader award

Microsoft Dynamics CRM wins CRM magazine Market Leader awards

Microsoft CRM Online is great for smaller companies (save money on servers and licences) and CRM solutions without complex customizations.

My experience with CRM online is when the CRM customizations become complex and a CRM solution has a lot of customizations a CRM online implementation can become extremely difficult.

The limitations of CRM Online makes the On Premise a better choice for complex CRM solutions (which makes it puzzling why Microsoft delay features to CRM On Premise, why punish those users).

A question mark over large CRM implementation (large in terms of data and users) to CRM online because the cost of the database on a monthly basis could prove expensive and performance could be an issue (exactly how are resources shared between CRM organisations online).

There are a number of good blog posts describing the differences between CRM online and CRM On Premise

Comparing CRM On-Premises to CRM Online

Microsoft Dynamics CRM – Online vs. On Premises Decision Matrix

Complex CRM solutions not being the best choice for CRM online maybe just my experience.  Most of CRM projects I work on are based On Premise but this could most of the projects I work on need lots of CRM customizations and these are better suited to CRM On Premise.

CRM Online needs a different attitude towards customizations

The blog post below is regularly in the daily most read blog posts on the Hosk CRM blog

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

I don’t believe CRM developers have adapted their solution design to deliver complex CRM customizations using Microsoft Azure and other Online

The limitation of CRM online (summarized from the blog post above)

  • No Indexing
  • Increasing performance – How?
  • Data privacy
  • Restrictions of sandboxed plugins
  • No Custom ASP.NET pages
  • Reports are FetchXML

These limitations means CRM customizations written for On Premise solutions won’t work with CRM Online.

To deliver complex CRM solutions CRM developers will need to learn and user Microsoft Azure and Microsoft Azure Services but I am yet to read an article featuring CRM Online and Microsoft Azure (even from Microsoft) which leads me to believe not many CRM developers are doing this………yet.

Cloud Certification offers an alternative

Cloud certification seems like a confusing way of saying private cloud, which could be a great choice for many CRM projects and subsequently this is potentially importantly a significant offering from Microsoft.

Cloud Certification advantages

  • Complete control over the IT environment
  • No Limitations on customizations (no limit on workflows, no sandboxed plugins)
  • No need to buy physical servers and licences (but you will need pay for Azure licences)

The Cloud certification offers potentially the best of both worlds, complex CRM solutions, full control over IT environment and data but without having to host CRM on your own servers.

Potentially?

I have used the word potentially because I’m not sure I have understood quite how it will all work and I have some questions

Customers are a single click away from being deployed in the cloud

I have never known anything happen easily and with one click, particularly CRM development.  Who knows what is really involved in moving a CRM project online?

Why is no else talking about this?

I haven’t read many articles talking about Cloud Certification, which makes me wonder if I have understood it clearly.  It seems to suggest a private cloud type offering but is that what really means.

Perhaps the Hosk is quick off the mark!

What’s the catch?

There is always a catch, it might be using Azure services involves customizations being rewritten, I honestly don’t know because my experience with Azure is a free trial.

What’s the real cost?

The article mentions a new special licence Dynamics Lifecycle Services (LCS) but the licencing model for Microsoft Dynamics CRM seems to be getting more confusing with each new release.  I live in fear someone asking me what licences they will need!!!

In the article Bob states

In my conversations with customers, I am hearing very positive feedback for this self-hosted option as they have shared that it’s a ‘great fit with our strategy’. Customers that need to remain on premises like the flexibility that they can start to take some advantage of the cloud by putting a test environment on Azure.

This isn’t appealing to customers but CRM suppliers and definitely CRM developers would think this is a great offering which will allow highly customised CRM solutions to be deployed in the cloud.

One interesting point to consider is Microsoft have a 99.9% uptime gaurantee.  This sounds great consider the potential downtime each year

SLA level of 99.9 % uptime/availability gives following periods of potential downtime/unavailability during the specified period (cf. below):

  • Weekly: 10m 4.8s
  • Monthly: 43m 49.7s
  • Yearly: 8h 45m 57.0s

I’m sure there was a time recently when CRM online was down for a couple of hours at a time.  If you had a critical system then a downtime of 8 hours a year could be significant but most CRM solutions don’t need to be up all the time.

CRM 2015/CRM2013 – JavaScipt to get the current users name

This blog post will show you a quick way to get the name of the user using JavaScript.

Where you might use this functionality

This functionality is useful because you might need to update a User lookup field to a particular user in situations like

  • The current user changed a key field
  • The current user is primary contact for a project, account, deliverable.
  • Set a text field of the users name for reporting purposes.

Why are you mentioning it

To do retrieve the current user name in CRM 2011 it took a soap call to retrieve the user name field using the Xrm.Page.context.getUserId().  Below is a blog post I wrote

CRM 2011 – Setting a user lookup with the logged in user with Javascript

There is now a much easier way to do this in CRM 2013 and CRM 2015.  I found this way whilst reading this forum post

crm 2013: javascript get attributes from other entity in Contact Form

Start with the CRM SDK

The Hosk CRM developer mantra is to always start with the CRM SDK to see what methods and functionality exists which can help.

Searching the CRM SDK first helps you see what functionality Microsoft have added, most CRM developers will be surprised the number of new methods added.

It’s very easy for developers to copy and paste existing code in projects but just because it works it doesn’t mean its the best code to use.

This is classic case, the CRM 2011 code is long and involves a soap call, the new functionality added in CRM 2013 allows you to access the data with one line.

Microsoft Client code page – Client-side context (client-side reference)

There are three useful functions about the existing user (there’s another about language but I’m not including it).

getUserId
Returns the GUID of the SystemUser.Id value for the current user.
getUserName
Returns the name of the current user.
getUserRoles
Returns an array of strings that represent the GUID values of each of the security roles that the user is associated with or any teams that the user is associated with.

 

Xrm.Page.context.getUserId()

This would get you the SystemUser.Id

Xrm.Page.context.getUserName();

This would return a text string of the user name

Setting User lookups

The common reason for retrieving the user name and the user id is because both values are needed if you want to programatically set a lookup field in CRM.

Example code is shown below


var setUservalue = new Array();
 setUservalue[0] = new Object();
 setUservalue[0].id = Xrm.Page.context.getUserId();
 setUservalue[0].entityType = 'systemuser';
setUservalue[0].name = Xrm.Page.context.getUserName();

Xrm.Page.getAttribute("LookupField").setValue(setUservalue)

Alternatives

In the requirement I was working on I used JavaScript because I needed to set a field dynamically and instantly.  Other CRM customizations may have different requirements and you could set the lookup field using a Plugin or a workflow.

What I have learnt

  • Use the CRM SDK to see what functionality exists, there might be a better way
  • Microsoft added a new getUserName method in CRM 2013
  • You need the guid, name and entity type to set the value of a lookup field
  • If you don’t need to set the lookup instantly you can use workflows or plugins
  • CRM forum posts provide extremely useful information from a number of CRM developers

 

CRM 2015 – Why is the System user shown as disabled in the plugin registration tool

Someone asked me why the System user had the word disabled in brackets in the plugin registration tool when editing plugins and can we I still use it.

I have set plugins to run as SYSTEM but I couldn’t remember if the SYSTEM user had disabled in it. I fired up the plugin registration tool, selected a plugin, clicked the Run in User’s Context and found this

System User Disabled

I wasn’t sure whether I should be worried about the disabled or not, had it always been there?

In this example the CRM developer was setting a plugin to run as the SYSTEM user because the plugin need to run with more security privildges than the calling user.

To learn about Impersonation and plugins read my blog post

CRM 2015 – Understanding impersonation in plugins and knowing when to use it

What is the SYSTEM user

My knowledge of the SYSTEM user is it’s a super super in built user which you cannot see inside CRM in any of the views, the SYSTEM user won’t appear in disabled or enable user views inside CRM.

SYSTEM user is used by plugins, workflows to run with elevated privileges and when the user updates any records you will see SYSTEM.

Gonzalo Ruiz has written a great blog post on the SYSTEM and INTEGRATION

Explaining the built-in SYSTEM and INTEGRATION users

The blog post has a few interesting points to consider

  • Nobody can log in CRM as either of these 2 users.
  • These users are always on the root business unit.
  • No security applies to these users (any action is allowed when executing as SYSTEM or INTEGRATION), all security validations are bypassed.

I’m guessing the SYSTEM user shows this SYSTEM (disabled) to indicate the user is disabled from user CRM as a general user.

Why is named SYSTEM (disabled)?

SYSTEM (disabled) lets the CRM developer know they are selecting the special SYSTEM user and not a user created user who could also have the name SYSTEM.

I did check some other CRM instances (CRM 2011, CRM 2013 and CRM 2015) to see if SYSTEM always had SYSTEM (disabled) and in the three instances I looked at all had the words disabled in brackets after the SYSTEM user.

I’m not sure labelling the system user as disabled is the best idea because it caused concern we had somehow disabled the SYSTEM user or maybe we shouldn’t select it because it was disabled.

It seems it’s just Microsoft Dynamics CRM having a quirky way to indicate the SYSTEM user is special and not to be confused with other non super users (surely there is a better way)

Hosk’s Top CRM Articles of the week – 24th August

Article of the Week

a good example and justification of using access teams to share record

A great post to help understand when and why to use access teams.  I wrote a brief article on access teams for CRM 2013 – MB2-703 – Access Teams and Access Team Templates how to use them and key facts

Why Use Access Teams in Dynamics CRM 2013

Initially I wasn’t sure the purpose of Access teams but the article above and this excellent article from Adam Vero should help you understand the concept.

CRM 2013 – Why are access teams marooned?

Oddly there isn’t a way to export the configuration for access teams, which means you have to recreate them.  This is another case of a Connect issue raised years ago and mainly ignored (Is Microsoft Listening to the Dynamics CRM Community?)

Console app for moving CRM Access Team templates

Luckily there is a console application which can copy the CRM access team templates written by Lucas Alexander.

Best of the Rest

CRM 2015 – How to diagnose plugin errors

Hosk blog with advice on how to diagnose Plugin errors

Using CRM from an external website – part 3: Stage one “Web API”

The series continues linking CRM with an external website.

Adding Custom Button on Security area in Dynamics CRM 2015

Ever wondered how to add a custom button to the security, nope me neither but it doesn’t you won’t have to do it in the future.

summary of all the import privileges

How to enable and disable users from importing and exporting in CRM

CRM 2011 – Javascript to set the current date and time

JavaScript showing how to set a CRM field to the current data and time

CRM UI Testing using Dalek

Interesting article on writing UI Tests for CRM, I will admit to never having heard of Dalek before.

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

When you write customizations for CRM online you need to think differently

Use SQL Tracing to find the SQL query generated for Dynamics CRM Platform Operations for CRM On-Premise

Match your CRM queries to SQL queries, very useful.

New Localizable Attributes in Dynamics CRM 2015

Very useful

Looking at upgrade approaches

Things to consider about upgrading CRM and keep up with releases, rollups and service patches.

Using Microsoft Power BI Desktop to build Dynamics CRM Online reports Part 2

Hmmm Power BI seems pretty darn good.

programming
Why Software Development Time Estimation Doesn’t Work and Alternative Approaches

Why KISS isn’t easy

More Agile, More Problems

other
teaching is important as anything else

thinking small with Malcolm Gladwell

breaking the mold

8 MASTER STRATEGIES FOR PUBLIC SPEAKING

The Jerry Seinfeld and John Grisham Productivity Hack

Previous top picks

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

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

CRM 2015 – How to diagnose plugin errors

This blog talks about a plugin error which I have seen a number of times when using the Plugin Developer Toolkit, it will discuss how to diagnose plugin errors in general.

Before I talk about plugins can I encourage people to vote on the connect item to get the CRM Developer toolkit working with Visual studio 2013, if you can’t wait for Microsoft to fix it then read my blog post CRM Developer Toolkit Alternatives

Hosk CRM Brain

I like to think of my blog as my CRM brain uploaded to the internet, so whilst reading this you are currently crawling through my CRM brain.  This allows me to search my CRM brain when my real brain forgets how I resolved a problem, actually sometimes I even forget I have experienced a problem and get pleasantly suprised when I have found not only did I have the problem before but I blogged the solution.

The benefit of me blogging about CRM is I benefit and other people who read and search my blog.

My goal in writing articles focused on errors is not only to write about how to resolve the issue but additionally look into the cause of the problem and , the WHY.

Knowledge helps when things go wrong

There is always a difference between theoretical knowledge and practical knowledge.   You can learn the theory of something but find it’s different when you try to use the theory in practical use (e.g. after reading about plugins you then try to write a plugin) you there are gaps in knowledge which you quickly find.

When developers start to plugins they usually go through

  • learn to write plugin code, find lots of errors
  • try to deploy plugin, error haven’t signed the plugin, error permissions etc.
  • Slowly but surely the developers experience fewer problems or problems they know how to resolve

Indepth knowledge of how Microsoft Dynamics CRM works and the underlying plugin infrastructure becomes extremely important when things go wrong.  When errors appear and hold up development, developers need to understand the cause of the error but why it’s complaining, the answer is usually understandable if you understand

  • how the CRM developer toolkit works
  • The various parts of the CRM Developer toolkit
  • The CRM plugin execution framework
  • The roles and privileges needed to deploy plugins

Some useful Hosk Plugin blog posts

The CRM developer toolkit is great (which is why I get annoyed it hasn’t been updated because it automates a lot of the repetitive actions needed to deploy a plugin using the plugin registration tool.) but I feel CRM Developers should learn how to use and deploy plugins using the plugin registration tool.

I use the plugin registration tool to inspect what plugins and steps are deployed and the ability to change the view to see what plugins are deployed for each entity is really useful when investigating bugs on CRM solutions you are not familiar with.

Most of the time you don’t want to mix using the plugin registration tool and the CRM developer toolkit because the CRM developer toolkit will overwrite the changes you make manually next a developer uses it to deploy CRM customizations.

The plugin registration tool is great for viewing the plugins deployed and its portability allows you to use it in customer environments.

If the CRM Developer toolkit gets in a mess you might need to use the plugin registration tool to quickly update or deploy a plugin whilst you fix the plugin developer toolkit.

I had an error previously but the problem was the CRM developer toolkit had got out of sync and I struggled to resolve this problem.  You can read about my frustrations with the CRM Developer toolkit

Dealing with Plugin errors

If When you experience a plugin error I would recommend you first read my blog on common problems because I cover the most common errors.

If you don’t find the answer then stop and think about the potential cause of the problem.  Many developers can go into a mild panic mode when they encounter an error, instead of logically thinking about the problem they instantly go and get a senior developer to help them.

Then when the senior developer is at their desk, they explain the problem.  The process of explaining the problem to the developer, the solution to the problem can become clear.  This is known as rubber ducking or I call this Cardboard developer

When you encounter a plugin problem or CRM developer problems, follow these steps

  1. Stop
  2. Engage Brain\Think
  3. What’s happening?
  4. What should happen?
  5. Make a list of the possible causes of the problem
  6. Investigate your list

If you can’t resolve the problem, you can then at tell the developer what you know, what you have tried.

I don’t encourage any developers to suffer in silence but it’s more beneficial for you own personal learning if you try to understand and resolve problems yourself.  The major benefit of trying to resolve the problem yourself is you get in the habit and become less dependent on the help of your colleagues.

Don’t Assume, know

Don’t Assume, Know is a Hosk mantra I tell myself when investigating problems or debugging.  I have wasted many hours investigating problems and looking for solutions based on an incorrect assumption.  When dealing with problems don’t assume anything, check assumptions and cross them off.  Lots of times you will find the problem.

Plugin Error Messages

The error messages Microsoft Dynamics CRM throws are a mixture of a confusing statement with a nugget of truth tucked inside.  To developers new to CRM development they are just unhelpful messages.

As your experience and knowledge of CRM development increases you will find they often point you in the right direction but you need to have built up a map of the CRM landscape, so you know where to go and check.

Plugin Error Example

This is common error I have experienced a few times but I was trying to deploy a plugin using the CRM developer toolkit and I got this error

Error registering plugins and/or workflows. Plug-in assembly does not contain the required types or assembly content cannot be updated.

Lets break down the message to try and decify the problem

  1. It can’t register the plugin/workflow
  2. Plugin Assembly does not contain required types or the assembly cannot be updated.
  3. So we know the plugin assembly (the DLL) exists but it cannot update it.

The first thing to do is know not assume.  So I opened the Plugin Registration tool and found the DLL.  I could see it had three steps.

I then looked at the RegisterFile.crmregister file and found this had two steps.

The problem was because we were trying to update an assembly with 2 steps but the assembly had 3 steps.  It couldn’t update the assembly because it was too different and this error message was letting us know (in a slightly confusing way).

I have experienced this problem before and the solution to the problem is to unregister the Assembly and install it again.

This problem has occurred when I have created new plugins and sometimes when I have updated a plugin maybe in a different solution but for some reason I couldn’t update the DLL.

In this case how the extra step got into the assembly was a complete mystery but it’s OK to delete the plugin assembly because I knew I was going to deploy it again and install a new version of the Plugin assembly.

Hosk’s Top CRM Articles of the week – 19th August

Article of the week

Dynamics CRM 2015 JavaScript Form Notifications on Steroids

Great article on how to beef up the notification in CRM by using the solution provided for free on codeplex.  Those boys at Magnetism are a great bunch

call workflow in CRM 2015 easily from Javascript

I really liked this article as well

Best Of the Rest

CRM 2015 – How to decompile a plugin Assembly (DLL)

Hosk blog post talking about how to decompile a plugin assembly and more importantly when and why you might need to do this.

Gamifying Sales Comp

It’s all about the games you can play to motivate your CRM users at the moment, even I wrote a blog post a couple of weeks ago Is Gamification in a Microsoft Dynamics CRM a gimic?

Replicate Right Click behavior of Dynamics CRM Grid on Custom Grids

Interesting article about adding right click behaviour

Why understanding abstractions can help you write better code

read the article and find out why?

Adding JavaScript to Quick Create Forms in CRM 2015

how to isolate the quick create form in and write JavaScript just for it.

looking at CRM performance issues

Always good to know about performance issues before your CRM suffers from them.

Sample code to check if User is a member of a team C# CRM 2011/2013/2015

Simple but useful

Building not in queries in advanced find

A classic requirement

Angular with TypeScript

Pluralsight have a training course on Angular with TypeScript which is a dream for Dave Berry

Tips & Tricks for debugging unfamiliar AngularJS code

indepth article looking at debugging AngularJS, I haven’t seen any CRM projects use AngularJS yet but it might only be a matter of time.

Workflow ExecutionTimeSpan

good article because it shows some creative thinking, whilst teaching you about the underlying data in CRM.

Multi select field for Dynamics CRM 2013/2015

I haven’t needed a multi select for quite a while but I remember when it use to crop up all the time.

A free customizable Editable Grid for Dynamics CRM 2013/2015!

Does what it says

programming

Is Egoless Programming still relevant?

When Does DRY Become ARID?

Excellent article on the factory pattern using warriors and wizards.

how to become a better coder overnight

How Good Developers Deal With Bad Code

15 Ways To Write Beautiful Code [That Have Nothing To Do With Testing]

Other

Mental Model: Misconceptions of Chance

Lenovo preloaded laptops with reformat-resistant perpetual crapware

How To Be Loved By Everyone: 6 Powerful Secrets

The Science of Obesity

4 Tips to Boost Your Creative Thinking Skills

Schopenhauer: On Reading and Books

Previous top picks

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

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