Skip to content

Refactor: Migrate models to domain-driven architecture#3128

Open
o-psi wants to merge 1 commit intomainfrom
feature/migrate-models-to-domains
Open

Refactor: Migrate models to domain-driven architecture#3128
o-psi wants to merge 1 commit intomainfrom
feature/migrate-models-to-domains

Conversation

@o-psi
Copy link
Contributor

@o-psi o-psi commented Oct 16, 2025

Summary

  • Migrated 102 models from app/models to app/Domains/[Domain]/Models
  • Created 4 new domains: Core, Company, Tax, Collections
  • Updated 704 files with 1,191 namespace import changes
  • Updated configuration files and service providers

Test plan

  • Composer autoload working correctly
  • All models in correct domain directories
  • Namespace imports updated across codebase
  • Configuration files updated (auth.php, bouncer.php)
  • Git history preserved with proper renames

🤖 Generated with Claude Code
https://claude.com/claude-code

BREAKING CHANGE: All models moved from app/models to domain-specific locations

## Summary
- Migrated 102 models from app/models/ to app/Domains/[Domain]/Models/
- Updated 704 files with 1,191 namespace import changes
- Created 4 new domains: Core, Company, Tax, Collections
- Updated configuration files and service providers

## New Domain Structure

### Core Domain (22 models)
- Auth & Access: User, Role, Permission, PermissionGroup
- Settings: Setting, SettingsConfiguration, UserSetting, + 12 Settings/* models
- Shared Data: Tag, File, Document
- System: AuditLog, NotificationPreference, InAppNotification, MailTemplate, MailQueue
- UI: DashboardWidget, CustomQuickAction, QuickActionFavorite
- Analytics: AnalyticsSnapshot, KpiCalculation, PortalNotification

### Company Domain (10 models)
Company, CompanyCustomization, CompanyHierarchy, CompanyMailSettings,
CompanySubscription, CrossCompanyUser, SubsidiaryPermission, Account,
AccountHold, CreditApplication

### Tax Domain (13 models)
Tax, TaxCalculation, TaxProfile, TaxJurisdiction, TaxRateHistory,
TaxExemption, TaxExemptionUsage, TaxApiSettings, TaxApiQueryCache,
ServiceTaxRate, ProductTaxData, ComplianceCheck, ComplianceRequirement

### Collections Domain (4 models)
DunningSequence, DunningCampaign, DunningAction, CollectionNote

### Financial Domain (22 models)
Invoice, InvoiceItem, RecurringInvoice, Recurring, Payment, PaymentMethod,
PaymentApplication, PaymentPlan, AutoPayment, CreditNote, CreditNoteItem,
CreditNoteApproval, ClientCredit, ClientCreditApplication, RefundRequest,
RefundTransaction, Quote, QuoteApproval, QuoteTemplate, QuoteVersion,
QuoteInvoiceConversion, Category, CashFlowProjection, RevenueMetric,
FinancialReport, Expense

### Client Domain (9 models)
Contact, Address, Location, Network, ClientDocument, CommunicationLog,
ClientPortalAccess, ClientPortalSession, ClientPortalUser

### Product Domain (10 models)
Product, Service, ProductBundle, SubscriptionPlan, PricingRule,
UsageRecord, UsagePool, UsageBucket, UsageAlert, UsageTier

### Other Domains (7 models)
- Asset: Asset
- Ticket: TicketRating, TimeEntry
- Project: Project, Vendor
- Contract: ContractConfiguration
- PhysicalMail: PhysicalMailSettings

## Files Changed
- Models moved: 102
- Configuration files updated: 2 (config/auth.php, config/bouncer.php)
- Service providers updated: 1 (AppServiceProvider.php)
- Interfaces updated: 1 (EmailServiceInterface.php)
- Import statements updated across: Controllers, Services, Livewire,
  Policies, Observers, Jobs, Events, Factories, Seeders, Tests

## Migration Script
Created scripts/update-model-imports.php for automated namespace updates

## Benefits
- Clearer domain boundaries and responsibilities
- Better code organization and discoverability
- Improved separation of concerns
- Foundation for potential microservices architecture
- Easier to understand business logic flow

🤖 Generated with Claude Code
https://claude.com/claude-code

Co-Authored-By: Claude <noreply@anthropic.com>
@sonarqubecloud
Copy link

Quality Gate Failed Quality Gate failed

Failed conditions
4 Security Hotspots
11.2% Duplication on New Code (required ≤ 3%)

See analysis details on SonarQube Cloud

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant