3. Overview & Business Goal
3.1 What is Business Onboarding & Smart Configuration?
A short, guided survey a tenant's admin answers the first time they log in — covering their business
activity, POS usage, products/inventory habits, and VAT/accounting needs — after which Shumoul generates a
recommended settings patch and, once the admin accepts it, applies it directly to that tenant's real ERP
AppSettings through the existing, official settings service. No manual configuration screens, no blank
system.
3.2 Business goal
New tenants historically had to configure dozens of individual settings (cashier/POS behavior, product options, discount rules, tax behavior, cost centers, and more) by hand before the system was usable for their actual business. Most tenants don't know what these settings mean on day one. This feature collapses that into a handful of business-language questions ("What's your main business activity?", "Do you use POS?", "Is your business registered for VAT?") and translates the answers into a concrete, previewable settings patch that gets applied with one action.
3.3 High-level flow
Registration / activation
→ first login
→ onboarding status check
→ survey
→ answers
→ recommendation (preview)
→ apply
→ AppSettings updated
→ dashboard access
The survey is a first-login experience, not part of the registration form. A tenant registers, verifies their account (OTP/activation), and only sees the onboarding survey the first time they actually log into the ERP as an authenticated user. See Chapter 5 — User Journey & First Login Flow for the exact sequencing and why that boundary matters.
3.4 What this feature is not
- It is not a replacement for the Settings screens — a tenant can still change every one of these settings manually afterward. Onboarding just sets sensible defaults once.
- It is not a registration step —
Permissions.Onboarding.*endpoints require an authenticated user with a resolved tenant; there is no anonymous onboarding endpoint. - It does not support partial/override application yet —
applyrequiresacceptAll: truein the current phase (see Chapter 17 — Known Limitations).
