MoreCore Platform
Development
Portal - Codebase
Codebase Overview
MOR-PLN-028 Version 1 Last Review Date: March, 2025

Portal - Codebase Overview

1. Overview

2.

3. Solution Project List

The following is a list of the projects within the 'PMMS' solution, with a brief description.

SolutionFolderProjectDescription
PMMSBusiness LayerPMMS.Business.CQRS
PMMSBusiness LayerPMMS.Business.PortalBusiness Logic Layer
PMMSCommonEntityFramework.DynamicFiltersUsed for declaring security filters on classes in complex ways. Replaces RLS as RLS didn't perform well.
PMMSCommonPMMS.AuditLogShipping
PMMSCommonPMMS.Common
PMMSCommonPMMS.Core
PMMSCommonPMMS.Files
PMMSCommonPMMS.Notifications
PMMSCommonTrackerEnabledDbContext
PMMSCommonTrackerEnabledDbContext.Common
PMMSPresentation Layer / FunctionsPMMS.Functions.ImageResize
PMMSPresentation Layer / FunctionsPMMS.Functions.Integrations.Publisher
PMMSPresentation Layer / FunctionsPMMS.Functions.Integrations.Subscriber
PMMSPresentation Layer / FunctionsPMMS.Functions.Services
PMMSPresentation Layer / FunctionsPMMS.Functions.v3
PMMSPresentation Layer / WebjobsPMMS.WebJobs.BulkAssignment
PMMSPresentation Layer / WebjobsPMMS.WebJobs.Emailing
PMMSPresentation Layer / WebjobsPMMS.WebJobs.Hangfire
PMMSPresentation Layer / WebjobsPMMS.WebJobs.LogShipping
PMMSPresentation Layer / WebjobsPMMS.WebJobs.NotificationDistribution
PMMSPresentation Layer / WebjobsPMMS.WebJobs.RaiseQueuedWorkOrders
PMMSPresentation Layer / WebjobsPMMS.WebJobs.TimerTriggered
PMMSPresentation Layer / WebsPMMS.Web.ClientPortalApiUI Layer - Most API Logic
PMMSPresentation Layer / WebsPMMS.Web.TenantPortalMVCUI Layer - Serves Frontend Applicaiton. File downloads
PMMSPresentation LayerPMMS.Web.CommonShared elements
PMMSService LayerPMMS.Services.DataAccessData Access Layer
PMMSSolution Items / Auth0various filesStorage of Hooks and Rules used within Auth0
PMMSSolution Itemsvarious filesPipeline YAML and configuration
PMMSTestingPMMS.Business.AuditLog.Tests
PMMSTestingPMMS.Business.Portal.Tests
PMMSTestingPMMS.Integrations.Tests
PMMSTestingPMMS.Notifications.Tests
PMMSTestingPMMS.QA.Selenium.Common
PMMSTestingPMMS.Web.ClientPortalApi.Tests
PMMSTestingPMMS.Web.Selenium.Tests
PMMSTestingPMMS.Web.TenantPortalMvc.Tests
PMMSTestingPMMS.Web.Test.Common
PMMSToolsCodeGen
PMMSToolsScriptDb

4.

Webjobs

Offloaded functions that run asynchronously

TimerTriggered

contains 10-15 webjobs that run on a timer trigger

Log Shipping

In the context of this app referes to producing raw audit logs that produces data for Change Log sections.

Hangfire

Chron Scheduling system used for triggering integration events. Applies only to some Integration Actions Isn't used for Webhook events as these are action triggered.

Emailing

Handles delivery of emails

Functions

Can be hosted in linux machines (cheaper)

Integrations Publisher

Takes integration event and fans them out into multiple events, where each event has an integration event.

Integration Subscriber

Receives the fan-outed events and processes the event, such as invoking an API

Functions v3

v3 refers to functions framework Should be upgraded. There is a task for this on the board.

Generates PDF's with puppeteer

Data Access Layer

model set up translates into entity model for sql server holds the generatesd dto's (data transfer objects)

Tools Codegen All codegen tempaltes are here outputs generated files to different projects

3 ditinct APIs Odata DTO API (internal) not acessible to externals. Used as replacement to OData Public API. REST(also DTO) extenstion to internal API.

Agglomerates code generated hierarchical index of all the properties in a domain class that can cause changes to either that class or a class that contains objects of that class.

Example: If you have a Work Request, and you have documents associated with the Work Request.

When a document is changed, you may want to trigger a change on the Work Request. So a way was needed

During the Log Shipping process,