salesforce-composite-envelo.../composite-envelope-builder/QUICK_START.md

248 lines
7.9 KiB
Markdown

# Quick Start Guide
## ✅ Phase 2 Complete: Code Development
All Apex classes and tests have been created! Here's what you have:
### 📦 Code Files Included in This Package
**Main Classes:**
1. `DocusignCompositeEnvelopeBuilder.cls` - Invocable method for Flow integration (uses dfsle toolkit)
2. `DocusignEnvelopeRequest.cls` - Invocable request parameter object
3. `DocusignEnvelopeRequestHandler.cls` - Request validation helper
4. `DocusignEnvelopeResult.cls` - Invocable result object
**Test Classes:**
- `DocusignCompositeEnvelopeBuilderTest.cls`
- `DocusignEnvelopeRequestHandlerTest.cls`
**Notes on legacy artifacts:**
- The repository contains a legacy `Docusign_Configuration__c` custom object and older REST-helper classes in docs, but the active implementation uses the `dfsle` (DocuSign for Salesforce managed package) toolkit and `dfsle__EnvelopeConfiguration__c` records. The legacy custom setting/object is not required for the current Flow + Apex approach.
**All `.cls-meta.xml` files** use API version 60/61 as shown in each file.
---
## 🚀 Next Steps (Deployment)
### Step 1: Open Project in VS Code
```bash
cd ~/.openclaw/workspace/projects/salesforce-composite-envelope-builder/composite-envelope-builder
code .
```
### Step 2: Install Salesforce Extension Pack (if not already installed)
In VS Code:
1. Open Extensions (Ctrl+Shift+X)
2. Search for "Salesforce Extension Pack"
3. Click Install
### Step 3: Authorize Your Salesforce Org
**For Sandbox:**
```bash
sf org login web --alias my-sandbox --instance-url https://test.salesforce.com
```
**For Production:**
```bash
sf org login web --alias my-production --instance-url https://login.salesforce.com
```
This will open a browser window. Log in with your Salesforce credentials.
### Step 4: Set Default Org
```bash
sf config set target-org my-sandbox
```
### Step 5: Deploy to Sandbox
```bash
sf project deploy start --target-org my-sandbox
```
Expected output:
```
Deploying v61.0 metadata to my-sandbox
Status: Succeeded
Component Deployed:
ApexClass DocusignCompositeEnvelopeBuilder
ApexClass DocusignAPIService
ApexClass DocusignCredentials
ApexClass DocusignCompositeEnvelopeBuilderTest
ApexClass DocusignAPIServiceTest
ApexClass DocusignCredentialsTest
CustomObject Docusign_Configuration__c
```
### Step 6: Run Unit Tests
```bash
sf apex run test --wait 10 --result-format human --code-coverage --target-org my-sandbox
```
Expected output:
```
=== Test Summary ===
Outcome: Passed
Tests Ran: 39
Passing: 39
Failing: 0
Skipped: 0
Pass Rate: 100%
Code Coverage: 85%+
```
### Step 7: DocuSign Integration / Credentials (note)
- The current implementation uses the `dfsle` Apex Toolkit from the DocuSign for Salesforce managed package to send composite envelopes. That toolkit stores and references its templates/configuration using managed-package objects such as `dfsle__EnvelopeConfiguration__c`.
- You do NOT need to create the legacy Named Credential / custom setting (`Docusign_Configuration__c`) for the dfsle-based flow. Ensure the `DocuSign for Salesforce (dfsle)` managed package is installed and its envelope configurations/templates exist in Production.
- If you intentionally plan to use the older REST-based helper classes (legacy), then follow the steps below **only**:
1. Create a Named Credential (Setup → Named Credentials → New)
- Example name: `DocusignAPI`
- Example URL: `https://na3.docusign.net/restapi/v2.1`
2. (Optional legacy) Configure `Docusign_Configuration__c` custom setting/object with `Account_Id__c` and `Base_URL__c` if your older REST helpers require it.
3. Add Remote Site or appropriate callout permissions for external DocuSign endpoints.
### Step 8: Update Screen Flow
See `docs/deployment-guide.md` section 5 for detailed Flow configuration steps.
**Summary:**
1. Open your existing form selection Flow
2. Add Apex Action element (after template selection)
3. Select action: `Send Composite Docusign Envelope`
4. Map inputs:
- `templateIds``{!SelectedTemplateIds}` (from checkboxes)
- `recordId``{!recordId}`
- `language``{!SelectedLanguage}`
- `emailSubject` → "Please review and sign these forms"
- Note: The Apex layer will prefix the subject with `Docusign: ` automatically and will truncate the final subject to 100 characters to satisfy Docusign limits.
5. Store outputs:
- `envelopeId``{!EnvelopeId}`
- `success``{!Success}`
- `errorMessage``{!ErrorMessage}`
6. Add Decision element for success/error handling
7. Save & Activate
### Step 9: Test Integration
1. Navigate to Salesforce record
2. Launch Screen Flow
3. Select language: English
4. Check 2-3 templates
5. Click Send
6. Verify:
- Success message shown
- Envelope ID displayed
- Check Docusign: envelope created with multiple documents
- Recipients receive ONE email
---
## 📚 Documentation
All docs are in the `docs/` folder:
- **requirements.md** - What we're building and why
- **design.md** - Architecture, sequence diagrams, data flow
- **api-reference.md** - Docusign REST API details
- **deployment-guide.md** - Complete deployment instructions
---
## 🧪 Test Coverage Details
**DocusignCompositeEnvelopeBuilderTest** (12 methods):
- ✅ Success with 3 templates
- ✅ Single template (minimum)
- ✅ 14 templates (maximum)
- ✅ Duplicate template handling
- ✅ Custom fields support
- ✅ Validation: no templates
- ✅ Validation: too many templates (>14)
- ✅ Validation: missing record ID
- ✅ API error 400 (bad request)
- ✅ API error 401 (unauthorized)
- ✅ JSON builder test
**DocusignAPIServiceTest** (14 methods):
- ✅ Successful envelope creation
- ✅ Parse envelope ID
- ✅ Parse envelope ID missing
- ✅ Handle errors: 400, 401, 403, 404, 429, 500
- ✅ Retry logic (transient failures)
- ✅ Build HTTP request
- ✅ Execute with retry (non-retryable error)
**DocusignCredentialsTest** (13 methods):
- ✅ Singleton pattern
- ✅ Load from Custom Settings
- ✅ Get access token, account ID, base URL
- ✅ Validate success
- ✅ Validate failures: missing account ID, base URL, token
- ✅ Set test credentials
- ✅ Reset instance
- ✅ Missing Custom Settings error
- ✅ Named Credential format
**Total: 39 test methods across 6 classes**
---
## 🎯 Project Status
| Phase | Status |
|-------|--------|
| Requirements & Design | ✅ Complete |
| Apex Code Development | ✅ Complete |
| Unit Tests | ✅ Complete (39 tests) |
| Documentation | ✅ Complete (56+ KB) |
| Deployment | ⏳ Ready to deploy |
| Flow Integration | ⏳ Awaiting deployment |
| Production Testing | ⏳ Next |
---
## 💡 Tips
**Before Deploying:**
- Review `docs/deployment-guide.md` sections 2-3 for Docusign setup
- Have your Docusign Integration Key ready
- Know your Docusign Account ID
**After Deploying:**
- Run all tests to verify 100% pass rate
- Check debug logs for any issues
- Test with 1 template first, then multiple
**Flow Modification:**
- Keep your existing template selection UI
- Replace the loop that sends individual envelopes
- Add the Apex Action in place of the loop
**SMS Delivery Setup (Flow V4):**
- Use **Flow V4** (`Docusign_Envelope_Templates_V4`) when recipients may not have an email address
- The `Docusign_Recipient_1__c` field on the Client Case **must be populated** with a Contact — a null lookup causes the recipient to be omitted from the envelope entirely
- To trigger SMS delivery: link the Contact to the case but **leave the Contact's Email field blank** — the flow detects this and prompts the operator for a mobile number
- The placeholder email (`placeholder_email@docusign.com`) substituted by Apex is defined as the constant `SMS_PLACEHOLDER_EMAIL` in `DocusignCompositeEnvelopeBuilder.cls`**update the constant there** if the address ever needs to change
---
## ❓ Need Help?
Check the troubleshooting section in `docs/deployment-guide.md` (section 10) for common issues and solutions.
---
**Project Created:** February 23, 2026
**Developer:** Paul Huliganga
**Ready to Deploy:** YES! 🚀