Contract creation, clause management, amendments, price escalation, milestone tracking, correspondence, and compliance monitoring.
Contract Lifecycle manages all aspects of construction contracts — from drafting with clause library templates through execution, amendments, price escalation claims, milestone-based payments, and formal correspondence. Each contract links to a project, client, and BOQ. Amendments track scope changes with financial impact. Price escalation uses published indices for formula-based adjustments.
| Status | Description | Allowed Actions | Next States |
|---|---|---|---|
| Draft | Contract being prepared from template | Edit Clauses, Add Milestones | Under Review |
| Under Review | Legal/Management review in progress | Approve, Return, Comment | Approved |
| Executed | Contract signed by both parties | Create Amendment, Track Milestones | Active |
| Active | Contract in execution phase | Submit Claims, Log Correspondence | Suspended, Completed |
| Suspended | Contract temporarily halted | Resume, Terminate | Active, Terminated |
| Completed | All milestones achieved, defects liability over | Issue Completion Certificate | Closed |
| Terminated | Contract ended before completion | Calculate Settlement | Closed |
contract_id — PK, unique contract recordproject_id — FK → project.projectcontract_number, contract_type — ID and category (EPC/Item Rate/Lump Sum)client_name, contractor_name — Counterpartiescontract_value, currency — Financial valuestart_date, end_date, defects_liability_period — Key datesstatus — Lifecycle stateclause_id — PK, reusable clause templateclause_code, clause_title — Standard clause identifierclause_text — Full legal text with placeholderscategory — general | payment | variation | termination | disputeis_mandatory — Required in all contracts of typeamendment_id — PKcontract_id — FK → contract.contract_masteramendment_number, amendment_date — Sequential trackingscope_change_desc — Description of changesfinancial_impact, revised_contract_value — Cost impactapproved_by — FK → admin.userescalation_id — PKcontract_id — FK → contract.contract_masterbase_index, current_index — Published price index valuesformula — Escalation formula reference (e.g., IEEMA/WPI)escalation_amount, period — Calculated adjustment per periodstatus — Draft → Submitted → Approved → Paidmilestone_id — PKcontract_id — FK → contract.contract_mastermilestone_desc, planned_date — Milestone detailspayment_pct, payment_amount — Milestone-linked paymentactual_date, ld_applicable — Completion and LD flagLegal team creates contract using clause library templates. Standard clauses auto-populated based on contract type. Custom clauses added for project-specific requirements.
Contract reviewed by legal, finance, and project teams. Comments and red-line changes tracked. Multiple review cycles until consensus reached.
Contract signed by authorized signatories. System records execution date and creates milestone payment schedule. Contract value feeds commitment accounting.
Scope changes documented as numbered amendments. Each amendment records financial impact (increase/decrease) and updates revised contract value. Requires multi-level approval.
Monthly/quarterly price adjustment calculated using published indices (WPI, CPI, IEEMA). Formula-based computation with base month and current month indices. Auto-generates claim for approval.
All milestones achieved, punch list cleared, defects liability period completed. Final account statement prepared. Completion certificate issued. Retention released per schedule.
-- Contract value with amendments and escalation SELECT c.contract_number, c.contract_value AS original_value, COALESCE(SUM(ca.financial_impact), 0) AS amendment_value, COALESCE(SUM(pe.escalation_amount), 0) AS escalation_value, c.contract_value + COALESCE(SUM(ca.financial_impact), 0) + COALESCE(SUM(pe.escalation_amount), 0) AS revised_value FROM contract.contract_master c LEFT JOIN contract.contract_amendment ca ON ca.contract_id = c.contract_id LEFT JOIN contract.price_escalation pe ON pe.contract_id = c.contract_id WHERE c.contract_id = :contract_id GROUP BY c.contract_id;