25 January 2009

Happy Chinese New Year! 2009 - The Year of The Ox

My dear friends, happy Chinese New Year! 2009 - The Year of The Ox ('牛'), and hopefully it could help the economics!!! ;-)


16 January 2009

CRM 4.0: Checkbox style Multi-Select Picklist

CRM 4.0 doesn't have many out-of-box user controls, e.g: a mulit-select picklist. The standard CRM picklist can only save one value in the database, it's not easy to extend this functionality, in addition, you have to deal with the Advanced Find feature.

You can make a picklist multi-selectable by enable the picklist mulitple attribute , e.g: crmForm.all.new_picklist.multiple = true; And then save the selected values somewhere else. However, it does not very impressive the user because the user has to use the CTRL key to select options, which is not user-friendly (Thanks for Alastair Westland (PM @ Parity) who work with me to improve the interface design:)

The script below will draw a checkbox style mulit-select picklist control on the CRM form, and then get options from the real picklist attribute. So how to use it?

1. Create a standard picklist attribute with all options in CRM, put it on the CRM Form. e.g: new_picklist;
2. Create another nvarchar attribute in CRM to save the selected text, put it on the CRM Form and hide the label. e.g: new_picklistvalue;
3. Put the following script in the Form.OnLoad() event.

*NOTE: There is a 'br' flag(var addBr = document.createElement(...) ) just been ignord by blogspot, please replace it when you paste the code!!!

Checkbox style Multi-Select Picklist
author: Jim Wang @ January 2009

// PL - the picklist attribute; PLV - used to save selected picklist values
var PL = crmForm.all.new_picklist;
var PLV = crmForm.all.new_picklistvalue;

if( PL != null && PLV != null )
PL.style.display = "none";
PLV.style.display = "none";

// Create a DIV container
var addDiv = document.createElement("<div style='overflow-y:auto; height:80px; border:1px #6699cc solid; background-color:#ffffff;' />");

// Initialise checkbox controls
for( var i = 1; i < PL.options.length; i++ )
var pOption = PL.options[i];
if( !IsChecked( pOption.text ) )
var addInput = document.createElement("<input type='checkbox' style='border:none; width:25px; align:left;' />" );
var addInput = document.createElement("<input type='checkbox' checked='checked' style='border:none; width:25px; align:left;' />" );

var addLabel = document.createElement( "<label />");
addLabel.innerText = pOption.text;

var addBr = document.createElement( "<br />"); //it's a 'br' flag


// Check if it is selected
function IsChecked( pText )
if(PLV.value != "")
var PLVT = PLV.value.split("||");
for( var i = 0; i < PLVT.length; i++ )
if( PLVT[i] == pText )
return true;
return false;

// Save the selected text, this filed can also be used in Advanced Find
crmForm.attachEvent( "onsave" , OnSave);
function OnSave()
PLV.value = "";
var getInput = PL.nextSibling.getElementsByTagName("input");

for( var i = 0; i < getInput.length; i++ )
if( getInput[i].checked)
PLV.value += getInput[i].nextSibling.innerText + "||";

Note: Please be aware of this is an unsupported customization.

11 January 2009

CRM 4.0 External Connector License

It's very common to extend CRM to external users, however I saw many customers ask if they need license to do something. A External Connector License is used on:

Available for
• Professional Server
• Enterprise Server
Access License only – no additional software/licenses included
Extends access to external users (e.g. Partners, Customers, Suppliers)

• Create new activities in CRM, such as a case via a portal
• Update information in CRM, such as contact information via a portal
• Fill orders, or update case status via a portal
* Access via Dynamics CRM Client technology requires a CAL

According to the Microsoft Dynamics® CRM 4.0 Licensing & Pricing Guide

The Microsoft Dynamics CRM 4.0 External Connector enables customers to extend Microsoft Dynamics CRM to their external users such as customers, partners, suppliers, and end users who access a copy of the server software (for which a license was acquired), through any application/graphical user interface (GUI), other than the Microsoft Dynamics CRM client. “External Users” are users who are not either (i) your or your affiliates’ employees, or (ii) your or your affiliates’ onsite contractors or agents, External users also does not include hosted-software service users, such as those already licensing via the Microsoft Service Provider License (SPLA).

An External Connector must be purchased for each server that hosts an application that provides external access to Microsoft Dynamics CRM 4.0 data as described above. External users should not be using the Microsoft Dynamics CRM 4.0 applications & GUIs directly. The alternative is for every external user to acquire a CAL

For the Microsoft Dynamics CRM Professional Server and Enterprise Server, there are 3 External Connector functionalities:

External Connector – The full use External Connector provides external users with full read-write access to Microsoft Dynamics CRM 4.0 data, such as that provided through any application/graphical user interface. The Full Use External Connector will appear on price lists as the Dyn CRM Extrnl Con, and consists of both the Limited External Connector and the Full Use Additive External Connector combined to provide full use capability.

Limited External Connector – The Limited External Connector provides external users with read-only access to Microsoft Dynamics CRM 4.0 data, such as described above. The Limited External Connector will appear on the price lists as the Dyn CRM Ltd Extrnl Con.

Full Use Additive External Connector – The Full Use Additive External Connector provides external users with write-access to Microsoft Dynamics CRM 4.0 data such as described above, and may only be purchased to supplement a Limited External Connector with write-access capability. The Full Use Additive External connector will appear on price lists as the Dyn CRM Additve ExtrnlCon.

External Connectors and Limited External Connectors may be mixed within an environment.

The number of Full Use Additive External Connectors may never exceed the total number of Limited External Connectors used within an organization.

An External Connector is a license only, and does not include any physical software components, and does not include licensing for any other Microsoft products. If external scenarios integrate with Microsoft SQL Server, Microsoft Office SharePoint or any other product license rights for these must be established separately.

For more information on Microsoft Dynamics CRM 4.0 Use Rights under Volume Licensing: http://www.microsoftvolumelicensing.com/userights/

Partners and Customers should work with their Microsoft Licensing Specialist or local Microsoft Representative to ensure their licensing compliance.