Day 2 of Summit EMEA started with some useful breakout sessions by Microsoft Partners and MVPs. The first session I attended covered some use cases of Custom Entities. Adam Vero’s session gave an interesting overview of how custom entities can be used for things other than storing business data. The 5 main use cases for custom entities covered were, replacing pick-lists, N-N intersect entities, custom auditing, 1-1 records and for applying arbitrary security privileges to the ribbon or site map. One of the things missing from the Microsoft documentation is covering general CRM design patterns like this, and this session reinforced my understanding of best practice in data modelling in Dynamics 365. Tip of the session was the advice to create a 1-1 relationship to extend the user record with fields that are updated frequently. If you don’t, you may experience performance problems – this is because the browser security cache is invalidated when the user record is updated.
Second breakout session of the morning was a summary of Upgrade Considerations when moving between Dynamics versions. Gustav Westerlund is in the hopefully unique position of currently upgrading a CRM 1.2 system! Gustav covered Upgrades v Migrations and some of the best practice advice for both scenarios. Tip of the session was to consider security role permissions which have not been updated as part of the upgrade process (for example security roles may not have appropriate permissions on the new Knowledge entity). A greenfield upgrade may be most appropriate when your old system is heavily customised or locked down with third party managed solutions, or if there are large swathes of undocumented code. This approach can be very costly though, especially if it is a large integrated enterprise solutions.
For data migration from on-premise to cloud, data migration challenges were discussed, especially around the hard to migrate data such as audit records, system jobs, createdby, created On, personal views and shares and running workflows and some good advice on how to overcome these problems.
After lunch, I joined the session ‘Build Integrated Solutions with PowerApps, Microsoft Flow and Dynamics 365’. Cathy Dew demo’d building business apps using PowerBI using no-code, and demonstrated how this can hook into the Common Data Model and other services that Flow can connect to. PowerApps are clearly targeted at Power Business Users rather than Dynamics Partners, although some training would still be required. The main take away from this session was that the apps themselves are currently housed within the PowerApps app (for Android / iOS / Windows) and can’t be installed as standalone apps, but that aside they are still a very powerful tool.
I then attended two Solution Showcases from Resco and The Portal Connector. For Resco, having implemented Resco recently, I have always found their mobile solution very solid and well architected and the session went into some detail on the product’s functions, features and configurability. The Portal Connector looks like a viable alternative to Microsoft Portals (which was ADX), especially if you have on-premise requirements. The Portal Connector is a SiteFinity based solution and unlike the current Microsoft offering, it will work with both on-premise and online and you can host it yourself. While it has a point and click interface to build portals with, this architecture also gives you the ability to extend it with your own code and has some Visual Studio Extensions.
Finally, I finished the day with a fairly low level session called ‘Deconstructing the Plugin pipeline’ with Craig Hamer. I remember first covering this topic in a training course for Dynamics 4.0 many years ago, and this was a good opportunity to review my understanding of this process. The main take-away I took from this session was a reminder that when registering plugins with secure configuration, the secure configuration is lost if that solution is exported and imported to another environment. When writing plugins, write guardian methods to evaluate the key requirements of the method and exit if they are not met.