.NET Software Architect
Key areas of interest: ALM, .NET C#, PowerShell, Azure, Dynamics 365 Tooling
Robert started in the area of ASP.NET projects and has now more than 7 years of experience in the international Dynamics Enterprise business.
He works mainly as an principal software architect at Kupp and as a external consultant for Microsoft.
.NET Software Architect
Best Practice Analytics for Power Platform
Kupp Code Analytics Roadmap Preview
Posted: 08.2022 | Category: Best Practices
I am pleased to share with you our roadmap for upcoming Kupp Code Analytics releases.
Please note that it is still in preview, some components may still change slightly.
With the upcoming release we will provide more features to follow Power Platform best practises - based on our code analytics technology.
The official documentation will be published in the upcoming weeks where you can find more technical details and step-by-step instructions.
Early access register form: https://forms.office.com/r/3VjYyKnULS
Early Bound Entities (C#)
This is a very basic but highly recommended feature. The Roslyn based code generation engine is performance optimized, so the whole project can be generated within a few seconds.
- Single or wildcard-based selection of entities
- Automatic background updates
- Options for publisher prefix cleanup: Remove, RemovePrimaryOnly, Keep
- Source control friendly config
- C# optimized syntax
- Overloaded Constructors
- XML Documentation based on Dataverse metadata
- Naming conflict detection
- Request and Response for custom actions
- Global and local options sets as enums
- Single or multiple target files
- Custom base interface or class for entities
- Single update of selected entities
- Based on local cached metadata
Code Analytics (C#) - Premium
Realtime Best Practice Analyzer for power platform code. Every warning will be displayed in the VS error list.
- Data Model Schema Validation: Detect all entity and attribute accesses and validate against metadata
- Plugin Loop Detection: Bad update calls (e.g. Target updates within a plugin) will be detected
- Legacy API Checks
- Sequential Guids Verification: Creation of record with predefined ids.
- Detect late bound entities: Code fix for converting late bound to early bound
- Detect bad patterns: Detect bad design patterns
- Check Exceptions: Exceptions should be wrapped in an Sdk exception
- Plugin Base Class checks: You should use a plugin base class to avoid code duplication
- Stateless Plugins: Plugins classes should not use instance variables
- Update Optimization: Updates should be done with only the changed attributes
Late Bound to Early Bound Converter (C#)
Convert a dataverse project on the fly from late bound to early bound. If you have many lines of code you can now convert the whole project directly into an early bound entities-based project.
The converter checks if a unique entity name can be detected and then converts the code. The strong type cast will be done at the earliest possible stage, in most cases directly after the retrieve call.
- Convert entity type to strong typed custom class
- Support for all SDK Methods and custom methods
- Support for FetchXml, QueryExpression etc.
- Convert attribute access via methods/arrays to property access
- Exceptions for generic logic
- Adjustment of Method return types
Generate a type safe classes based on you dataverse model.
- Methods for form type detection
- Support for entities & attributes
- Support for form container like tabs, regions etc.
KCA Power Platform SDK
A ready to use nuget package with many plugin context enhancements.
- Best Practise optimized Plugin Development
- Merged Target Entity
- Attribute based plugin execution delegation
- Support for pre- & postimage
- Creation of admin context organization service
- Support for attribute value changes
- Performance optimized method delegation
- Strong types for targets and images
- Strongly typed properties for common properties like Target, PreImage etc.
Performance Analytics (C#) - Premium
Statement optimizer for custom c# code. Data retrieve operations can be optimized via single retrieve calls instead of retrieve multiple or optimize via retrieve by alternative key.
- Support for custom and sdk methods
- Support for alternative key retrieve operations
OData IntelliSense (TS & JS)
Provides context specific IntelliSense for dataverse Odata queries within Visual Studio.
- Based on the dataverse data model
- Supports many operations and function calls
OnDemand Debug Context - Premium
Generate a Debug Context on the fly so you can easily test your plugin code with 2 clicks.
The generated code (UnitTest) can directly be used to execute a plug class.
- UI for entity attribute values
- Supports plugin stage selection
- Supports Custom Config
- Pure C# code, no need to attach to a separated process