Skip to main content
Version: Latest

6. Backend Modules

6.1 Shumoul.MultiTenancyApi (Shumoul.Framework.MultiTenancy.Api)

ModuleLocationResponsibility
OnboardingControllerControllers/OnboardingController.csThe 6 public api/v1/onboarding/* endpoints
OnboardingService / IOnboardingServiceOnboarding/OnboardingService.csStatus, survey retrieval, answer merging, recommendation orchestration, apply orchestration, skip
OnboardingRecommendationServiceOnboarding/Rules engine — evaluates OnboardingRules against a session's answers to pick a profile and build the settings patch, summary, warnings, and next actions
HttpOnboardingTenantSettingsApplier / IOnboardingTenantSettingsApplierOnboarding/HttpOnboardingTenantSettingsApplier.csCalls the BackEnd internal bridge over HTTP and returns before/after/applied-patch JSON back to OnboardingService
OnboardingApplyBridgeSettingsOnboarding/OnboardingApplyBridgeSettings.csBound config: Enabled, BackEndBaseUrl, ApplySettingsPath, InternalApiKey, TimeoutSeconds
OnboardingSurveySeederOnboarding/OnboardingSurveySeeder.csSeeds the default survey (default-business-setup), its questions, profiles, and rules on startup
OnboardingCurrentUserPermissionsServiceIdentity/OnboardingCurrentUserPermissionsService.csClaims-based ICurrentUserPermissionsService implementation — see Chapter 9
TenantPermissions.OnboardingConstants/TenancyPermissions.csThe 4 permission constants (View, Answer, Apply, Skip)

6.2 Shumoul.BackEnd

ModuleLocationResponsibility
OnboardingInternalControllerShumoul.Api/Controllers/Internal/OnboardingInternalController.csThe single internal, service-to-service endpoint; validates the internal key, delegates to the patch service
IInternalOnboardingSettingsPatchService / InternalOnboardingSettingsPatchServiceShumoul.Application/Interfaces/Shared/ · Shumoul.Infrastructure/Services/InternalOnboardingSettingsPatchService.csThe settings patch engine — see Chapter 11
InternalServiceAuthSettingsShumoul.Application/Settings/InternalServiceAuthSettings.csBound config: OnboardingApplyApiKey
ApplyOnboardingSettingsPatchInternalRequest / ...ResponseShumoul.Application/DTOs/Onboarding/The internal bridge's request/response contract
IAppSettingServiceShumoul.Application/Interfaces/Services/ (pre-existing)The one official settings read/write/cache-clear service every onboarding-applied setting goes through — no new persistence mechanism was introduced

6.3 What was deliberately not built

  • No new AppSettings storage mechanism — onboarding writes through the exact same IAppSettingService.GetAppSetting<T>() / SetAppSetting<T>() every other feature uses.
  • No duplicate tenant-database connection logic in Shumoul.MultiTenancyApi — it never touches a tenant's ERP database directly.
  • No new authentication system — onboarding uses the same JWT every other ERP endpoint uses (see Chapter 9).