Twitter Image

Changing the Maximum number of components in MSCRM Dashboards

Tuesday, 04 October 2011 13:32

I got a query today about a limit of the number of component on a CRM Dashboard, the customer was getting the error "Maximum number of components allowed is 6" has he was trying to create a new dashboard.
Hopefully, it was an On Premise installation and it's a deployment setting you can change (at least on premise).

You can find the relevant MSDN Article here; but here's a way to do it in short :
Start Windows Power Shell on the deployment server console (the icon looks like this) and type the following commands :

Add-PSSnapin Microsoft.Crm.PowerShell
$setting = Get-CrmSetting -SettingType DashboardSettings
$setting.MaximumControlsLimit = enter the maximum dashboard components number (ie: 9)
Set-CrmSetting -Setting $setting

Latest KB Articles

Monday, 03 October 2011 09:08

Here are the latest KB Articles pertaining to Microsoft Dynamics CRM
note: You will need a PartnerSource access to be able to use the links below.

Dynamics CRM 2011

PartnerSource Link

Publish Date




Configuring CRM Outlook client two times for same account breaks CRMLinkState of contacts



Microsoft Dynamics CRM IIS Memory Dump Diagnostic



Updating a Security Role fails with Insufficient Permissions error in Dynamics CRM 2011

Dynamics CRM 4.0

PartnerSource Link

Publish Date




Update Rollup 19 for Microsoft Dynamics CRM 4.0 is available



How to set up Microsoft Dynamics CRM 4.0 to support SQL Server 2005 or SQL Server 2008 database mirroring



Error message when you try to upgrade workflow rules from Microsoft Dynamics CRM 3.0 to Microsoft Dynamics CRM 4.0: "Microsoft.Crm.CrmException: Should have one plugin type"



Error message when you register Microsoft Dynamics CRM by using the Microsoft Dynamics CRM Registration wizard: "The wizard requires an Internet connection to complete registration"



The Microsoft Dynamics CRM menu still exists on the Outlook menu bar after you uninstall the Microsoft Dynamics CRM 3.0 client for Outlook



Error message when you save accounts, contacts, or leads in Microsoft Dynamics CRM 4.0: "The given key was not present in the dictionary"



Error message when you try to print a report in Microsoft Dynamics CRM 4.0: "Unable to load client print control"



Error message when you try to disable a custom record in Microsoft Dynamics CRM 4.0

Dynamics CRM 3.0

PartnerSource Link

Publish Date




Problems in CRM when the CRMAppPool user account is a CRM user

On the maximum number of entities

Tuesday, 27 September 2011 14:09

I was recently working on a project where one of the possible paths of solution was to create a lot (ie: hundreds) of custom entities in a single CRM organisation.
There's an enforced limit of 200 custom entities in CRM Online but for On Premise, the number of entities should technically only be limited by the number of objects allowed in an SQL Database (2 147 483 647 for both SQL 2008 and 2005) and as a simple entity only consumes 4 objects (2 tables and 2 views), we should have plenty of room.

