Monday, January 21, 2013

MS CRM 2011: Rollup 11 and ‘CrmException: A non valid page number was received: 0’ error

I installed Rollup 11 on our development servers and after server restart CRM instance was broken. Every page that has grid or grids shown following:

I googled and found following solution:
1. Open regedit.
2. Open HKLM\SOFTWARE'\Microsoft\MSCRM.
3. Open TurnOffFetchThrottling key and change value to 0.
4. Make iisreset.
Once steps were done CRM instance was fixed.

MS CRM 2011: Add new Deployment Administrator through SQL

Here is just short script that has to be executed against MSCRM_Config db to add new deployment administrator:

Declare @DomainName Varchar(Max)
Set @DomainName = 'Put new deployment admin login here'--i.e. 'Contoso\Administrator'

Declare @Id uniqueidentifier
Select @Id = Id From mscrm_config..SystemUser Where Name = @DomainName

if (@Id is null)
    Set @Id = NEWID()
    INSERT INTO mscrm_config..SystemUser(Id, Name, DefaultOrganizationId) 
    VALUES(@Id, @DomainName, '00000000-0000-0000-0000-000000000000')

INSERT INTO mscrm_config..SystemUserRoles(Id, SecurityRoleId, SystemUserId) 
VALUES(NEWID(), (Select Id From mscrm_config..SecurityRole Where Name = 'Administrator'), @Id)

So the only thing you need to do is to put domain name of new deployment administrator in a format DOMAIN\Login like Contoso\Administrator.

This trick is 100% unsupported and can lead to malfunction of whole CRM deployment. I suggest you to take backup of MSCRM_Config DB before you run this script.

Friday, January 18, 2013

Customer Portal – switching authentication from LiveId to Forms

I have got a requirement from one of customers create customer portal. It was my first experience with portals so I decided not to build custom website but to install and configure Customer Portal. I would not write how to install and configure this solution – it is well described. Once it was configured I had a phone conference with customer and first requirement and main challenge for me was to remove LiveId authentication and replace it with other authentication.

Thursday, January 17, 2013

New badge – MCC

Today I have got an email from Microsoft that notified me that I’ve got MCC award. It’s funny because I thought that in case you hold MVP award that you can’t get MCC. It seems that I was wrong.
So now I’m listed here at the page number 4.
That's how my profile of forums looks now:

Monday, January 14, 2013

MS CRM 2011: Replacement of textbox with picklist with configurable values

During the work with CRM 4.0 I used this trick to solve similar tasks. Today I had to implement similar functionality and I decided to go supported way – JavaScript + WebResources.

Sunday, January 13, 2013

MS CRM 2011: How to override standard dialogs

My customer wanted to remove (or hide) “Total Time” and “Billable Time” fields in Case Close dialog window:

Of course I knew that it is possible to open file CRM_Installation_Directory'\CRMWeb\CS\cases\dlg_closecase.aspx, add several lines of code and hide fields and labels but this obvious and easiest way out had 2 disadvantages:
1. This solution is unsupported and it could be broken with new Rollups.
2. This solution would not work for CRM Online.
So I decided to solve this task using supported approaches.

Thursday, January 10, 2013

MS CRM 2011: Open new activity form with ‘Regarding’ field prefilled

I had a task today to open new task form with Regarding field prefilled. Based on SDK description I tried to use following code to accomplish my task:

var params = {
    regardingobjectid: referenced record id,
    regardingobjectidtype: referenced record type name,
    regardingobjectidname: referenced record display name

Xrm.Utility.openEntityForm("task", null, params);

Unfortunately this code failed. I’ve started to look for some explanation and I found it in SDK at the same article I’ve mentioned before. Answer was that it is impossible to set values for partylists and regarding lookups.
I knew that this feature works for out of box buttons so I rechecked URL for activities that are created with OOB buttons and reworked code to following which worked without issues:

var params = {
    pId: referenced record id,
    pType: referenced record type code,
    pName: referenced record display name

Xrm.Utility.openEntityForm("task", null, params);

Thursday, January 03, 2013

MVP Renewed - 3

Four year in a row I have got MVP award. Congratulations to all MVP's who has got award first time or was re-awarded.