Triage wrong or stale clause/section reference numbers, REF/SEQ fields, or cross-references in template contracts in SpotDraft (OnlyOffice): numbers look wrong on first open but fix after F9 or 'update fields'; legal says template is correct; DOCX vs PDF signing mismatch. Use when: reference numbers not working, numbering wrong until refresh, Word field codes, cross-reference not updating, template agreement numbering. Trigger phrases: F9 fixes references, select all update fields, wrong reference number contract, Product Agreement numbering, workflow template refs.
Issues where numbered clauses, section references, or Word field-based cross-references appear incorrect in the contract editor (OnlyOffice) or in generated outputs, even when Legal believes the template DOCX is correct.
Incident pattern (evidence-backed): Numbers are wrong when the contract is first opened, but become correct after the user edits, selects all text, and presses F9 (Word / OnlyOffice Update Fields). That strongly suggests fields not refreshed in the client view rather than bad data permanently stored — confirm against downloaded DOCX / PDF and backend artifacts.
Related but different: DOCX → PDF (e.g. for signing) can change how references resolve because conversion often forces Word to update fields, reflow layout, and refresh cross-references — numbers may differ between in-editor DOCX and exported PDF without a single “buggy” number being stored.
Use when:
workflow_id, Legal-updated numbering, PDF vs DOCX for send/signDo not use for:
Template DOCX (Word fields: SEQ, REF, STYLEREF, …)
→ cf-exporter / templater merges variables → Contract version DOCX
→ OnlyOffice loads DOCX → user sees numbers (fields may be stale until updated)
→ Optional: export / convert to PDF for email or signing → field update + reflow may change appearance
Useful identifiers:
| Placeholder | Use |
|---|---|
{contract_id} | Affected contract(s) |
{workflow_id} | Template workflow (e.g. admin workflow change URL) |
{template_id} | Contract template if distinct from workflow |
{cluster} | us / in / eu for admin hosts |
Document in ticket: Loom or screenshots before/after (incident used Loom — use as format example only).
Rootly mitigation for one production incident stated references are correct in the backend with a frontend display / field-refresh angle — verify per contract before asserting.
When customer uses PDF for signing or distribution:
workflow_id / republish).contracts_v3_contractversion to confirm version, docx_version, timestamps — not to prove field staleness.| Option | Tradeoff |
|---|---|
| User Update fields (F9) after open | Training / UX friction |
| PDF path for signing / external share | Numbering may differ from DOCX; customer may object to PDF |
| Template change (Legal) | Time; may need workflow republish |
| Engineering fix (display refresh) | Pod editor / OnlyOffice — if confirmed stale fields on load |
CS note from thread: Avoid promising hacky workarounds; prefer clear vendor/editor behavior + Legal template path when PDF is rejected.
| Observation | Interpretation |
|---|---|
| F9 fixes in editor | Stale / not-auto-updated Word fields in viewer |
| Desktop Word matches post-F9 | Same; not random corruption |
| PDF differs from DOCX | Expected with field update + reflow (not always a bug) |
| Wrong in PDF and Word after manual update | Template or merge bug → escalate engineering |
| Only one workspace / one workflow | Template-specific |
| Reference | Notes |
|---|---|
| SPD-41146 | Reference numbers not working as expected — Mitigated / Done. |
| Rootly #2870 | incident channel — #incident-20260216-medium-reference-numbers-in-the-contract-is-not-working-as-exp |
| Customer (Jira) | EBG (customfield_10032 on SPD-41146) |
| Example IDs (do not hardcode in new tickets) | Workflow 156 (Product Agreement), contracts 1354997, 1380771, 1380744 |
| Sanket context | Shared note on why docx templater struggles with this class of problem — use when explaining limits to stakeholders |
{contract_id} → versions, template, workspace.Run BigQuery queries one at a time if using BQ MCP (repo README — parallel calls can 500).