But then I remembered reading this article by seb determining that the maximum number of attributes in CRM 2011 is hardcoded at 1000, and started having a doubt about a maximum number of entities in Dynamics CRM on Premise (there's an enforced limit in CRM online after all)
A quick look on the web found nothing, so I did resolve to find out the "hard way".
Helpfully, the sdk provides a code sample for entity creation (both in the CRM 2011 sdk and the CRM 4.0 sdk), so it's just a matter of adapting it with a loop.

Here're the results of the findings

CRM 2011 On Premise
As you can see herebelow there's doesn't seems to be hardcoded limits on the On Premise number of custom entities (or at least it is more than 1000).


CRM 4.0 On Premise
There doesn't seems to be any hardcoded limits in CRM 4.0 On Premise as well, as you can see in the following screenshots


Here're the code snippets used for the tests.

CRM 2011

        public void RuntheShow(ServerConnection.Configuration serverConfig, bool promptForDelete)
                using (_serviceProxy = new OrganizationServiceProxy(serverConfig.OrganizationUri,

                    _serviceProxy.ServiceConfiguration.CurrentServiceEndpoint.Behaviors.Add(new ProxyTypesBehavior());
                    string theName;
                    for (int i = 1; i < 2000; i++)
                        Console.Write("Creating Entity " + theName);


   public CreateEntityRequest GetCreateRequest(string theName)
            CreateEntityRequest createrequest = new CreateEntityRequest
                Entity = new EntityMetadata
                    SchemaName = theName,
                    DisplayName = new Label(theName, 1033),
                    DisplayCollectionName = new Label(theName+"s", 1033),
                    Description = new Label(theName, 1033),
                    OwnershipType = OwnershipTypes.UserOwned,
                    IsActivity = false,
                },                PrimaryAttribute = new StringAttributeMetadata
                    SchemaName = "new_name",
                    RequiredLevel = new AttributeRequiredLevelManagedProperty(AttributeRequiredLevel.None),
                    MaxLength = 100,
                    Format = StringFormat.Text,
                    DisplayName = new Label(theName+" Name", 1033),
                    Description = new Label("The primary attribute for the "+theName+" entity.", 1033)

            return createrequest;


CRM 4.0
        static public void RuntheShow()   
        CrmAuthenticationToken token = new CrmAuthenticationToken();
        token.OrganizationName = "test";
        token.AuthenticationType = 0;  

        metadataService = new MetadataService();
        metadataService.Url = http://localhost/MSCRMServices/2007/MetadataService.asmx;
        metadataService.CrmAuthenticationTokenValue = token;
        metadataService.Credentials = System.Net.CredentialCache.DefaultCredentials;
        metadataService.PreAuthenticate = true;

        for (int i = 1; i < 2000; i++)
            CreateSingleEntity("Entity_" + i.ToString().PadLeft(4,'0'));

     public static void CreateSingleEntity (string theName)
             Console.Write("Creating Entity {0}...", theName);
             EntityMetadata timesheetEntity = new EntityMetadata();
             timesheetEntity.SchemaName = theName;
             timesheetEntity.OwnershipType = new CrmOwnershipTypes();
             timesheetEntity.OwnershipType.Value = OwnershipTypes.UserOwned;
             timesheetEntity.DisplayName = CreateSingleLabel(theName, 1033);
             timesheetEntity.DisplayCollectionName = CreateSingleLabel(theName+"s", 1033);
             timesheetEntity.Description = CreateSingleLabel(theName, 1033);

             StringAttributeMetadata primaryAttribute = new StringAttributeMetadata();
             primaryAttribute.SchemaName = "new_name";
             primaryAttribute.RequiredLevel = new CrmAttributeRequiredLevel();
             primaryAttribute.RequiredLevel.Value = AttributeRequiredLevel.None;
             primaryAttribute.MaxLength = new CrmNumber();
             primaryAttribute.MaxLength.Value = 100;
             primaryAttribute.DisplayName = CreateSingleLabel("Name", 1033);
             primaryAttribute.Description = CreateSingleLabel("Name", 1033);

             CreateEntityRequest createEntity = new CreateEntityRequest();
             createEntity.Entity = timesheetEntity;
             createEntity.HasActivities = false;
             createEntity.HasNotes = true;
             createEntity.PrimaryAttribute = primaryAttribute;

             CreateEntityResponse entityResponse = (CreateEntityResponse )metadataService.Execute(createEntity);

      public static CrmLabel CreateSingleLabel(string label, int langCode)
         CrmNumber crmNumber = new CrmNumber();
         crmNumber.Value = langCode;
         LocLabel locLabel = new LocLabel();
         locLabel.LanguageCode = crmNumber;
         locLabel.Label = label;
         CrmLabel crmLabel = new CrmLabel();
         crmLabel.LocLabels = new LocLabel[] { locLabel };
         return crmLabel;

Issue with CRM 2011 R4

Tuesday, 27 September 2011 08:42

I got an alert from Scribe support; it seems there's a major issue with the latest CRM 2011 Rollup.

Microsoft released CRM 2011 Rollup 4 (RU4) late last week ( If you use many:many custom and intersect objects, you will receive the following error:

Required member 'LogicalName' missing for field 'Moniker1'

As a result, you will not be able to make data links to the applicable fields.

This is a Microsoft issue with their latest rollup.  
If you are working with CRM2011 on Premise and use many:many custom and intersect objects it is recommended not to apply this rollup to your deployment until the issue is resolved with Microsoft.

Windows 8 et CRM Virtualization

Friday, 09 September 2011 13:55

Currently, there's no support for x64 virtualization on Microsoft Client OS (ie Win7) so the only solutions are running your laptop on Windows Server 2008 or using some third party virtualization tools (like VirtualBox).

Running WS2008 on a laptop leads to some painful issues as it was never intended to run on a laptop as the host OS; like video drivers and missing hibernate/standby (If a had a dime every time I forgot to properly shutdown my laptop instead of just trying to hibernate... ;)

The good news is this article on the W8 Blog, about Hyper-V Support on Windows 8.
Basically, Hyper-V will be enabled on Windows 8 (it looks like with the standard tools currently) and standard client OS functions will still be available when enabled like hibernate and standby.
So, I can't wait switching my dev/demo laptop when W8 will be released.

<< Start < Prev 1 2 3 4 5 6 7 8 9 10 Next > End >>
Page 10 of 21