salesforce-appraiser-review.../docs/NEXT_STEPS_DOCGEN.md

92 lines
3.4 KiB
Markdown

# Next Steps
## What is done
The CLM document generation workflow is fully implemented:
- `clmDocGenWorkbench` quick action — account selection, letter type selection,
folder browsing, template selection, generate, poll, attach
- `CLMAdminService` + `CLMDocGenCallout` — full Apex service layer
- All CLM tracking fields persisted back to `Appraiser_Case__c`
The eSignature browsing layer is implemented (read-only):
- `docusignEsignWorkbench` — accounts, templates, envelopes
- `DocusignESignatureService` — login info, user info, account list, templates,
envelopes
---
## Phase 2 — eSignature envelope creation
The natural next step is connecting the two halves: after a CLM document is
generated and attached to the case, send it for signature.
### 1. Add eSignature tracking fields to `Appraiser_Case__c`
Fields needed on the case to track the envelope lifecycle:
- `ESignature_Envelope_Id__c` (Text)
- `ESignature_Envelope_Status__c` (Text — Created / Sent / Delivered / Completed / Voided)
- `ESignature_Sent_At__c` (DateTime)
- `ESignature_Completed_At__c` (DateTime)
- `ESignature_Envelope_Url__c` (URL — link to envelope in DocuSign)
### 2. Add `createEnvelope()` to `DocusignESignatureService`
Two approaches depending on workflow preference:
**Option A — Envelope from template**
Use a pre-built eSignature template. Recipients and document are defined in the
template; Salesforce passes merge data (tabs) at send time.
```apex
// POST /v2.1/accounts/{accountId}/envelopes
// body: { templateId, templateRoles: [{ email, name, roleName }], status: 'sent' }
```
**Option B — Envelope from uploaded document**
Use the CLM-generated document (already attached to the case as a
ContentVersion). Download the blob and POST it directly as an envelope document.
```apex
// POST /v2.1/accounts/{accountId}/envelopes
// body: { documents: [{ documentBase64, name, fileExtension, documentId }],
// recipients: { signers: [...] }, status: 'sent' }
```
Option A is simpler if a matching eSignature template exists.
Option B gives more control but requires managing recipient configuration in code.
### 3. Persist envelope result to `Appraiser_Case__c`
On success, write the envelope ID, status, and sent timestamp back to the case
(same pattern as `CLMAdminService.persistDocGenResult`).
### 4. Add send action to `clmDocGenWorkbench`
After "Attach Generated Document" succeeds, enable a "Send for Signature" button
that calls the new `createEnvelope()` method. Show envelope status alongside
the existing task status display.
### 5. Add envelope status polling (optional)
Mirror the CLM task status pattern: a "Check Signature Status" button that calls
`GET /v2.1/accounts/{accountId}/envelopes/{envelopeId}` and updates the case.
---
## Phase 3 — Additional letter types
Three letter types are defined in `CLM_Letter_Definition__mdt` but have no CLM
templates yet:
- `NOD_LETTER` — Notice of Deficiency
- `EDUCATION_LETTER` — Education correspondence
- `INTENT_TO_REMOVE_LETTER` — Intent to Remove notification
For each:
1. Build the CLM template `.docx` and upload to the CLM account
2. Update the `Default_Template_Document_Href__c` in the corresponding
`CLM_Letter_Definition__mdt` records
3. Confirm whether deficiency display or field set differs from the appraiser
review letter (if so, extend `AppraiserCasePayloadBuilder`)
---
_Last updated: 2026-04-09_