Thursday, August 03, 2006

Microsoft CRM, Backoffice or FrontOffice application in the future?

On this rainy day I was looking out side the window and was thinking on how the future will look like for Microsoft CRM. I came up with the following ideas:

Now a days, many CRM projects are initiated from the needs of a Sales department or Marketing department to centralize the communications with their relations.
Basically this means that the users start to use the CRM interface as their dashboard environment.

What we see is that a user first uses the system as a centralized database, after a while wants to analyze the data, via Reports, analyze tools such as Business Scorecard Manager etc, and finally want a 360 view of the relation, financial, logistical data etc.

This last step can be accomplished by modifying and expanding CRM with add-ons. But looking at the way CRM is build up, only two dimension deep, the application is not intended to be used as a 360 dashboard environment. Looking at the next version of Microsoft CRM, version 4.0, code name "Titan" the new functionality is primary targeted on improving the current functionality.

Microsoft wouldn't be Microsoft if they had not created an application who is intended to for fill these needs, SharePoint.

Looking at the future of CRM we will see that the functionality the CRM application offers, will be, partly, used in the new Front Office applications. Microsoft Office 2007 for the LAN environments and SharePoint 2007 for the internet environments.

One of the critical aspects of a successful CRM project is to look at the future use and positioning of CRM. By creating a route map for the organization, where the needed functionality of CRM is described.

My advice, to the one who is interested, make sure that you have a clear understanding in how CRM is going to be positioned within an organization for now and for the near future.

Monday, July 31, 2006

Hiding CRM navigation buttons

Within the current version of MS CRM, version 3.0, it is possible to hide
navigation buttons.

The javascript below gives an example for this. Put it in the Onload Event of the
entity you want to influence.

The Element ID's can be found via a simple trick:

Go to the form where you want to hide the buttons. Press Ctrl + N, this
will result that het current page will be re-openend in a new IE Window.

Within this Window you can view the page source code, via the menu options "View" "Source".

//..hide navigation

Hide( window.document.getElementById( "navProds" ) );
Hide( window.document.getElementById( "navRelationship" ) );
Hide( window.document.getElementById( "navOrders" ) );
Hide( window.document.getElementById( "navInvoices" ) );
Hide( window.document.getElementById( "navExistingProducts" ) );
Hide( window.document.getElementById( "navWriteInProducts" ) );

//..hide object function

function Hide( obj )
{ = "hidden"; = "absolute";

Generating T.a.v and Briefhoofd for the Dutch Microsoft CRM users

This javascript example can be used to create an "t.a.v" and "briefhoofd" for the
Dutch version of Microsoft CRM. Ofcourse this can also be modified to use in other
languages. I'm just lazy to put it in an other language...

It can be expanded with specific language settings if the CRM instance is used to save Contacts with from different countries.

var strAanhef;
var strBriefHoofd;
var strMiddleName;
var str1;
var str2;

if( crmForm.all.gendercode.DataValue == 1 )
{ strAanhef = "T.a.v. de heer" strBriefHoofd = "Geachte heer"};

if( crmForm.all.gendercode.DataValue == 2 )
{ strAanhef = "T.a.v. mevrouw" strBriefHoofd = "Geachte mevrouw"};

//..Aanhef functionscrmForm.salutation.value = strAanhef + IsNull

(crmForm.all.pager.DataValue) + IsNull(crmForm.all.nickname.DataValue) + IsNull(crmForm.all.middlename.DataValue) + IsNull(crmForm.all.lastname.DataValue) + IsNull(crmForm.all.suffix.DataValue);

//..BriefhoofdcrmForm.new_briefhoofd.value = strBriefHoofd + WordCapitalize

(crmForm.all.middlename.DataValue) + IsNull(crmForm.all.lastname.DataValue) + IsNull(crmForm.all.suffix.DataValue) ;

function IsNull( value )
{if("undefined" == typeof( value ) "unknown" == typeof( value ) null == value )
return "";
return " " + value;}

function WordCapitalize(word)
{if ( "undefined" == typeof( word ) "unknown" == typeof( word ) null == word ) return "";
return " " + word.charAt(0).toUpperCase() + word.substring(1, word.length);}