Shiny Dynamics CRM Web API has a number of useful functions that you can call using simple GET. Like ubiquitous WhoAmI: https://notarealorg.api.crm.dynamics.com/api/data/v8.1/WhoAmI, nifty RetrieveOrganizationResources: https://stillnotarealorg.api.crm.dynamics.com /api/data/v8.1/RetrieveOrganizationResources, or canny RetrieveDataEncryptionKey: https://yesthisisarealorg.api.crm.dynamics.com/api/data/v8.1/RetrieveDataEncryptionKey. Some of these functions require parameters and documentation how to pass parameters is available. Except that the documentation does not explain how to deal with […]
Tip #746: Bring in the specialist
Washing car on weekend is something that everyone can do on their own. Probably. But if some serious cleanup is required, one’s better off calling Mr Wolf. Same goes for complicated cases in customer service. If you run a secure shop that deals with the cases that include sensitive or personal identifiable information, then security […]
Tip #738: Use top in fetchxml
I’ll be first to admit: I was not aware that fetchxml supports top attribute (as it turns out, I’m not the only one hence the tip). It does not seem to be documented anywhere but, according to the schema, has been around since CRM 2011. Consider this fetchxml It will emit the following SQL: And […]
Tip #731: Hide and protect your custom CRM API
Yesterday we illustrated how you can wrap some server-side functionality as a custom API to be consumed by the developers. One of the undesired side effects is that business can now poke their nose into the API when building workflow processes: If your API is a smoking gun and you don’t want business to accidentally […]
Tip #730: Turn your CRM into API machine
When people ask me to describe the differences between custom workflow activities and custom actions, I always use the following definitions: Custom workflow activities. A functional blackbox created by the developers to be consumed by the business Custom activity. A functional blackbox created by the business to be consumed by the developers There is more […]
Tip #729: Mapping fields in N:N relationship
Normal out-of-box CRM relationship mapping can be extremely beneficial, but it has a very big “gotcha”. They only work when creating a child entity from the parent form. So if the user is on the parent entity form, and adding a new entity via a grid, then the mapping will automatically be populated for the […]
Tip #721: Tale of a small change
Dynamics CRM does an excellent job hiding complexities of the relational design, solid data model, and friendly and consistent UX. Quite frequently CRM customizers and developers are the ones who’s paying the price. User advocate: We have a custom text field on the contact entity called Position but noticed that users type almost the same […]
Tip #706: Passing arguments to the webresource does not work after authentication
We are all mortals, after all. I just witnessed a rare occassion when even Tanguy “The XRM Toolbox” Touzard needed a helping hand from none other than Andrii “Khohol” Butenko. Tanguy I’m working on a really simple integration where an external app needs to open a webresource with parameters passed in data url argument: https://qwerty.crm4.dynamics.com/WebResources/foo_/cti/index.html?data=phonenumber%3d0123456789%26service%3dadv […]
Tip #699: Don’t go back on context
This one is for javascript lovers. If you work with HTML web resources, you know that you need to include ClientGlobalContext.js.aspx to get CRM context in your script. If everything is working correctly but you receive JS error “GetClientContext is not defined” when using back button in Chrome browser, add dummy query parameter to the […]
Tip #692: Extract Word and Excel templates from CRM 2016 like a boss
The creativity of our fellow CRMers does not stop to surprise me. They go to the extraordinary lengths to avoid code because, as the true masters of their craft, they do not parade