Skip to content

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