Skip to main content
Version: Latest

12. End-to-End Sequence Diagram and Internal Call Map

12.1 Sequence diagram

12.2 Internal call map

Public callController / ActionCommand or direct callServiceDB / context touched
GET Country/GetRegistrationListCountryControllerdirectRegistrationReferenceServiceSharedDbContext.Countries
GET Region/GetRegistrationListByCountryIdRegionControllerdirectRegistrationReferenceServiceSharedDbContext.Regions
GET City/GetRegistrationListByRegionIdCityControllerdirectRegistrationReferenceServiceSharedDbContext.Cities
GET Subscription/Packages/pricingSubscriptionControllerdirectpricing serviceRoot/SaaS DB
POST Tenant/Registration/RegisterTenantRegistrationControllerRegisterNewTenantRequestRegisterNewTenantRequestHandlerITenantService.RegisterAsync (validated by RegisterNewTenantRequestValidator, which calls ISharedLocationServiceSharedLocationServiceSharedDbContext)Root/SaaS DB (Tenant, SubscriptionPlanPackage link, demo subscription)
POST Tenants/VerificationTenantsControllerdirectTenantService.VerifyAsyncRoot/SaaS DB (Tenant.IsVerified)
POST Tokens/CreateTokensControllerdirectTokenService.GetTokenAsync (inline provisioning fallback → DatabaseInitializer/ApplicationDbSeeder)Root DB (auth) + Tenant application DB (provisioning)
GET/POST onboarding/*OnboardingControllerdirectOnboardingService (ISettingsGroupEntitlementService, IOnboardingRecommendationService, IOnboardingTenantSettingsApplier → internal HTTP bridge → OnboardingInternalControllerIInternalOnboardingSettingsPatchService)Tenant application DB (TenantOnboardingSession, TenantOnboardingApplyLog, AppSettings)
POST Saas/TenantStarterKits/Preview / ApplyTenantStarterKitsController (root-admin only)PreviewTenantStarterKitRequest / ApplyTenantStarterKitRequestTenantStarterKitService → 4 independent apply services, each via their own internal bridgeTenant application DB (accounts, inventory categories, cost centers, product catalog) — not part of the self-service journey, see Chapter 11

12.3 Process topology

Both the public signup/onboarding endpoints and every internal bridge endpoint (api/internal/onboarding/apply-settings-patch, and the equivalent accounting/inventory/cost-center/ product-catalog internal endpoints) are hosted inside the same Shumoul.Api process. The "bridge" is a loopback HTTP call the process makes to itself (https://localhost:5001 in dev, https://api.shumoul.com in production) — there is no separate internal-only deployable. This is why enabling the bridge for a dev test only requires environment variables on the one already-running process, not a second service.