Two plugins in one day! wow! This one was, in fact, developed a couple of months ago. One of my colleague was using a solution from my fellow MVP Andrii Butenko which allows to import/export NN relationships in a silverlight web resource. This was nice but my colleague was using other attributes than primary key to do the mapping and Andrii’s solution does not support this. So he asked me to develop a XrmToolBox’s plugin that could do this. And, here it is! You can select entities and relationships and moreover, choose mapping attributes on both enitities. I only let text and number attributes selectable as other does not really make sense for mapping purposes. Then you can import or export NN relationships! Here is a preview As usual, this plugin, among other, is available with XrmToolBox on CodePlex
Today, a new tool that allows you to run bulk deletion of records. Indeed, this feature of CRM is not accessible through the user interface but only with SDK. To use this tool, you must first create a view in the advanced search that will find the items you want to delete. Then just run the tool, to indicate on which entity (using the logical name of the entity) is the view advanced search and set scheduling options and recurrence (if desired). You can also request to receive an email from the CRM server when processing is complete. This option is available if the user account you use has an email address saved in the user profile CRM. Screenshot: Download:
Lately, there was a discussion on Twitter about the best practice to handle plugins: One class per plugin? One project per plugin? or anything else? On my side, I'm using one project for all the plugins for the same customer. This is what I answered on Twitter. Then came a question : How do I handle the fact that some plugins may have not been tested or completed yet and I need to release the plugins assembly. The answer was : Feature flag! What is a feature flag? It's a concept that will allow to enable/disable some features or portion of code depending on a configuration. Let's take an example where a plugin must execute two features : Feature A and Feature B public class MyPlugin : IPlugin { public void Execute(IServiceProvider serviceProvider) { var service = new MyCustomService(); service.ExecuteFeatureA(); service.ExecuteFeatureB(); } } We need to find a way to execute conditionally these methods, let's say because feature B ...
Comments