by Daniel Halan
27. February 2010 18:55
This is a follow up on my earlier project CRM Customization Manager, CRM Configuration Manager is a Windows application to create an Export / Import selection that can later be exported as a command prompt string for later use, or execute directly inside the application. The main features of CRM Configuration Manager are,
- Easy access to the features of CRM Customization Manager
- Possible to select a CRM server as destination, allowing one click export and import.
- Create advance export/import selections for later use inside scripts / installations
This release includes CRM Customization Manager v2.0 that contains fixes and few new features,
- JavaScript Export/Import, This allows you to extract JavaScript to a local folder, where you can work in a proper script editor, and later import them back. You can also create new javascripts in the same folder, just follow the name convention and they will also be imported to the correct entity / event.
- Zip support, Now all features works with zipped customizations
- Include Related Entities, This features will automatically include related entities to the selected entities, so their relationships are exported and can be reviewed for conflicts. This is recommended during the development process when relationships may change.
- Publish Workflows, Publish operation now also publishes workflows
Previous key features...
|
I’m wondering, is there any interest in creating your own operations? That is, using a Plug-in model to add custom arguments to the application that will call your code before/after execution.
If you find the application useful, please donate to keep the development alive :)
CcmSetup1.01.exe (907,26 kb)
Update: v1.01 Import filename fix
Happy Customizing!
|
|
by Daniel Halan
3. January 2010 06:24
If one would like to change a relationship lookup field name on a entity, then it is important to change the name of the relationship.
For example, We have an entity called “EntityA” and it has a N:1 relationship with “EntityB”, the lookup attribute is currently called “entityb_conntectedid” and we would like to change the lookup attribute to “entitybid”. Then you normally would remove the relation, and add a new one setting the new name “entityid” to the lookup attribute.
Then you have to change the “relationship name” from the generated name “new_new_entitya_new_entityb” to for example “new_new_entitya_new_entityb2”. Otherwise there will be a conflict when importing the customizations to a CRM system that contains the old attribute making it impossible to publishing the entity if the old field exists on a form.
In the upcoming version of CRM Customization Manager (v2.0) I’ve included a warning message if one tries to import a customization that has a different name of the lookup to the same relationship so one can spot this before CRM gets broken. Also if the relationship is exported CRM Customization Manager solves the problem.
If you already have imported the new relationship and cannot publish / import the Entity, you can fix it by editing the CRM database. Access the table “OrganizationUIBase”, filter it by the ObjectTypeCode of your custom entity, then removing all the references to the old attribute in the “FormXml” column.
Related errors:
Cannot Export Customizations From Microsoft Dynamics CRM 4.0
Update:
CRM Configuration Manager now handles this.
by Daniel Halan
16. November 2009 23:17
Generics is a very nice feature of C# language, and can be used to simplify the CRM Web Service method calls. One of my responsibilities at Logica is to develop a framework for CRM development, and one of the main classes in this framework is called CrmSystem, it wraps the CrmService methods among other things. Using generics one can then type,
account acc = CrmSystem.Retrieve<account>(myAccountId);
also we use a special NameValue class CrmConditions to one of our Execute overloads, here is how it can look
List<account> acc = CrmSystem.Execute<account>(new CrmCondition("emailaddress1", "daniel@logica.com"));
This would retrieve all accounts that got the email "daniel@logica.com"
Here is one of the overloads for the Retrive Method that uses Generics, it calls an other overload that does the actual call to CRM Web Service using the EntityName string that we get thru typeof(T).Name
public T Retrieve<T>(Guid id, params string[] columnSet) where T : BusinessEntity {
return (T)Retrieve(typeof(T).Name, id, new ColumnSet(columnSet));
}
Hope this gives some inspiration for your own CrmApi wrappers :)
cc78edf6-1be4-4fff-a86a-f7bea79acc8f|0|.0
Tags: crm, c#
.NET | CRM
by Daniel Halan
15. October 2009 23:20
During my time with Microsoft CRM 4 I’ve found some limitations of the import & export process of customizations, which led to the curiosity if one could fix those with a custom application. Thanks to the open architecture of Microsoft CRM with Web Services and Xml for customization management it was pretty easy to create a small application to improve the import and export process of customizations.
Here follows the main features of CrmCustomizeManager.
- Console Application, Making it possible to import and export inside nant, msbuild or bat scripts, for example to export the customization each night and “check in” to a source code repository, enabling version control of the customizations. Also to import customizations directly from a MSI installation.
- Export Only Modifications, You can export a “clean” customization xml in the beginning of a project and save it in the application folder as “CleanCustomization.xml”, the application will compare the current state and only export the entities that are modified or added.
- Remove Deleted Attributes, This feature only applies when importing a customization. When this operation is selected one will be prompted with all attributes that has been removed in the new customization, given the possibility to remove them from the CRM instance.
- Changes Attribute data type, When changing an attributes data type and then trying to import it to a CRM instance that still contains the old attribute would normally generate an error. This is now handled and the data inside the old attribute will be converted to the new data type (when possible and logical)
- Publish, You can publish the customizations, can also be used at it’s own, for example assigning it to a system wide hotkey for fast access.
- Node & Entity Selection, you can select what nodes and entities to import and export. For example only export ISV Config or the Site Map. Possible items to select,
| Entities |
Workflows |
Roles |
ISV Config |
| Sitemap |
Templates |
Calendar Settings |
General Settings |
| Email Settings |
Marketing Settings |
Outlook Synchronization |
AutoNumbering Settings |
| And more… |
|
|
|
Get Latest version.

by Daniel Halan
11. September 2009 23:07
Recently I was working on a dynamic Fetch XML query that was adding a lot of conditions. During a batch run the CRM Service started to crash when the xml size got around ~135kb. My first thought was that there were a size limit of the SOAP message that we'd cross, but after further testing it would become evident that fetch queries has a limit of 2097 <condition> elements. That is 2097 per <filer> element. If a query has linked entities that has 0-2097 conditions then the main entity can have a maximum of 2095 conditions.
by Daniel Halan
23. December 2008 19:51
I've lately changed focus from MOSS 2007 to work with Microsoft Dynamics CRM solutions, anyhow. As Microsoft doesn't use the .NET 3.5 web extensions AJAX functionalities in CRM 4, and that is something that you may like to use in your ISV solutions, you need to change the "C:\Program Files\Microsoft Dynamics CRM\CRMWeb\web.config" to include all the references to the .NET 3.5 libraries. As you may know changing the web.config is not a supported customization, as after an upgrade your changes won't be there. So I have a plan of writing a small consoleapp that will add the changes to the web.config but until then here is a web.config with them included.
web.config for Microsoft CRM v4.0.7333.145 with AJAX enabled
web.config (3,35 KB)