Skip to main content
Version: Latest

Product Catalog — Starter Kit Integration

Phase 6C (2026-07-18). Integrates the three Product Catalog apply flows (prerequisites, categories, items/units) into TenantStarterKitService as a second, fully independent, optional chain — so a tenant's entire starter setup (accounting and product catalog) can be previewed and applied in one call after the onboarding survey, instead of four separate admin button-presses for the product side alone.

Explicit business scope for this phase

Per direction given before this phase began, product catalog starter setup must never become a full operational product import:

For each BusinessActivity, Shumoul provides only a practical starter structure — BusinessType, ProductDepartment, ProductCategory, Products, UnitOfMeasure, ProductUnits — to help the tenant start with a reasonable catalog structure after onboarding. It does not provide stock quantities, opening inventory balances, inventory transactions, accounting postings, suppliers, real/generated barcodes, price lists, or warehouse balances.

This phase is schema-and-orchestration-only: no new product model fields, no stock logic, no pricing logic, no barcode-generation logic. See Operational Boundaries for the full policy.

What changed

TenantStarterKitRequestBody gained:

ProductCatalogPrerequisiteTemplateId : Guid?
ProductCatalogTemplateId : Guid? // shared by Categories AND Items — same template
IncludeProductCatalogPrerequisites : bool? // null = decide from Features.ProductsManagement
IncludeProductCatalogCategories : bool?
IncludeProductCatalogItems : bool?

Three new step keys (ProductCatalogPrerequisites, ProductCatalogCategories, ProductCatalogItems) were added to the plan/log — see Tenant Starter Kit Orchestration for the full dependency, entitlement, and cross-step-passthrough rules (these are documented there, not duplicated here, since they're properties of the orchestration layer, not of the product catalog itself).

TenantStarterKitApplyLog gained 4 nullable columns: ProductCatalogPrerequisiteTemplateId/Code, ProductCatalogTemplateId/Code (the latter pair shared by both the Categories and Items steps, since they use the same template) — migration Add_TenantStarterKitApplyLog_ProductCatalogColumns, purely additive, no drops.

No BackEnd source changes

This phase touched only Shumoul.MultiTenancyApi — the orchestration calls the exact same, unchanged ITenant*ApplyService interfaces and internal BackEnd endpoints that Phases 6/6A.1/6B already shipped and tested. No new BackEnd internal endpoint, no new bridge, no new tenant write path was introduced.

Package release

Shumoul.Framework.MultiTenancy.Api bumped 1.0.113 → 1.0.114 for this phase's source change (the orchestration service lives in that package). See Version and Release History for the full release-discipline record, including a documented lapse where the release step was initially skipped and had to be corrected after the fact.

Tests

11 new orchestration tests (default inclusion when entitled; default soft-exclusion when not entitled, with OverallStatus staying Succeeded; explicit-include-without-entitlement is Blocked; Prerequisites failure skips both Categories and Items — the three-level dependency-propagation fix; Categories failure skips only Items while Prerequisites stays Succeeded; excluding Prerequisites+Categories by request still runs Items — partial re-run safety; ResolvedProductDepartmentId passthrough; product-step failure never blocks any accounting step and vice versa; missing prerequisite template blocks only that step; apply log captures both new template Id pairs), alongside updates to the pre-existing StarterKit test suite so its "default full success" fixtures naturally cover all 7 steps.