Contract Module Specification¶
Purpose¶
The contract module implements the Contract Domain inside the Spring Boot Modulith. It owns post-award delivery from contract workspace creation through delivery planning, milestones, deliverables, variations, invoices, payments, performance, risks, closeout, and contract lessons learned.
Owned Domain¶
Contract owns awarded contract delivery state, contract workspaces, milestones, deliverables, supplier coordination records, variations, invoices, payments, performance records, contract risks, closeout records, and lessons learned from delivery. It references Bid, Organization, Supplier, Funding, and Intelligence records by ID and does not own their source facts.
Owned Aggregates¶
| Aggregate | Responsibility |
|---|---|
| Contract Workspace | Root aggregate for contract status, award reference, delivery plan, and major artefact references. |
| Delivery Plan | Milestones, deliverables, responsibilities, owners, and dates. |
| Variation Register | Variation requests, approvals, impact, and status. |
| Financial Tracking | Invoice state, payment state, and cash-flow references. |
| Performance Register | Performance indicators and contract health state. |
| Risk Register | Contract risk state, severity, owner, and mitigation. |
| Closeout Record | Completion checks, final status, closeout decision, and lessons learned. |
Owned Entities¶
Contract Workspace, Delivery Plan, Milestone, Deliverable, Supplier Coordination Record, Variation, Invoice, Payment, Performance Record, Contract Risk, Closeout Record, and Contract Lesson Learned.
Owned Value Objects¶
ContractWorkspaceId, ContractStatus, MilestoneStatus, DeliverableStatus, VariationStatus, InvoiceStatus, PaymentStatus, ContractRiskLevel, ContractHealthScore, PerformanceMetricValue, CloseoutStatus, Money, and DateRange.
Commands¶
| Command | Responsibility |
|---|---|
| CreateContractWorkspace | Create a delivery workspace after award or contract creation event. |
| CreateDeliveryPlan | Establish delivery plan, milestones, deliverables, owners, and dates. |
| UpdateMilestone | Change milestone status, date, or progress context. |
| UpdateDeliverable | Change deliverable status, owner, or acceptance state. |
| RecordSupplierCoordination | Capture contract-specific supplier coordination activity. |
| RequestVariation | Propose scope, cost, or schedule change. |
| ApproveVariation | Record governed approval and impact. |
| RecordInvoice | Capture invoice metadata, amount, due date, and status. |
| RecordPayment | Capture payment state against an invoice. |
| IdentifyContractRisk | Record risk, severity, cause, owner, and mitigation. |
| UpdateContractPerformance | Record performance metric or health state. |
| CloseOutContract | Complete closeout checklist and final status. |
| CaptureContractLessonsLearned | Record delivery lessons for Learning, Intelligence, and memory. |
Queries¶
| Query | Responsibility |
|---|---|
| GetContractWorkspace | Return workspace state and award reference. |
| GetDeliveryPlan | Return milestones, deliverables, owners, and dates. |
| GetMilestones | Return milestone status and due-date view. |
| GetDeliverables | Return deliverable status and acceptance state. |
| GetVariationRegister | Return variation requests and approval state. |
| GetFinancialTracking | Return invoice and payment summary. |
| GetContractRisks | Return risks, severity, owner, and mitigation status. |
| GetContractPerformance | Return performance metrics and health summary. |
| GetCloseoutRecord | Return closeout checklist and final state. |
| GetContractLessonsLearned | Return delivery lessons captured from the contract. |
Application Services¶
ContractWorkspaceApplicationService, DeliveryPlanningApplicationService, MilestoneApplicationService, DeliverableApplicationService, SupplierCoordinationApplicationService, VariationApplicationService, ContractFinanceApplicationService, ContractRiskApplicationService, PerformanceApplicationService, CloseoutApplicationService, and ContractLearningApplicationService.
Domain Services¶
ContractCreationService, DeliveryPlanningService, MilestoneMonitoringService, VariationControlService, InvoiceReviewService, PaymentTrackingService, ContractRiskService, ContractHealthService, CloseoutService, and LessonsLearnedService.
Policies¶
Contract Creation Policy, Delivery Planning Policy, Milestone Monitoring Policy, Variation Control Policy, Invoice Review Policy, Payment Tracking Policy, Contract Risk Policy, Closeout Policy, and Lessons Learned Policy.
Repositories¶
ContractWorkspaceRepository, DeliveryPlanRepository, MilestoneRepository, DeliverableRepository, SupplierCoordinationRepository, VariationRepository, InvoiceRepository, PaymentRepository, ContractPerformanceRepository, ContractRiskRepository, CloseoutRepository, ContractLessonRepository, and ContractAuditRepository.
Events Published¶
ContractWorkspaceCreated, DeliveryPlanCreated, MilestoneUpdated, DeliverableUpdated, SupplierCoordinationRecorded, VariationRequested, VariationApproved, InvoiceRecorded, PaymentRecorded, ContractRiskIdentified, ContractPerformanceUpdated, ContractClosedOut, and ContractLessonsLearnedCaptured.
Events Consumed¶
BidOutcomeCaptured, BidSubmitted, TenderWorkspaceCreated, OrganizationProfileUpdated, CapabilityVerified, SupplierTrustUpdated, SupplierQuoteReceived, FundingRecommendationCreated, CashFlowRiskIdentified, AIRecommendationProduced, and AdministrativePolicyChanged. Consumed events trigger Contract-owned commands or read model updates only.
REST API Responsibility¶
The module owns API responsibilities for contract workspaces, delivery plans, milestones, deliverables, supplier coordination records, variations, invoices, payments, risks, performance, closeout, and lessons learned. Final endpoint paths and OpenAPI schemas are deferred.
Database Ownership¶
Contract owns conceptual persistence for contract workspaces, delivery plans, milestones, deliverables, supplier coordination records, contract variations, contract invoices, contract payments, performance records, contract risks, closeout records, contract lessons learned, and contract audit logs.
Module Dependencies¶
Allowed dependencies are shared kernel identifiers, identity authorization context, bid award and outcome events, organization delivery context read models, supplier trust and quote summaries, funding cash-flow signals, notification reminder triggers, analytics event projections, and intelligence recommendation boundaries.
Forbidden Dependencies¶
Contract must not mutate Bid submission records, Organization profile facts, Supplier master data, Funding applications, Intelligence reasoning sessions, Notification delivery records, or Analytics projections. Other modules must not write contract delivery, variation, invoice, payment, risk, performance, or closeout tables directly.
AIOS Interaction Boundary¶
AIOS may suggest milestone risks, delivery summaries, variation impacts, invoice or payment risk explanations, closeout gaps, and lessons learned. Contract decides whether suggestions become contract facts through governed application services.
Security And Tenant Rules¶
- Every contract workspace is organization-scoped and requires
OrganizationId. - Award, financial, variation, payment, and closeout actions require strong authorization and audit context.
- Supplier and funding references must preserve source ownership and tenant boundaries.
- Invoice, payment, and performance data are sensitive tenant data and must be least-privilege protected.
- Contract closeout cannot bypass required delivery, financial, and risk review policies.
Test Strategy¶
Tests must cover workspace creation from award, delivery planning, milestone monitoring, variation approval, invoice and payment state, risk identification, performance updates, closeout policy, lessons learned, event publication, idempotent event consumption, tenant filtering, authorization, and Spring Modulith boundary verification.
Future Microservice Extraction Notes¶
Contract can be extracted when post-award workflows mature. Extraction requires stable award events from Bid, supplier and funding contracts, event delivery to Analytics and Learning, tenant-aware persistence migration, and no direct table use by adjacent modules.
Mermaid Component Diagram¶
flowchart TD
Api[contract.api.rest]
App[contract.application.service]
Command[contract.application.command]
Query[contract.application.query]
Domain[contract.domain.model]
Policy[contract.domain.policy]
Repo[contract.infrastructure.persistence]
Messaging[contract.infrastructure.messaging]
Bid[bid award context]
Organization[organization delivery context]
Supplier[supplier summaries]
Funding[funding signals]
Intelligence[intelligence suggestions]
Notification[notification triggers]
Api --> App
App --> Command
App --> Query
App --> Domain
Domain --> Policy
App --> Repo
App --> Messaging
App --> Bid
App --> Organization
App --> Supplier
App --> Funding
App --> Intelligence
Messaging --> Notification