Thursday, October 10, 2013

Dynamics CRM Tools: Tanguy, our hero

Generally I don't blog about blogs, but now I am obliged to make an exception from that principle to write this shout-out to one of our everyday heroes down in the CRM trenches.

xrmtoolbox1For years now, Tanguy at Javista has been contributing to the Microsoft Dynamics CRM community with his developer tools.

These tools truly make our lives as CRM developers easier by drastically reducing the amount of tedious manual work we would otherwise have to perform to make the solutions we deliver a Little Smoother, a Little Better than those of our competitors.

And these tools just keep getting better and better.

Visit his blog: Dynamics CRM Tools

Download XrmToolBox. It might as well be called XrmCandyBox.
This little box is filled with goodies like a never failing Sitemap-editor, View Layout-replicator, Easy Translator, Attribute Bulk Updater, etc.

His latest addition Trace Reader makes advanced debugging so much easier than when you were stuck with a 13MB trace file and only Notepad to assist you.

If, one day, a usable Ribbon Editor should be released – the candy box would be complete! ;)

Friday, September 6, 2013

MS CRM 2011 UR14 Breaking Change: FetchXML count="-1" does not return any records

A change in the interpretation of FetchXML "count" attribute has been identified from Update Rollup 14 for Microsoft Dynamics CRM 2011.

In many situations when you use FetchXML you have the need to return all records available, instead of using paging or in other ways limiting the number of records returned.
Up until now, we have regularly used the method of setting the count attribute to “-1” to indicate “all records”.

<fetch count="-1" mapping="logical" version="1.0">
  <entity name="account">
    <attribute name="name" />
    <attribute name="address1_city" />
This is however not a good idea if you are running CRM with UR 14. Instead, this will not return any records at all!
Setting the count attribute to “0” or completely omitting the count attribute will return all records (up to the internally set limit, typically 5000).

<fetch count="0" mapping="logical" version="1.0">
  <entity name="account">
    <attribute name="name" />
    <attribute name="address1_city" />
In the documentation of the FetchXML syntax it is not stated how to use the count attribute to instruct CRM to return all records, and maybe it is just us who ignorantly have used the “-1” value until now and just us who consider the change to be “breaking”… but somehow, I don’t really think so.

Friday, April 19, 2013

Are You a Rock Star?

rockstar The Microsoft Dynamics CRM community is constantly growing, and it does so in many directions.

Now we are all (who desire to sign up for it) ranked by our individual CRM Rock Star shine!

Just enter your certs, projects and inspirations and – voila! – you get your ranking in your own country and globally.


Check my stats here and sign up to find out how much of a Rock Star you are!

Monday, January 7, 2013

MS CRM SDK 5.0.13: Xrm.Page.context.getClientUrl - at last!

The long long wait is over...

Have you ever had a CRM installation that can be accessed using different URLs, e.g. one to be used inside a corporate network, and one to be used for external access?
Have you also written some javascript to make calls to the OData endpoint or to open a new entity form?

Then you have realized that the context.getServerUrl method returns the URL that was assigned the server during the installation of CRM, and not the URL currently used to access CRM.

Why is that a problem?

Well, authenticating the user to one URL, and then having javascript making calls to the OData endpoint on another URL, will just give the user a "too bad, you are not authorized to do anything on this URL".

Now, at last, in Microsoft Dynamics CRM Software Development Kit version 5.0.13 the context.getClientUrl method is introduced, which returns the base URL currently used by the user to access the CRM application.
The getServerUrl method is still there, but deprecated and should not be used in the future.

Documentation can be found here.

Happy javascripting!