3. Overview
3.1 What this guide covers
The complete tenant self-service journey, in order:
Lookup reference data (languages, countries, regions, cities, plans/packages)
→ Submit registration
→ Tenant + subscriber created (unverified)
→ Verify/activate account (OTP)
→ Tenant DB provisioned (background, on first login attempt)
→ Login (JWT issued)
→ Onboarding status check
→ Onboarding survey → answers → recommendation → apply
→ Dashboard access
Steps 1–4 (lookup through activation) are the subject of this guide in detail. Steps 5 onward (provisioning, login, onboarding) are also verified here end-to-end, but the onboarding survey/ recommendation/apply mechanics themselves are documented in full in Business Onboarding & Smart Configuration — this guide cross-references that content rather than repeating it.
3.2 Why this guide exists
Production tenant self-registration was failing with:
Shared location reference-data validation is not implemented in this codebase.
This happened for every real signup attempt that reached the location-validation step of registration
(i.e. every signup — Country/Region/City are required fields). The failure was caused by a dependency
injection registration defect in Shumoul.Framework.MultiTenancy.Api, not by a data or contract problem
— production's own country/region/city dropdowns were already working correctly. The fix, verification,
and full journey re-validation are documented across this guide; see
Chapter 6 for the root cause.
3.3 Repos and packages involved
| Repo | Role |
|---|---|
Shumoul.Saas.MultiTenancyApi | Hosts TenantService, RegisterNewTenantRequestValidator, ISharedLocationService, the onboarding engine, and the public TenantRegistrationController/TenantsController/OnboardingController — packaged as Shumoul.Framework.MultiTenancy.Api |
Shumoul.Saas.Api | Hosts the actual running process (Shumoul.Api) — consumes the MultiTenancyApi package, provides the real ISharedLocationService implementation, RegistrationReferenceService (public lookup APIs), TokenService (login + inline tenant DB provisioning), and the internal onboarding-apply bridge endpoint |
Both the public-facing signup/login/onboarding endpoints and the internal service-to-service bridge
endpoints are hosted in the same Shumoul.Api process — there is no separate gateway or second
deployable for the internal bridge. See Chapter 12.
