Follow Us: facebook twitter linkedin's Articles

Role Based Business Logic Strategy for CRM 2011

Security roles are inherited by child business units in Microsoft Dynamics. As I mentioned in a previous blog Sneaky Cylon Copies of Your CRM Security Roles, security roles have linked copies that have the same name but are separate entries with their own unique guids for each business unit. This creates an interesting situation when you want to base business logic on a user’s security role memberships. Since the only thing that is effectively guaranteed to be the same between parent and inherited security roles is the name you need to enact some design patterns to use them in a consistent manor in your code.

Dynamics CRM Security Role Harvey Balls

Harvey BallsI was on a conference call the other week when Jack Bender, a Senior Consultant from Microsoft, mentioned Harvey Balls in reference to security role privileges. Later on I asked him what the heck he was talking about with this Harvey Ball stuff. If you already know the whole Harvey Ball story then feel free to roll your eyes and give me the gas face. I just thought it was a somewhat odd description of the little balls used to adjust security permissions. For those of you who don't know what Harvey Balls are here is a brief summary so that when the time comes and you hear about Harvey Balls or you just want to impress someone by talking about them you'll be in the know.

The Hush Hush Way to Implement a Custom CRM 2011 Web Application

There is something to be said for simplicity. When writing custom web application for CRM you can get fancy with Infragistics or Telerik controls and do all kinds of interesting and fun things. There are situations where using third party controls is certainly warranted. In the past I've always leaned towards using third party controls because they can make my life easier. I like being able to just throw a grid on a web form and update a few properties and have most of the work for display of data taken care of for me. As of late I have seen the value of bare bones custom web applications for CRM. As always it just depends on what you are doing and what you need to accomplish as to the need for the overhead of third party controls. But if possible it can be better to try and use vanilla HTML, JavaScript and CSS to accomplish your goal.

Bad OData Calls Potentially Causes CRM Service Problems

In the movie Star Wars Chancellor Palpatine outwardly appears to be a well-intentioned and loyal public servant and supporter of democracy, yet underneath his affable public persona lurks his true identity. His Sith name was Darth Sidious and accurately describes his true hidden nature. In a CRM project of any size you may end up with a decent amount of JavaScript to implement client side form customizations. Most likely there will be a need to make web service calls to get certain pieces of information about things such as the user, his/her roles, etc. You have to make sure your web service calls are being made correctly or else you could run into some "insidious" problems on your server.


Sneaky Cylon Copies of Your CRM Security Roles

The best practice stated by Microsoft when dealing with security roles is not to create security roles underneath the root business unit of your organization. Each security role defined at the root is inherited by its child business units. In the case of a new organization the roles you get will be the out of the box security roles. The interesting thing about this is as a developer is that the UI deceives you into thinking that when you are looking at security roles that there is only one when in fact much like the Cylons in Battlestar Galatica there are multiple copies. What is happening behind the scenes is that for each child business unit the security role is being duplicated down the business unit hierarchy. If you are asking yourself why you should care then you have to consider instances when you want to know information about certain security roles in the system. If you are ever in a situation where you are looking for a security role by its guid like in a configuration setting you'll have to keep in mind that you can't just copy the guid you find in the interface and expect that it applies to all business units because they are all unique records with their own guids in the database.

CRM 2011 Date Oriented Solution Versioning

When working with solutions in a project often times I come across a few exports that I made previously. The probably I have is most people never update the version numbers on a solution. You end up with two or more solutions not really knowing what is in one versus another. Granted not knowing exactly what is in one solution versus another is still a problem, but the issue can at least be minimized.

The CRM 2011 Multi-Developer Dilemma

Working on a project with multiple developers can be challenging. It requires collaborate and organization in order to take advantage of tasks that can be done in parallel and keep everyone on the same page. If you’ve ever tried to do this on CRM project you’ll find that as you add more developers to the project you quickly reach a tipping point where it becomes very difficult for them to not step on each other’s toes.

CRM 2011 JavaScript Library Methodology

If you've ever worked on a large CRM project or had to deal with a CRM 4 upgrade of any size you may quickly find yourself in a sea of JavaScript that can begin to look a little overwhelming. Personally I loathe most JavaScript that comes my way because you tend to get these 5 page long methods that do everything, all the field names are hard coded strings and option sets/form event mode constants are all numeric values so you can't just read the code and quickly understand what it is doing. To make matters worse JavaScript is not like coding in C# so there are so many more opportunities for things to go wrong. Since JavaScript is very loose and the tools available at the moment aren't very strong in design time error and dependency checking are not up to par with managed code it will pay big dividends to try and be a little stricter up front when it comes to writing your client side code and keeping those libraries organized.

A Slice of CRM Coding Philosophy

imagesEvery developer has their own style of writing code. I'm sure I'm not the only person that has inherited code from someone else only to make grimacing faces when you open it up in Visual Studio. I will admit that sometimes I want to slap people for what they have handed over to me but I'm sure someone has wanted to slap me a time or two as well. If you are like most developers you will have the immediate urge to "fix" this code to bring it up to your "standards". I'm no different. Not that I claim to be the swami of coding standards. I'm always learning and getting better but I think I am not bad compared to stuff I've seen. Here are a few of my philosophies. I have to say that a book that I read called Clean Code by Robert C. Martin has really made an impact on my thought process. I think in general we get so caught up in the work of writing code that we step back and think about how we are writing code. When it comes to coding with CRM 2011 I have some basic thoughts on what things should look like.

Dynamics CRM 2011 Custom Applications - Silverlight vs. ASP.NET

imagesIf you've done any kind of customization work on Dynamics you've probably run into a situation at some point where the needs arises to create a custom application to suit the need. The debate that I always here is should it be done in ASP.NET or Silverlight. When I first started getting involved in CRM projects I didn't really have a strong opinion either way. I wasn't really up to speed on Silverlight either so I had a knowledge gap influencing my “shoulder shrug” treatment of the issue. Now that I know a thing or two more my opinion has shifted.

A Slightly Tricky CRM 2011 SDK Silverlight Deployment Anomaly

So imagine you’ve created this awesome Silverlight application. The app works great and everyone’s happy. In this particular case the client was using an automated build tool called Anthill which is how they deploy their CRM solutions. The later versions of the CRM SDK have a deploy function where you can have your code in TFS and deploy your plugins and web resources straight from your project after pointing the Visual Studio CRM Explorer add-in to a specified server and organization. This all sounds great until I get a call saying that my wonderful Silverlight application isn’t working.

Distraught and aggravated I start contemplating would could have possible gone wrong. What could I have possibly done wrong? As it turns out when I go to the deployment server the Silverlight control decided to not show up in a matter of speaking. Just to give some background this is a Silverlight control hosted in an HTML web resource displayed in the form content iFrame from a navigation link. The page shows up just fine, but my control isn’t loading. Weird…

An Analysis of Handling a Year Data Type in CRM 2011 - Date versus Text


When dealing with the account entity you may decide to display the year founded as part of the company information. This information can come from various public sources of information. It feels natural to think of year as a date since it is part of a date. But of course it is really in fact a “date part”. It is part of what makes up a date but in and of itself is actually just a number. Handled alone it is best stored as a numeric value which makes it easier and faster for filtering and searching purposes. The problem is that if you try to store a date as a numeric value in CRM 2011 that value will be displayed with a comma on the form. If you can live with that fine, but if that bugs the heck out of you then you have to look at the pros and cons of other options.

Let me just preface this discussion with my option that when deciding between making it a date or a text field in order to fix formatting, text is the way to go. Maybe I’m preaching to the choir but I had this discussion on this topic recently. I’ll briefly go over some points on text versus the date data type.

Lessons on the CRM 2011 Customer Address Entity

The Customer Address entity is one of those special entities in CRM. As you probably know it stores address and shipping information for accounts and contacts. I had worked on a project where we had hoped that we could attach a custom entity to the address entity like any other entity. We found out that customer address is special. It’s one of those entities where Microsoft slaps your hands and says only we can use it so keep out, but that’s another story. The interesting thing about the a ...

Plight of the CRM Trainer

Introduction Near the ending of any project where a new system is being implemented there comes a time when everyone looks around the meeting table and groans because at some point users have to be trained to use this great new system that has been developed for them. Hopefully in your project the various user classes that have a stake in the project believe their needs were heard and they feel that the new system will empower them to perform their job better. This is of course the best case sc ...

Microsoft Dynamics CRM 2011 Solution Management Strategy Review

I recently read the Microsoft Whitepaper that was released a few days ago titled “Deploying Microsoft Dynamics CRM 2011 and CRM Online Solutions from Development through Test and Production Environments”. From what I saw the authors are recommending the same thought process I had about solution management in the software development life cycle.

For development purposes you slice up the project into component layers. The layers are composed by functionality and also to allow for less contention by members of a development team. In a discussion with some Microsoft consultants they split up a project into 6 solutions as follows:

Two Custom Entities that Are Useful in Every CRM Solution

I know you are probably waiting with anticipation as to what two entities I’m referring to in my title. Well without keeping you in such suspense I’ll go ahead and tell you. The two entities are very common things that we find in our everyday development lives which are the Event Log and Configuration entities. Yes I know this is amazingly obvious but I can’t say that every project I’ve worked on had these two entities. Maybe it’s not so obvious. If you aren’t a believer let me talk about my log ...

Using SQL Server Full-Text Search Services with Microsoft Dynamics CRM

imagesCANRN13KYou’ve probably seen the option to install Full-Text Search during a SQL Server installation without really understanding what it is and how it can be used. As with other database systems SQL Server has a full spectrum of features that typically reaches far beyond what is needed in any one software development project. I look at Full-Text Search Services as one of those step child type features I never felt was worth spending time on since it seemed so trivial at first glance. I couldn’t ever really recall a time when I had a problem searching text per say. If you are like me you probably thought about why would you need that feature for a second and then went on your merry way. Honestly I didn’t really know what the full-text search feature was in the scheme of things and never really had a situation where I felt like it was something I really needed.

Blog Topics


CPR for CRM Study

The complementary paper includes over 12 years of research, recent survey results, and CRM turnaround success stories.


SharePoint Readiness Assessment

This 60-second assessment is designed to evaluate your organization's collaboration readiness.


CRM Self Assessment

Learn how you rank compared to organizations typically in years 1 to 5 of implementation - and which areas to focus on to improve.


SharePoint Feedback Solution

This is a sandbox solution which can be activated per site collection to allow you to easily collect feedback from users into a custom Feedback list.


SharePoint Upgrade Checklist

Whether you are upgrading to SharePoint Online, 2010, 2013 or the latest 2016, this checklist contains everything you need to know for a successful transition.