Skip to content

SaaS Solution Platform — Epics and program backlog

Purpose

This page is the portfolio-facing index of all program epics for the SaaS Solution Platform (EPIC-SAAS-, plus **how import work items into **ure DevOps Boards when approved. Product, architture, and leadership stakeholders use this Compy documentation page for e epic st, **order**scope, and ADO process.

Where the engineering detail lives (canonical):

Layer Path in ConnectSoft.CompanyDocumentation Role
Backend / platform Features, Tasks, AC backlog-plan.md EPIC-SAAS-DOCS through EPIC-SAAS-REF — full breakdown
Gap analysis + wave-2 backlog saas-gap-deep-analysis.md · saas-gap-implementation-backlog.md saas-EPIC-* gap program — evidence, Features [001]–[079]
Blazor shell + MFE Features, Tasks, AC blazor-microfrontend-backlog-plan.md EPIC-SAAS-SHELL and EPIC-SAAS-MFE
ID index and short summary (factory) ConnectSoft Documentation — Docs/starters/saas-extensions-and-templates-epics.md SAAS-* IDs; avoid duplicating long-form text there

Supporting narrative (framework):

Topic ConnectSoft.Documentation path
Solution design Docs/starters/saas-platform-solution-plan.md
Bounded contexts and template repos Docs/starters/saas-bounded-contexts-and-templates.md
ConnectSoft.Extensions.Saas.* libraries Docs/starters/saas-extensions-saas-libraries.md

Program epics (full list)

Epic ID Title Outcome (summary) Implementation Status Evidence Linked gap items Last verified
EPIC-SAAS-DOCS Documentation and cross-links Three doc sites + nav; explicit out-of-scope for Audit/Notifications/Config as this program Implemented Three-site nav, Epics discoverability, Factory workflow + agent cross-links saas-DOCS-F05..F07 2026-05-27
EPIC-SAAS-SVC-SURFACE ServiceModel packaging and consumer standard Every backend template publishes ServiceModel (RestApi/Grpc as defined); consumers never reference Application/Domain Implemented All five templates publish ServiceModel NuGets — 2026-05-27
EPIC-SAAS-TPL-GEN Optional ConnectSoft.Saas.MicroserviceTemplate Generic SaaS-flavored scaffold + ConnectSoft.BaseTemplate submodule Missing Generic template repo not created — 2026-05-27
EPIC-SAAS-TPL-CTX Per-context ConnectSoft.Saas.*Template repositories Tenants, ProductsCatalog, Entitlements, Billing, Metering template repos Partial All five repos exist; wave-2 gaps tracked saas-EPIC-TEN,CAT,ENT,BIL,MET,INTEG 2026-05-27
EPIC-SAAS-SHELL ConnectSoft.Blazor.Shell.Saas Portal host: navigation, MFE registry, tenant/edition, OIDC/BFF Missing Shell repo not in scope of wave-1 templates — 2026-05-27
EPIC-SAAS-MFE Blazor MFE templates (SaaS contexts) Admin/self-service MFEs per context; ServiceModel clients only Missing MFE templates not shipped — 2026-05-27
EPIC-SAAS-EXT ConnectSoft.Extensions.Saas.* libraries One repo per package; publish NuGet; migrate templates from stubs Missing Extension packages not extracted — 2026-05-27
EPIC-SAAS-REF Reference implementation (ProductCatalogDemo) Align demo with ProductsCatalog template and published packages Partial Demo exists; full alignment pending — 2026-05-27
saas-EPIC-INTEG Cross-service integration gaps Topic harmonization, envelope, outbox, Orleans path In Progress P0 topic/quota slice completed; envelope/outbox/Orleans path remain open saas-INTEG-F01..F07 2026-06-18
saas-EPIC-DOCS Gap backlog governance Analysis, mirrors, ADR stubs, status retrofit In Progress Backlog status retrofit updated with completed implementation slice saas-DOCS-F01..F10 2026-06-18

Recent implementation update — 2026-06-18

Completed and verified the first backend gap slice across Billing, Metering, Tenants, and Entitlements:

  • Billing now consumes the canonical Tenants tenant-activated topic and Metering quota-exceeded topic for the P0 E2E path.
  • Billing quota DTO/state/processor flow now uses Metering's canonical Dimension field, with MeterKey retained as a compatibility alias.
  • Billing, Metering, Tenants, and Entitlements placeholder architecture tests were replaced with concrete one-aggregate-root and cross-repo published-language guardrails.
  • Remaining work is still tracked for lifecycle semantics, full processor/saga tests, descriptors, envelope/outbox policy, and Orleans write-path decisions.

Epic detail

Each subsection summarizes purpose, in/out of scope, dependencies, and definition of done, with anchors into the detailed backlog pages.

EPIC-SAAS-DOCS

Purpose Keep ConnectSoft.Documentation, ConnectSoft.CompanyDocumentation, and ConnectSoft.AI.SoftwareFactory.Documentation aligned on the SaaS template program: published solution plan, implementation mapping, factory workflow references, and mkdocs navigation.
In scope Cross-links, nav entries, explicit out-of-scope callouts (Audit, Notifications, Configuration platforms as separate programs).
Out of scope Implementing product features inside bounded-context templates; Azure resource provisioning.
Key dependencies None blocking; enables all other epics by clarifying narrative and entry points.
Definition of done Stakeholders can find the SaaS program from all three doc sites; solution plan and Company mapping pages published; Software Factory docs reference SaaS template selection where applicable; mkdocs build passes for sites touched.
Detailed backlog Backlog plan — EPIC-SAAS-DOCS

EPIC-SAAS-SVC-SURFACE

Purpose Establish a single consumer contract: published ServiceModel NuGet packages per bounded context, with documented layout, versioning, CI pack/publish, and optional gRPC policy—so gateways, shell, MFEs, and peers never depend on Application/Domain.
In scope Package identity, SemVer rules, consumer matrix, pipeline expectations, optional gRPC surface.
Out of scope Domain model design inside each context; Blazor UI (see shell/MFE epics).
Key dependencies EPIC-SAAS-DOCS for cross-links; Identity Backend / ProductCatalogDemo as pattern references.
Definition of done Documented standard adopted; CI outline agreed; any optional gRPC feature has AC and tasks completed or explicitly deferred with rationale.
Detailed backlog Backlog plan — EPIC-SAAS-SVC-SURFACE · Blazor consumes ServiceModel via EPIC-SAAS-MFE

EPIC-SAAS-TPL-GEN

Purpose Provide an optional generic ConnectSoft.Saas.MicroserviceTemplate that submodules ConnectSoft.BaseTemplate and supports dotnet new with documented parameters.
In scope Template pack skeleton, symbols/defaults, golden sample, README.
Out of scope Replacing per-context templates; full CI implementation until repos exist.
Key dependencies EPIC-SAAS-SVC-SURFACE for ServiceModel expectations; ConnectSoft.BaseTemplate availability.
Definition of done dotnet new install / dotnet new produces a buildable solution; parameters documented; aligns with factory naming.
Detailed backlog Backlog plan — EPIC-SAAS-TPL-GEN

EPIC-SAAS-TPL-CTX

Purpose Deliver one template repository per bounded context (Tenants, ProductsCatalog, Entitlements, Billing, Metering): DDD layout, ServiceModel projects, submodule to ConnectSoft.BaseTemplate, dotnet new, sample CI, integration test hooks.
In scope Per-repo features SAAS-CTX-F03–F07 (and shared F01/F02 waves) as defined in the backlog plan.
Out of scope Shell and MFE implementation (cross-reference only).
Key dependencies EPIC-SAAS-SVC-SURFACE; EPIC-SAAS-TPL-GEN optional baseline; bounded-context matrix from Documentation.
Definition of done Each context template meets its feature AC; stubs for Extensions.Saas acceptable in early phases per backlog.
Detailed backlog Backlog plan — EPIC-SAAS-TPL-CTX

Delivered repositories (one aggregate root per repo)

Repositories live under C:\Git\ConnectSoft\SAAS\, each Layer-3 extender of ConnectSoft.BaseTemplate via base-template/ submodule. Canonical map:

Feature Repo Short name Aggregate root Topic prefix
SAAS-CTX-F03 Tenants ConnectSoft.Saas.TenantsTemplate connectsoft-saas-tenants Tenant tenants.domain.v1
SAAS-CTX-F04 ProductsCatalog ConnectSoft.Saas.ProductsCatalogTemplate connectsoft-saas-productscatalog Product catalog.domain.v1
SAAS-CTX-F05 Entitlements ConnectSoft.Saas.EntitlementsTemplate connectsoft-saas-entitlements Entitlement entitlements.v1
SAAS-CTX-F06 Billing ConnectSoft.Saas.BillingTemplate connectsoft-saas-billing Subscription billing.subscriptions.v1
SAAS-CTX-F07 Metering ConnectSoft.Saas.MeteringTemplate connectsoft-saas-metering UsageMeter metering.usage.v1

Tech defaults (locked): MassTransit (built-in outbox), Orleans, REST + gRPC, NHibernate multi-dialect (SQL Server / PostgreSQL / MySQL / Oracle / SQLite), Hangfire, Redis, OpenTelemetry + Serilog. Per-repo assets: ServiceModel + ServiceModel.RestApi + ServiceModel.Grpc + MessagingModel + ActorModel + ActorModel.Orleans + FlowModel.MassTransit + PersistenceModel.NHibernate + DatabaseModel.Migrations (no outbox) + InfrastructureModel + DiagramAsCodeModel + Docker Compose + Kubernetes + Helm chart + full observability stack + MkDocs documentation site.

See SaaS Template Baseline Checklist, SaaS Aggregate Root Assignment, and SaaS Cross-repo Published Language for acceptance criteria and cross-repo contracts.

EPIC-SAAS-SHELL

Purpose ConnectSoft.Blazor.Shell.Saas: single Blazor Web App host with MFE registry/loading, OIDC/BFF alignment, tenant/edition UX, observability, and sample deployment patterns.
In scope Shell-only concerns; integration contracts with Authorization Server and API Gateway.
Out of scope Business logic belonging to bounded-context services; per-context MFE template content (see EPIC-SAAS-MFE).
Key dependencies EPIC-SAAS-SVC-SURFACE for ServiceModel clients; Blazor Templates HLD.
Definition of done Waves in the Blazor backlog (registry through observability/sample deployment) meet AC; shell documented vs generic Blazor shell.
Detailed backlog Blazor microfrontend backlog — EPIC-SAAS-SHELL

EPIC-SAAS-MFE

Purpose Per–bounded-context Blazor MFE templates (admin/self-service as needed): routing, ServiceModel client registration, authorization, shell integration, tests (bUnit/Playwright).
In scope Minimum five context groups (catalog, tenants, entitlements, billing, metering) as feature blocks in the Blazor backlog.
Out of scope Backend ServiceModel package internals; shell host implementation.
Key dependencies EPIC-SAAS-SHELL; EPIC-SAAS-SVC-SURFACE; Identity/Authorization Server MFE patterns.
Definition of done Each context MFE feature group meets AC; only ServiceModel packages referenced from API consumers; no domain leakage.
Detailed backlog Blazor microfrontend backlog — EPIC-SAAS-MFE

EPIC-SAAS-EXT

Purpose ConnectSoft.Extensions.Saas.*: one Git repo per package (Abstractions, AspNetCore, Options, Testing, …), NuGet publish, migration from inlined stubs in templates and shell.
In scope Package boundaries, APIs per saas-extensions-saas-libraries, migration checklist across templates.
Out of scope Product-specific business rules inside extension libraries.
Key dependencies EPIC-SAAS-TPL-CTX stabilization for consumption patterns; ProductCatalogDemo for extraction candidates.
Definition of done Published packages on agreed feeds; templates reference NuGet where planned; migration tasks tracked to completion or documented deferrals.
Detailed backlog Backlog plan — EPIC-SAAS-EXT

EPIC-SAAS-REF

Purpose Align ConnectSoft.Saas.ProductCatalogDemo with the ProductsCatalog template and published ConnectSoft.Extensions.Saas.* — proof that the factory story works end-to-end.
In scope Gap analysis, build against feeds, README alignment with template generator.
Out of scope New product features beyond demonstration needs.
Key dependencies EPIC-SAAS-EXT and ProductsCatalog template maturity; items may stay Not ready until dependencies land.
Definition of done Demo builds from published packages; documented diff vs template output closed or tracked.
Detailed backlog Backlog plan — EPIC-SAAS-REF

Suggested delivery order

  1. EPIC-SAAS-DOCS and EPIC-SAAS-SVC-SURFACE (foundation: narrative + contract rules).
  2. EPIC-SAAS-TPL-GEN (optional) → EPIC-SAAS-TPL-CTX (core contexts, then monetization contexts).
  3. EPIC-SAAS-SHELL + EPIC-SAAS-MFE in parallel with backend waves where possible.
  4. EPIC-SAAS-EXT after Phase 1 templates stabilize.
  5. EPIC-SAAS-REF last.

Azure DevOps mapping (planning)

Epic ID Suggested work item type Tag
EPIC-SAAS-* Epic or Feature (per process) SaaS-Platform

Azure DevOps Boards import (when approved)

This section replaces the former ConnectSoft.Documentation page Docs/azure-devops/saas-platform-backlog-azure-devops.md. Do not create work items until stakeholders explicitly approve Board import.

What to prepare before any Azure writes

  1. Agree the tag name (e.g. SaaS-Platform) and optional Area path node for the team.
  2. Review the canonical backlog: backlog-plan.md and blazor-microfrontend-backlog-plan.md; use ConnectSoft Documentation — Docs/starters/saas-extensions-and-templates-epics.md as the ID index (same SAAS-* families).
  3. Optionally draft a CSV with columns: Title, Work Item Type, Description, Tags, Area Path—keep local until import.

Prerequisites (at import time)

  • Project in Azure DevOps (e.g. ConnectSoft).
  • Permissions to create work items, Area Paths, and tags (Project Administrator or equivalent).
  • Process template supporting Epic, Feature, and User Story / Task (names vary by process).
Item Value
Tag SaaS-Platform (every work item in this program)
Area path Dedicated node, e.g. ConnectSoft\SaaS Platform or ConnectSoft\Factory\SaaS Templates
Iteration New epics in Backlog until a release train is chosen

Import order (when creating work items)

  1. Create parent items for each Epic (EPIC-SAAS-DOCS … EPIC-SAAS-REF).
  2. Under each epic, create Features (SAAS-SVC-F01, …) from Company backlog-plan.md and blazor-microfrontend-backlog-plan.md, aligned with IDs in Documentation saas-extensions-and-templates-epics.md.
  3. Under each feature, create Tasks with acceptance criteria in the description.
  4. Set repo-creation and pipeline items to Not ready / Blocked until design sign-off, if your process supports it.

Linking work items to docs

  • In each Epic or Feature Description, link to this Company page for the epic summary and to the anchor on the relevant backlog page (e.g. backlog-plan.md#epic-saas-svc-surface).
  • Link to ConnectSoft Documentation for solution plan and bounded-context matrix as needed.

Optional: CSV / Excel import

Use Boards → Work items → Import (if enabled) with the columns above; map epic IDs to titles.

Optional: REST API

Use Work Items - Create REST API; include tag SaaS-Platform for consistent queries.

Queries (after items exist)

Save a shared query “SaaS Platform — all”: Tags Contains SaaS-Platform; order by stack rank or priority.