---
id: UJ-020
title: Convert an accepted proposal into a contract
actors: [sales user, contract owner]
surface: app.zync.is/contracts
goal: Turn accepted commercial terms into a signable contract without rekeying.
trigger: User accepts a proposal and chooses contract creation.
preconditions:
  - Proposal is accepted; contract template/settings exist.
success_state: Contract instance is created with signatories, terms, and source proposal link.
source_specs:
  - docs/specs/2026-05-31-proposal-to-contract.md
  - docs/specs/2026-05-31-contracts-esignature.md
  - docs/specs/2026-05-31-contract-signing-page.md
---

## Happy path

1. User chooses create contract from accepted proposal → Zync maps proposal/customer/line terms into a contract draft.
2. User selects template, variables, signatories, signing order, and expiry → Zync validates required fields.
3. User sends contract → status moves `DRAFT → SENT`; signatories receive tokenized signing links.
4. Signatories open and sign → Zync records signature data, audit events, and ordered status transitions through `VIEWED → SIGNED`.
5. Completed contract stores signed artifact and remains linked to proposal/customer; optional UJ-023/UJ-025 can create billing.

## Alternate and failure paths

- Signatory declines, token expires, signing order is incomplete, or contract is voided → status/audit records terminal outcome; no false signed state.
- Template variable missing → block send and identify the missing value.

## Permissions and boundaries

- Contract owner controls drafting/sending/voiding; signatory can act only on their token.
- Signed document and audit log are immutable except for explicit amendment/renewal flow.

## Source specs

- `docs/specs/2026-05-31-proposal-to-contract.md`
- `docs/specs/2026-05-31-contracts-esignature.md`
- `docs/specs/2026-05-31-contract-signing-page.md`

---
id: UJ-021
title: Renew or amend a contract
actors: [contract owner, signatory]
surface: app.zync.is/contracts
goal: Change future contract terms while preserving prior signed history.
trigger: Contract approaches expiry or terms change.
preconditions:
  - Existing contract is eligible for renewal/amendment.
success_state: New version/amendment is signed or a renewal state is recorded; original remains auditable.
source_specs:
  - docs/specs/2026-05-31-contract-renewal-amendment.md
  - docs/specs/2026-06-01-settings-contracts.md
---

## Happy path

1. Owner opens expiring/active contract → chooses renew or amend.
2. Owner edits allowed future terms and assigns signatories → Zync creates a new draft/version linked to the original.
3. Owner sends for signature → signatories complete the same tokenized signing path as UJ-020.
4. New signed version becomes effective according to configured dates; old version stays immutable.

## Alternate and failure paths

- Renewal deadline passes or signing is declined → old contract remains in its prior state; no silent extension.
- Invalid effective dates or unauthorized field change → block save.

## Permissions and boundaries

- Amendment never rewrites historical signed terms.
- Contract permissions and signing authority are independently enforced.

## Source specs

- `docs/specs/2026-05-31-contract-renewal-amendment.md`
- `docs/specs/2026-06-01-settings-contracts.md`
