Skip to content

Solution structure

Generated solution: ConnectSoft.Saas.EntitlementsTemplate.slnx - context projects under src/ plus the base-template/ submodule. Same layered layout as the other SaaS contexts with the ConnectSoft.Saas.Entitlements.* prefix.

Notable projects

Project (suffix) Role
.EntityModel IEntitlement (root), EntitlementAssignment, TenantFeatureOverride, status enum
.DomainModel / .DomainModel.Impl Processor/retriever + inputs; defaults + validators
.PersistenceModel.NHibernate 3 entity maps + repos, tenant filter
.MessagingModel Published events; consumes catalog events from NuGet
.FlowModel.MassTransit ProductCatalogReactionStateMachine / ProductCatalogReactionState
.ServiceModel(.RestApi/.Grpc) Contracts + adapters
.ActorModel.Orleans EntitlementEditorGrain
.ApplicationModel / .Application DI wiring; host
.Metrics EntitlementsMetrics

Docs include ADRs 0002-external-catalog-identifiers, 0003-mass-transit-product-catalog-reaction-saga, 0004-tenant-scoped-entitlements. Layer responsibilities: see template layering and reuse.

Tests

  • ConnectSoft.Saas.Entitlements.UnitTests (validators, aggregate, gRPC adapter, AutoMapper, EntitlementEditorGrainSiloTests, EntitlementsNHibernateClassMappingsUnitTests, EntitlementsMassTransitTopologyMassTransitTests)
  • ConnectSoft.Saas.Entitlements.AcceptanceTests (Reqnroll)
  • ConnectSoft.Saas.Entitlements.ArchitectureTests (7 files incl. RepositoryConfinementTests, ServiceModelCodeFirstGrpcTests)

See testing.

See also