About the Client
| Client | Bayleys Real Estate |
| Industry | Commercial & residential property | sales · valuation · property management |
| Region | New Zealand | one of NZ’s largest full-service real estate companies |
| Application | CVE — Commercial Valuation Evidence | internal property evidence platform |
| Legacy | Microsoft Access database → migrated to Aurora PostgreSQL on AWS |
| Delivered by | Peritos Solutions | Oct 2023 – Dec 2023 |
Bayleys is one of New Zealand’s leading full-service real estate companies, operating across commercial, industrial, residential and rural property. Their internal CVE application is used by valuers to record, search, and report on commercial sales and rental evidence across the New Zealand market.
Project Background
Bayleys’ existing Commercial Valuation Evidence system ran on a legacy Microsoft Access database — a standalone, desktop-bound solution with no cloud access, no modern search capability, and no ability to scale to a growing user base. The requirement was to migrate the entire application to a cloud-native platform that could be accessed from any device, support role-based access aligned to Bayleys’ existing Azure AD identity, and provide a significantly improved user experience for valuers entering and searching property evidence.
Peritos Solutions was engaged to design, build, and deploy the full application on AWS — from architecture design and Access database migration through to a React.js frontend, serverless C# API layer, Aurora PostgreSQL database, and production deployment — in under two months.
Project Timelines
| Phase | Period | Key Activities | Status |
| Phase A | Oct 2023 | Requirement gathering, AS IS / TO BE flows, business architecture, application design, AWS account structure setup (Dev/Test/Prod OUs) | Done |
| Phase B | Oct – Nov 2023 | AWS infrastructure setup, React.js frontend, C# Lambda APIs, AWS Cognito + Azure AD SSO, property search, sales entry, rental entry, photo/attachment upload, CI/CD pipelines, unit testing | Done |
| Phase C | Nov – Dec 2023 | Word/Excel export, Google Maps radius search, audit logs, email report delivery, advanced search enhancements | Done |
| Phase D | Dec 2023 | Access DB data migration to Aurora PostgreSQL, UAT, bug fixing, production deployment, documentation & handover | Done |
| Hypercare | Dec 2023 | 1-month free hypercare post go-live, then transition to support contract | Done |
Results & Impact
Observability & Visibility
Assessment Report
Phase A delivered a structured assessment before any build commenced:
- Risk & Gap Analysis — AS IS Access database reviewed, TO BE cloud architecture designed, data migration approach confirmed, and AWS account structure (Dev/Test/Prod organisation units) set up before development started
- Customised Assessment Report — AWS Well Architected Framework assessment completed across all five pillars (Operational Excellence, Security, Reliability, Performance Efficiency, Cost Optimisation), with adherence built into the architecture from day one
- Pricing validated — full AWS pricing model confirmed at USD $124.22/month (Asia Pacific Sydney) before infrastructure was provisioned
Cloud Formation
Serverless AWS Architecture
The entire application was built on a consumption-based serverless model:
- AWS Lambda (C#) — all backend APIs run serverless with automatic scaling, zero server management, and 99.95% SLA
- Aurora Serverless PostgreSQL — database scales automatically with demand, 99.99% SLA, deployed in a private subnet with no public internet access
- AWS Amplify — React.js frontend deployed on a managed CloudFront distribution with built-in level 7 security — no additional CDN or WAF configuration required for the frontend
- CloudFormation IaC — all three environments (Dev/Test/Prod) provisioned from identical infrastructure-as-code scripts, ensuring full environment parity
Scope & Requirements
Phase A — Requirements & Architecture
- AS IS and TO BE process flows documented for sales and rental evidence workflows
- AWS account structure designed — separate Dev, Test, and Prod accounts under an Organisation Unit hierarchy
- Application architecture designed — serverless, multi-layer (Presentation · Business Services · Data Access)
- AWS Well Architected Framework review completed across all 5 pillars
- AWS pricing model confirmed — USD $124.22/month
Phase B — Core Application
- AWS infrastructure setup — VPC, private subnets, CloudFormation scripts, CI/CD pipelines
- User authentication — AWS Cognito with Azure AD as identity provider; JWT token validation on every Lambda; admin/user role assignment from AD groups
- Home screen and navigation — role-based dashboard
- Commercial Valuation Evidence (CVE) module — full sales evidence entry with NZ address restriction
- Property search — by type, category, subcategory, location, date range, price, building area, tenure, zoning, keyword
- Rental Assessment module — rental entry with auto-calculated annual rental (area × contract rate), lease terms, occupancy details
- Photo and document attachment — upload, download, and delete for both sales and rental records; stored in S3
- Sales and rental evidence report — combined report generation
- AWS deployment — Lambda, Aurora, Amplify, API Gateway, WAF, S3, KMS, Secrets Manager, CloudWatch
Phase C — Additional Features
- Word and Excel export of property evidence reports
- Google Maps radius search — restrict property search to X km radius of a searched NZ address
- Audit logs — logging of all data download and export events
- Email report delivery — send evidence reports via SNS/SQS email integration
- Advanced search enhancements — comma formatting on numeric fields, improved address suburb search
Phase D — Data Migration & Production
- Full data migration from Microsoft Access database to Aurora PostgreSQL
- UAT, bug fixing (5% effort allocation), production deployment
- Documentation and handover
- 1-month hypercare support post go-live
Implementation
Serverless Architecture
The backend was built entirely on AWS Lambda using C#, invoked via Amazon API Gateway. This eliminated server management entirely — Lambda scales automatically to handle any volume of concurrent requests, and the consumption-based pricing model means Bayleys pays only for actual usage. At 50,000 Lambda invocations per month, the Lambda cost is effectively zero under AWS’s free tier thresholds.
Authentication — Azure AD + AWS Cognito
Bayleys users authenticate using their existing Bayleys corporate Azure AD credentials. AWS Cognito is configured with Azure AD as the federated identity provider — users click ‘Sign in with Bayleys account’, are redirected to Azure AD for authentication, and returned to the CVE app with a JWT token. Admin role assignment is handled via Azure AD group membership, surfaced in the JWT claim and enforced on every Lambda endpoint.
Property Search & Google Maps Integration
The property search module allows Bayleys valuers to search commercial sales and rental evidence by property type, category, subcategory, location, date, price, building area, tenure, and keyword. NZ address lookup is powered by the Google Maps Places API with results restricted to New Zealand addresses only. The radius search feature allows valuers to find all comparable evidence within a defined kilometre radius of any NZ address — critical for commercial valuation work.
Data Model & Migration
The existing Microsoft Access database was analysed, mapped to a normalised PostgreSQL schema, and migrated to Amazon Aurora Serverless. Aurora’s serverless configuration means the database scales its capacity units automatically based on load — dropping to near-zero cost during idle periods and scaling up for peak search and reporting activity. The database is deployed in a private subnet with no public internet access; Lambda functions access it over the private network only.
Security Architecture
All API endpoints are protected by AWS WAF with AWS managed rule groups covering common web exploits, SQL injection, and bot traffic. AWS Shield Standard provides DDoS protection at the network layer. All sensitive configuration (database connection strings, API keys, third-party credentials) is stored in AWS Secrets Manager in encrypted format. Data at rest in Aurora and S3 is encrypted using AWS KMS. All data in transit is secured via HTTPS/TLS.

Technology & Architecture
| Frontend | React.js | AWS Amplify | responsive | Chrome · Edge · Firefox · Safari |
| Backend | C# (.NET) | AWS Lambda (serverless) | AWS API Gateway | event-driven architecture |
| Database | Amazon Aurora Serverless (PostgreSQL) | 99.99% SLA | auto-scaling | private subnet |
| Auth | AWS Cognito | Azure AD as identity provider | JWT tokens | role-based access (admin / user) |
| Storage | Amazon S3 | PDFs · photos · attachments | private endpoint access from Lambda | KMS encryption |
| Networking | AWS VPC | private subnets for Lambda & Aurora | AWS WAF on API Gateway | AWS Shield Standard |
| Security | AWS WAF (managed rule groups) | AWS Shield Standard | AWS KMS | AWS Secrets Manager | SSL/TLS |
| Notifications | Amazon SNS | Amazon SQS | email delivery for property reports |
| Monitoring | Amazon CloudWatch | AWS CloudTrail | alert & monitoring dashboards |
| DevOps | AWS CloudFormation (IaC) | CI/CD pipelines | Dev · Test · Prod environment parity |
| Integrations | Google Maps API (NZ address lookup · radius search) | Azure AD SSO | Word/Excel/PDF export |
| Region | Asia Pacific — Sydney | monthly AWS cost: USD $124.22 | 12-month total: USD $1,490.69 |
Architecture Overview
A high level architecture diagram as below


Challenges
Access Database Migration to Aurora PostgreSQL
The legacy Microsoft Access database had an unstructured schema built over many years of ad hoc property data entry. Peritos mapped the full Access data model to a normalised PostgreSQL schema before migration, handled data type conversions, and validated migrated data record-by-record against the source before go-live.
Azure AD Federated Identity via AWS Cognito
Integrating Bayleys’ corporate Azure AD as the identity provider for an AWS-native application required careful configuration of OIDC federation in Cognito, JWT claim mapping for admin role detection, and testing across all authentication edge cases — including token expiry, re-authentication, and admin privilege escalation via group membership.
NZ-Only Address Restriction
Google Maps Places API returns global results by default. Enforcing NZ-only address lookup required both frontend component configuration (restricting the Places autocomplete to NZ) and backend validation on address submission — ensuring no non-NZ property records could be created through direct API calls.
Complex Valuation Analysis Fields
The sales evidence entry form includes specialist commercial valuation fields — Building Rate ($/psm), Equivalent Market Yield (%), IRR (%), WALT (years to 2dp), Vacancy (%) — each with specific unit formatting requirements and conditional display rules (e.g. subcategory only active for Commercial Office and Commercial Retail). Getting the field logic right required close collaboration with Bayleys valuers through multiple UAT cycles.
Under Two Months End-to-End
Delivering a fully serverless custom application — including data migration, three AWS environments, CI/CD pipelines, Azure AD integration, Google Maps integration, and report export — in under two months required strict parallel workstreaming across infrastructure setup, backend development, frontend development, and data migration, with daily sprint cycles and rapid UAT feedback turnarounds.
Key Benefits
- Fully serverless — zero server management, automatic scaling, consumption-based pricing at USD $124/month for a full commercial property evidence platform
- Single sign-on — Bayleys staff use their existing corporate Azure AD credentials with no new password or account required
- Cloud-native from day one — built following the AWS Well Architected Framework across all 5 pillars, with IaC (CloudFormation) and CI/CD pipelines ensuring repeatable, reliable deployments
- Access database retired — legacy desktop-only, single-user Access database replaced by a scalable multi-user cloud application accessible from any device and browser
- Google Maps radius search — valuers can find comparable evidence within any km radius of any NZ address, directly inside the application without external tools
- 99.99% database SLA — Aurora Serverless PostgreSQL delivers enterprise-grade availability with automatic failover and no database administration overhead
- Complete audit trail — CloudWatch logging, CloudTrail, and application-level audit logs capture all data access and export activity
Post-Launch Support
Hypercare Period
A 1-month free hypercare period was included from the go-live date. Peritos monitored CloudWatch metrics, resolved all post-launch issues, and provided guidance on Aurora capacity tuning and Lambda concurrency configuration. All Phase B UAT test scenarios (45+ test cases across sales entry, rental entry, and search) were confirmed passed before the hypercare period commenced, with only 3 bugs raised and resolved during testing.
A support contract proposal was prepared for ongoing AMC support following the hypercare period, covering Lambda, Aurora, Amplify, and application-level support.









