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.
