๐ Asset Valuer Pro Handoff Guide
๐ Introductionโ
This document serves as an onboarding and handoff guide for developers, business analysts, and stakeholders who are new to the Asset Valuer Pro (AVP) system. It provides a structured approach to understanding the system's documentation, architecture, and key business processes.
๐ Getting Startedโ
Documentation Overviewโ
The AVP technical documentation is organized into several key areas:
- System Architecture: Overall structure and components
- Business Technical Map: Business processes mapped to technical components
- Component Documentation: Detailed API, models, and service documentation
- Process Workflows: End-to-end workflows for key business processes
- Data Dictionaries: Field-level reference for core entities
Start by reviewing the Documentation Index for a complete map of available documentation.
Environment Setupโ
โ ๏ธ Important Note:
The source code is maintained in a separate repository and is not synced to this documentation GitHub repository. You will need to request access to the source code repository separately.
For development environment setup:
- Refer to the Technology Stack document for required tools and versions
- The codebase is located in the
source-codedirectory (note: this is separate from the documentation repository) - Main solution file:
AVP.slnin the source-code directory - The system consists of several projects:
API- Web API and React frontendApplication- Business logic and application layerDomain- Core domain models and business rulesInfrastructure- Data access and third-party integrationsBackgroundTasks- Background processing services
๐ Understanding the Systemโ
Core Business Contextโ
Asset Valuer Pro is a specialized application for asset valuation that supports:
- Financial Reporting Valuation: Fair value calculations for financial statements
- Insurance Valuation: Replacement and indemnity value calculations
- Asset Management: Lifecycle planning and condition assessment
- Field Data Collection: Mobile data capture for physical attributes and condition
The system implements several valuation methodologies:
- Direct Cost
- Apportionment Cost
- Market Approach
- Income Approach
These align with accounting standards such as IFRS (International Financial Reporting Standards) and IPSAS (International Public Sector Accounting Standards).
Key Technical Architectureโ
The system follows a clean architecture pattern with:
- Web Layer: React frontend and ASP.NET Core API
- Application Layer: CQRS pattern with MediatR for commands and queries
- Domain Layer: Rich domain model with business logic
- Infrastructure Layer: Data access with Entity Framework Core
The application is deployed to Azure Cloud in the Sydney region with:
- Web application (.NET Core and React)
- iOS capture application
- Supporting infrastructure including logging and database systems
- Point-in-time recovery capability
Version Considerationsโ
The system exists in multiple versions:
- Version 2: Original implementation, using File Maker Pro for mobile data collection
- Version 3: Current implementation, with custom iOS app and enhanced features
Important differences are noted in the Version Notes Guidelines.
๐ Key Business Processesโ
Valuation Processโ
The end-to-end valuation process includes:
- Client and Job setup
- Valuation Framework creation (asset hierarchy and assumptions)
- Asset Registration (import or manual)
- Data Collection (field app or direct entry)
- Calculation processing
- Report generation
- Job archiving
For detailed information, see the Valuation Process Workflow.
Field Data Collectionโ
The field data collection process includes:
- Exporting data to mobile app
- Field inspection and data capture
- Photograph collection
- Data synchronization
- Integration with valuation process
For detailed information, see the Field Data Collection Workflow.
Reportingโ
The reporting process includes:
- Data validation
- Report selection and configuration
- Report generation
- Export and storage
For detailed information, see the Reporting Process Workflow.
๐ Key Components Referenceโ
Core Domain Modelsโ
| Model | Description | Documentation |
|---|---|---|
| Asset | Core asset entity | Asset |
| Component | Asset component | Component |
| Job | Valuation job | Job |
| ValuationProfile | Valuation methodology | ValuationProfile |
Main API Controllersโ
| Controller | Purpose | Documentation |
|---|---|---|
| AssetController | Asset management | AssetController |
| ComponentController | Component management | ComponentController |
| ImportController | Data import/export | ImportController |
| JobController | Job management | JobController |
| ReportsController | Report generation | ReportsController |
Business Logic Servicesโ
| Service | Purpose | Documentation |
|---|---|---|
| ValuationService | Valuation calculations | ValuationServices |
| ReportCalculationService | Report generation | ReportingServices |
| ImportExportService | Data import/export | ImportExportServices |
๐ Development Guidelinesโ
Accessing and Using Documentationโ
-
Finding Information:
- Use the Documentation Index as your starting point
- Refer to data dictionaries for field-level details
- Consult process workflows for end-to-end understanding
-
Contributing to Documentation:
- Follow the emoji usage guidelines in Emoji Reference
- Maintain consistent formatting with existing documents
- Cross-reference related documentation where appropriate
- Update inventory documents when adding new components
Development Approachโ
-
Understanding Changes:
- Begin with the Business Technical Map to understand how business processes map to components
- Review the relevant workflow documentation
- Understand the domain models involved
- Check relevant API controllers and services
-
Making Changes:
- Ensure changes align with existing architectural patterns
- Follow domain-driven design principles
- Maintain separation of concerns between layers
- Implement validation at appropriate levels
- Update documentation when making significant changes
Testing Guidanceโ
-
Testing Approach:
- Domain logic has unit tests in the
AVP.Testproject - Integration tests cover key workflows
- Manual testing focuses on UI/UX and report generation
- Domain logic has unit tests in the
-
Testing Considerations:
- Valuation calculations have complex business rules
- Reports must meet specific formatting requirements
- Data import/export formats must be exactly correct
- Mobile synchronization requires special testing
๐ Common Tasks and Workflowsโ
Adding a New Asset Typeโ
- Update the asset hierarchy in the database
- Configure valuation assumptions
- Update related valuation profiles if needed
- Test with sample assets of the new type
See: Asset Hierarchy Management
Creating a New Reportโ
- Create a new query handler in the
Application/Reports/Queriesdirectory - Implement the report generation logic
- Add a new endpoint in
ReportsController.cs - Update the UI to include the new report option
See: Reporting Process Workflow
Modifying Valuation Calculationsโ
- Understand the current calculation in relevant valuation method
- Modify the calculation logic
- Update unit tests
- Test with representative sample data
See: Valuation Fields Dictionary
๐ Known Issues and Limitationsโ
-
Performance Considerations:
- Large asset imports can be memory-intensive
- Report generation for extensive portfolios may be slow
- Calculation refresh is resource-intensive for large data sets
-
Version-Specific Issues:
- Version 2 to Version 3 migration has data format differences
- Mobile app integration points differ between versions
- Report templates may need version-specific handling
๐ Support and Resourcesโ
Internal Supportโ
- Documentation repository: Available in this GitHub repository
- Technical knowledge base: Referenced in documentation
- Source code: Located in the separate source code repository (not included in this documentation repository)
External Resourcesโ
- .NET Core documentation: Microsoft Docs
- React documentation: React Docs
- Entity Framework Core: EF Core
- MediatR documentation: MediatR GitHub
๐ Additional Documentation (Requires Legacy Developer Input)โ
These documentation areas are critical to capture while the current developer is available. Items are split into two categories: one for application & database handoff to the new dev team, and the other for DevOps-specific items for Tom.
๐งโ๐ป Application & Database โ For New Dev Teamโ
| # | Area | Description |
|---|---|---|
| 1 | Mobile App Sync Architecture | How data syncs between the iOS app and backend, including retry logic, offline mode, and known issues. |
| 2 | Performance Optimization Notes | Optimizations implemented (e.g., for large asset imports or reports) and known bottlenecks. |
| 3 | Data Migration History (V2 โ V3) | Key changes, pain points, and handling differences in data structure or behavior. |
| 4 | Third-Party Dependencies | APIs, SDKs, libraries in useโincluding those with special integration or licensing concerns. |
| 5 | Support Runbooks | Step-by-step resolution playbooks for common production issues (e.g., sync errors, report failures). |
| 6 | Glossary of Domain Terms | Definitions of key business and technical terms (e.g., valuation profile, component hierarchy). |
| 7 | Sample Data Packs | Dummy or anonymized datasets for dev/test environments that reflect common edge cases. |
| 8 | Database ERD | Visual or written description of table relationships (e.g., Asset โ Component โ Job). |
| 9 | Schema Change Log | Record of structural database changes and reasoning behind them. |
| 10 | Indexing & Query Tuning Notes | Indexed fields and any important performance tuning details or slow query workarounds. |
| 11 | DB Init & Seeding Scripts | How to set up a working local database environment, including base seed data. |
| 12 | Data Validation Rules | Business rules, constraints, and field-level checks not enforced at code level. |
| 13 | Complete Data Dictionary | Field-level definitions and intended usage, especially for reporting fields. |
| 14 | ETL / Reporting Data Flows | How reporting data is transformed or pre-aggregated, including staging logic. |
โ๏ธ DevOps & Infrastructure โ For Tomโ
| # | Area | Description |
|---|---|---|
| 1 | CI/CD Pipeline Overview | How builds, tests, and deployments work (e.g., GitHub Actions, staging vs production, secrets). |
| 2 | Feature Flags / Configuration Matrix | Runtime toggles and environment-specific settings that influence behavior. |
| 3 | Error Handling & Logging Strategy | Where logs go (e.g., Azure), how errors are handled, and how to trace/debug key flows. |
| 4 | Backup & Recovery Procedures | Where backups are stored, retention policies, and how to restore the system. |
| 5 | Azure Infrastructure Overview | Overview of cloud services (e.g., App Services, DB, storage, logging) and key settings. |
๐ Immediate Handover Activitiesโ
To ensure smooth transition, the following activities should be prioritized while the existing developer is available:
-
Knowledge Transfer Sessions:
- Schedule 3-5 focused sessions (2 hours each) covering:
- Core architecture and design decisions
- Known issues and workarounds
- Common support scenarios
- Mobile sync architecture
- Deployment process walkthrough
- Schedule 3-5 focused sessions (2 hours each) covering:
-
Pair Programming:
- Implement 1-2 small features together
- Work through a typical bug fix process
- Perform a deployment to staging environment
-
Documentation Expansion:
- Create screen recording walkthroughs of critical processes
- Document 5 most common support issues and resolutions
- Review and annotate any complex code sections
-
Environment Access:
- Set up developer environments with all necessary access
- Verify database connections and permissions
- Ensure code repository access is in place
- Complete Azure portal permissions transfers
๐ First 30 Days Planโ
After handover, the new development team should focus on these activities:
-
Week 1-2: Orientation
- Review all documentation
- Set up development environments
- Run the system locally
- Trace key workflows end-to-end
-
Week 3-4: Controlled Changes
- Fix 2-3 minor bugs
- Implement a small non-critical feature
- Run test deployments to staging
- Update documentation based on new understanding
-
Throughout: Documentation Enhancement
- Add to the data dictionary as knowledge improves
- Document any discovered undocumented features
- Create additional diagrams for complex processes
- Update any incorrect documentation
๐ Conclusionโ
This guide provides a starting point for understanding the Asset Valuer Pro system. Remember to leverage the comprehensive documentation available, especially the process workflows and data dictionaries, to gain a deeper understanding of the system.
The additional documentation areas outlined above should be prioritized to ensure a smooth transition from the current development team to the new team. By systematically working through these items, the new team will more quickly become self-sufficient.
For any questions or clarifications, refer to the documentation first, and then reach out to the development team if needed.
Happy developing!