This project provides standardized components for coding processes in PowerApps plugins and Azure functions.

Built for Extensibility

A key design principle of this project is extensibility through architectural standardization. It should be easy to modify or enhance processes that use the various components created in this project without having to make large scale code changes. To that end, the code for this project adheres to the concepts of coding to an interface and inversion of control.

If the implementation for a class doesn’t meet your needs, you can change it either through inheritance and overrides, or by writing a completely different implementation for the defined interface. Either way, register your new implementation in the process IoC container and your done.

Project Structure

This project is segregated into various solutions that consist of one or more Shared Projects that can be consumed in any C# project based that supports the Shared Project model. Each shared project has a corresponding .NET Framework Library project that creates the associated assemblies.

The CCLLC.Telementry solutions provides the components needed to capture telemetry information for logging in an external system. It is a sandbox-safe implementation of a subset of the Microsoft\Applicationinsights-dotnet Sdk]. It is fully compatible with Application Insights, but can also be extended to connect to custom telemetry system endpoints with alternate telemetry serialization schemes.

The CCLLC.Core solution provides the following solution components. Each component is based on defined interfaces and at least one optional implementation that can be modified through inheritance:

The CCLLC.CDS solution provides the following components that provide Power Apps/Common Data Service platform specific implementations of the CCLLC.Core.ProcessModel and related extensions.

Nuget Packages

In addition to simply downloading and consuming the Shared Projects, each project is also being distributed through Nuget as either an assembly and as a source package using the project name (e.g. CCLLC.Core.Encryption) for assembly distribution and project name with .Sources suffix (e.g. CCLLC.Core.Encryption.Sources) for source code.

All source code packages are installed as folders under the projects App_Packages folder._