Product Demo Videos

Your Power Platform Coding Assistant in Visual Studio

Welcome to our demo library of the Kupp Code Analytics!
Here you can easily find our demo and tutorial on how and why the tool is a perfect Visual Studio extension for all PowerPlatform and D365 developers

For more information, contact us at support@kuppsoft.com


90-second Explainer Video 

We used to wrestle with these classic coding issues like: duplicated plugin code, typos in schema name, magic numbers from OptionSet Value, typing entities/attribute manually, etc. (you name it 😉)

That's why we created 𝗞𝘂𝗽𝗽 𝗖𝗼𝗱𝗲 𝗔𝗻𝗮𝗹𝘆𝘁𝗶𝗰𝘀 - a Visual Studio that resolves all major hurdles of pro-developers so you can focus on great ideas & solutions

Get to know Kupp Code Analytics in 90 seconds with this explainer video 👉


Quickstart Guide

How to install the Kupp Code Analytics in Visual Studio 2022 and start having a better Power Platfom/D365 coding experience. 

[IntelliSense] Walk-through video part 1 (with voiceover & ENG subtitles)

In this demo, we will showcases a quick overview of 3 productivity features from Kupp Code Analytics.
 
💡 IntelliSense for plugin-related Metadata
💡 IntelliSense for Entity Relationships 
💡 IntelliSense for ActivityParties
 
What's in it for you?
Save up to 50% of your time on locating & fixing errors
Get instant code recommendation
Ensure best coding practices 

[IntelliSense] Walk-through video part 2 (with voiceover & ENG subtitles)

In this demo, we showcase another 4 common use cases of KCA's productivity feature (IntelliSense) that could save up to 50% of your coding time in Visual Studio
 
💡 The resolution of delegatesYou have an Entity account and a basic delegate that returns to an Account entity. What if you want to access the attributes of this Account entity? KCA will instantly suggest all attributes from the entity "Account" for you. 

💡 OptionSet Value: these values always have tricky "magic number". In this example, if you want to get the OptionSet value from the Account entity, KCA will provide all possible values in the entity "Account," so you can easily compare and choose the correct one. 

💡 Context-specific Relationship: If you have the LinkEntity and this class takes five parameters that have a specific context for each other such as LinkFromEntityName, LinkToEntityName, LinkFromAttributeName, LinkToAttributeName. In this demo, the first Entity is Account, the second Entity is Contact. With KCA, you can see the first parameter - LinkFromAttributeName and all suggested attributes from the Account Entity, while the LinkToAttributeName will only suggest attributes from the "Contact" entity. 

💡 Constructor Properties: KCA also works with the constructor properties and suggests only relevant attributes in the chosen Entity. 
What's in it for you?
Save up to 50% of your time on locating & fixing errors
Get instant code recommendation
Ensure best coding practices 

 

[IntelliSense]: Detect Plugin Image Name

To identify the runtime image entity (Pre-Image / Post-Image), the plugin image data is retrieved. Furthermore, the entity is set to the plugin's context Pre- or Post-Image.

 

 


[IntelliSense]: Detect Entity from Target

To identify the runtime entity (Target), the plugin entity data is retrieved. Furthermore, the entity is set to the plugin's context target.


[IntelliSense]: Support for ActivityParties

In this case, the entity is email. The "From" field is a collection of entities. If any of these entities is accessed, the attributes are from the entity Activity Party.


[IntelliSense]: Recursive resolution of Delegates

Even in more complex scenarios like "delegates", the entity name is resolved, and the correct attribute result list is shown. 

 


[IntelliSense]: Support for context specific Relationships 

The first entity will be associated. The "Relationships" are suggested depending on the first entity.

[IntelliSense]: OptionSet Values (Condition)

An Attribute with the type OptionSet is chosen, and its value is compared. Now depending on the used OptionSet field, possible OptionSet values are suggested.


[IntelliSense]: OptionSet Values (Assignment)

The OptionSet field from this entity is set to one of the suggested OptionSet values.

[IntelliSense]: Support for Entity Relationships

In a LinkEntity, the first two parameters are entities, and the following two are attributes. The first attribute parameter only shows attributes from the first entity parameter and the second attribute parameter only shows attributes from the second entity parameter. 


[IntelliSense]: Constructor Properties

An attribute will be retrieved. The EntityLogicalName is suggesting all entities, while the LogicalName is suggesting attributes depending on the used entity.

[Command]: Convert FetchXML to C# Query Expression

Saving your time from manually converting a FetchXML on-the-fly to a equivalent C# QueryExpression

Use Cases:
When a developer has an existing FetchXML to query data, and needs that in C# code, he/she has to convert it to a Query Expression
 

[Code Analytics (C#)]: Detect Early-bound Entities (part 1)

A shared domain project which includes all domain classes (strong types for the Dataverse data model) should be referenced by the other projects. 

In this demo, Kupp Code Analytics will analyse the code and provide a real-time notification: "Could not detect early bound entities"

This helps developers identify the issue immediately and enable early bound entities.

 

[Code Analytics (C#)]: Detect Stateful Plugins 

Technical Context: Instances of plugin classes will be recreated based on the platform requirements, there is no guarantee that instances are being reused. Data bounded to an instance is mostly not thread-safe. 
In this demo, Kupp Code Analytics will analyse the code and notify any stateful Plugins instantly and suggest developers to remove the instance properties & variable 

[Code Analytics (C#)]: Detect Missing Plugin-base Class 

Technical Context: A custom base class should handle the call delegation based on the plugin context information.
In this demo, Kupp Code Analytics will notify developers "The IPlugin interface should not be used directly", and remind them to handle the common logic in a base class 

[Code Analytics (C#)]: Detect Unknown Attributes

Technical Context: Invalid attribute names will lead to exceptions. Make sure that the name is correctly spelled.

In this demo, Kupp Code Analytics will detect any invalid attribute names on the fly and provide a real-time notification: "Attribute Logicalname '{0}' doesn't exist"

This helps developers identify the issue immediately and use IntelliSense to find the right name 


[Code Analytics (C#)]: Detect Unknown Entities

Technical Context: Invalid entity names will lead to exceptions. Make sure that the name is correctly spelled.

In this demo, Kupp Code Analytics will analyse the code and provide a real-time notification: "Entity Logicalname '{0}' doesn't exist"

This helps developers identify the issue immediately and use the correct name

 

[Code Analytics (C#)]: Detect Sequential GUIDs

Technical Context: A predefined can lead to bad performance on the database layer. For business data which must not be aligned between environments (e.g. configs) the ID parameter for create operations should not be set.

In this demo, Kupp Code Analytics will analyse the code and provide a real-time notification: "Id's should be generated by the platform"

This reminds developers not to set the ID for create operations


[Code Analytics (C#)]: Detect Target Update

Technical Context: The recommended way to update the plugin target entity is to modify the attributes in the pre-operation or pre-validation stage without an explicit update call because the values will be saved automatically in the main operation

In this demo, Kupp Code Analytics will analyse the code and provide a real-time notification: "The target entity should not be updated via the IOrganizationService"

This helps developers identify the issue immediately and remove the Update statement


[Code Analytics (C#)]: Optimize ColumnSet Parameters

Technical Context: Retrieving all columns has a bad performance impact.
In this demo, Kupp Code Analytics will analyse the code and provide a real-time notification: "Specify the required columns instead of retrieving all columns"

This helps developers identify the issue immediately and specify the required columns