Skip to content

US-110: Organization Profile & Settings Management

1. Story Title

Manage organization profile and global settings

2. Context / Background

After a tenant is created (US-101), the admin needs to configure the organization's identity (branding) and global preferences (localization) to ensure the platform feels like their own and functions according to their region.

3. User Persona

Primary: Priya – Tenant Admin Secondary: All Users (consumers of branding/settings)

4. Problem Statement

Tenants currently have generic branding and default settings (e.g., UTC time), which creates a disconnected user experience and potential confusion in date/time displays.

5. Desired Outcome

Tenant Admin can update the organization's name, logo, and address, and configure global settings like timezone, date format, and base currency. These settings are reflected throughout the application.

6. Business Value

Enhances brand presence (white-labeling feel) and ensures operational accuracy (correct timezones/currencies for HR/Finance).

7. Scope (In / Out)

In: Organization name, logo upload, address, timezone, date format, base currency configuration. Out: Custom domain (CNAME), full white-labeling (custom CSS/themes - future), multi-currency exchange rates.

8. Acceptance Criteria (BDD)

Scenario: Update organization profile
  Given Priya is on the Organization Settings page
  When she updates the Company Name and uploads a new Logo
  Then the changes are saved
  And the application header immediately reflects the new name and logo

Scenario: Configure global localization settings
  Given Priya is on the General Settings tab
  When she sets the Timezone to "Asia/Kolkata" and Date Format to "DD/MM/YYYY"
  Then the system stores these preferences
  And all date displays in the app align with the new format

Scenario: Invalid logo upload
  Given Priya attempts to upload a non-image file (e.g., .txt) as a logo
  When she submits the form
  Then a validation error is displayed
  And the profile is not updated

Scenario: Address validation
  Given Priya enters an incomplete address
  When she attempts to save
  Then the system validates required fields (City, Country)
  And prompts for correction

9. UX Notes / References

Settings page with tabs: "Profile" (Branding/Address) and "Preferences" (Localization). Preview of logo in header.

10. Data / Domain Model Impact

Tenant entity extended: logoUrl, address (struct), timezone, dateFormat, currency, fiscalYearStart.

11. NFR Touchpoints

  • Performance: Settings load < 200ms.
  • Security: Only Tenant Admin role can access/modify.
  • Caching: Global settings should be cached to minimize DB hits on every request.

12. Dependencies

US-101 (Tenant existence).

13. Risks & Mitigations

Risk Impact Probability Mitigation
Malicious file upload (logo) Security vulnerability Low Strict file type validation + virus scan (reusing US-204 logic if avail)
Timezone changes affecting history Data confusion Medium Store all timestamps in UTC; apply display timezone only at UI layer

14. Estimation Support

  1. Settings API (GET/PUT)
  2. Logo upload & storage (S3/MinIO)
  3. Frontend Settings Page
  4. Global Context/Provider for frontend settings

15. Analytics / Success Metrics

% of tenants with custom logo uploaded; frequency of setting changes.

16. Rollout / Release Strategy

Standard release; pre-populate defaults for existing tenants.

17. Definition of Ready Checklist

  • Supported timezones list defined
  • Logo dimension/size limits agreed

18. Definition of Done Checklist

  • All scenarios tested
  • UI reflects changes dynamically
  • Docs updated (Admin Guide)

19. Open Questions

  1. Should we support fiscal year configuration now or wait for Finance module? (Decided: Include simple start month now).
  2. Do we need multi-language support (i18n) settings yet? (Deferred).

Version: 1.0