Legacy System Replacement and Contract Automation
How a home builder replaced an unstable custom sales system with a Zoho CRM contract builder, using subforms to calculate custom home pricing and one-click merge to Zoho Sign.
Client details generalized to protect confidentiality.
Builders or contractors running a legacy custom application for sales and contracts that has become a liability nobody wants to maintain.
The Challenge
Sales and contract generation ran on a custom Ruby on Rails application that had become unstable and was maintained by nobody currently at the company. Custom home pricing depended on selections and allowances calculated inside that system, so replacing it meant reproducing pricing logic that only existed in code. Contracts were generated from it too, which meant every outage stopped both selling and closing.
The Solution
Selection and Pricing Subforms
Home selections and allowances are entered as subform line items that calculate the contract price as they are built.
- Subforms for selections and allowances
- Line-level pricing with rollup to total
- Option dependencies enforced
- Base plan pricing per model
Contract Builder
The contract assembles from the deal and its selections rather than being written per sale.
- Writer merge template with conditional sections
- Selections rendered as contract exhibits
- Allowance schedule included
- Version retained on regeneration
One-Click Merge to Signature
The assembled contract goes out for signature from the deal record in a single action.
- Generate and send in one action
- Signer roles predefined
- Reminder cadence set
- Status written back to the deal
Legacy Replacement and Data Migration
Historical deals, selections, and contracts come across so the old system can be retired rather than kept running for reference.
- Deal and selection history migrated
- Pricing logic reproduced and validated
- Parallel validation against the legacy system
- Legacy system decommissioned
Apps in This Solution
Zoho CRM
Zoho Writer
Zoho Sign
Under the Hood Technical detail
- Pricing Reproduction
- Pricing logic was extracted from the legacy application and validated by running historical deals through both systems and comparing totals. Reproducing from documentation alone was not possible, since the documentation did not match the code.
- Subform Choice
- Selections live in subforms rather than a related module, because they are always viewed and edited with the deal and never independently. A related module would have been more flexible and materially worse to use.
- Conditional Contract Sections
- Contract sections show or hide based on selections, so one template covers every configuration. Maintaining a template per home model was the alternative and it guarantees divergence over time.
- Cutover Approach
- Both systems ran in parallel while totals were compared, and the legacy application was decommissioned only after matching. Keeping it running indefinitely as a reference was tempting and would have preserved the dependency the project existed to remove.
- Notable Constraint
- Custom homes generate genuine one-off items that no selection list anticipates. A free-form line item type exists for those, priced manually with a note, so the exception does not force a workaround outside the system.
The Results
- Selling and closing no longer depend on an unmaintained legacy application.
- Contract price calculates as selections are entered rather than afterward.
- The contract generates and sends for signature in one action.
Running Sales on a Legacy System?
We have replaced custom sales applications with Zoho CRM builds including pricing and contract logic. Tell us what your current system does.