186 lines
7.4 KiB
Markdown
186 lines
7.4 KiB
Markdown
---
|
|
title: Migrate DocuSign templates from Sandbox to Production (Salesforce)
|
|
---
|
|
|
|
# Migrate DocuSign templates from Sandbox to Production
|
|
|
|
Purpose
|
|
- Step-by-step guide to: export templates from DocuSign Demo/Sandbox, import into DocuSign Production, and update (or duplicate) the corresponding Salesforce `dfsle__EnvelopeConfiguration__c` records.
|
|
- Includes instructions to create the `Short_Name__c` custom field used by our Apex and Flows.
|
|
|
|
Prerequisites
|
|
- DocuSign admin access (Demo + Production) to export/import templates.
|
|
- Salesforce admin access to create fields and run Data Loader / sfdx commands.
|
|
- `dfsle` (DocuSign for Salesforce) managed package installed in Production.
|
|
- Optional: `sfdx` CLI or Data Loader for bulk changes.
|
|
|
|
High-level steps
|
|
1. Export current `dfsle__EnvelopeConfiguration__c` records from Salesforce (backup).
|
|
2. Export templates from DocuSign Demo/Sandbox and import into DocuSign Production.
|
|
3. Record the new DocuSign template IDs (GUIDs).
|
|
4. Create the `Short_Name__c` custom field on `dfsle__EnvelopeConfiguration__c` (if not present).
|
|
5. Prepare CSV mapping old→new template IDs.
|
|
6. Update existing `dfsle__EnvelopeConfiguration__c` records (or insert duplicates) with new IDs.
|
|
7. Validate by sending test envelopes through the Flow/Apex.
|
|
|
|
Detailed steps
|
|
|
|
1) Export existing Salesforce configs (backup)
|
|
|
|
- Recommended fields to export:
|
|
|
|
```
|
|
Id, Name, dfsle__DocuSignId__c, Short_Name__c, dfsle__EmailMessage__c
|
|
```
|
|
|
|
- sfdx (CSV output):
|
|
|
|
```bash
|
|
sfdx force:data:soql:query -u ORG_ALIAS -q "SELECT Id, Name, dfsle__DocuSignId__c, Short_Name__c, dfsle__EmailMessage__c FROM dfsle__EnvelopeConfiguration__c" --resultformat csv > dfsle_configs_backup.csv
|
|
```
|
|
|
|
- Or use Workbench / Data Loader to export the same fields.
|
|
|
|
Keep this CSV safe — it is your rollback and audit record.
|
|
|
|
2) Export templates from DocuSign Demo/Sandbox
|
|
|
|
- Use DocuSign Admin UI or API to export templates. Options:
|
|
- UI: Admin → Templates (select template) → export / download (if available).
|
|
- API: Use eSignature REST API `GET /v2.1/accounts/{accountId}/templates/{templateId}` to retrieve template definition; then `POST /v2.1/accounts/{accountId}/templates` to create in production.
|
|
|
|
- After import, capture the new template GUIDs. You can find a template's ID in its template URL or via the API.
|
|
|
|
3) Build mapping of old → new template IDs
|
|
|
|
- Minimal mapping CSV for updating existing records (update by `Id`):
|
|
|
|
```
|
|
Id,dfsle__DocuSignId__c
|
|
00Nxxxxxxxxxxxx,AAAAAAAA-BBBB-CCCC-DDDD-111111111111
|
|
00Nyyyyyyyyyyyy,22222222-3333-4444-5555-666666666666
|
|
```
|
|
|
|
- Minimal CSV for inserting duplicates (keep old records intact):
|
|
|
|
```
|
|
Name,Short_Name__c,dfsle__DocuSignId__c,dfsle__EmailMessage__c
|
|
Invoice Template - EN,INV_EN,AAAAAAAA-BBBB-CCCC-DDDD-111111111111,Please sign the attached invoice
|
|
Invoice Template - FR,INV_FR,22222222-3333-4444-5555-666666666666,Veuillez signer la facture
|
|
```
|
|
|
|
4) Create the `Short_Name__c` field on `dfsle__EnvelopeConfiguration__c`
|
|
|
|
Why: Our Apex and Flow use `Short_Name__c` as a compact identifier. If it does not exist in Production, create it before updating/inserting records.
|
|
|
|
UI (recommended)
|
|
|
|
1. In Salesforce Setup go to **Object Manager**.
|
|
2. Search for **Envelope Configuration** (DocuSign) or type `dfsle__EnvelopeConfiguration__c` into the quick find.
|
|
3. Open **Fields & Relationships** → **New**.
|
|
4. Select **Text** as the field type.
|
|
5. Field Label: `Short Name` → Field Name (API): `Short_Name` → Length: `50` (adjust as needed) → Next.
|
|
6. Set Field-Level Security (make visible to integration/admin profiles) → Next.
|
|
7. Add to Page Layouts if desired → Save.
|
|
|
|
Notes about managed-package objects
|
|
- `dfsle__EnvelopeConfiguration__c` is a managed-package object. You can add subscriber-org custom fields to package objects; the API name will be `Short_Name__c` (no package namespace for the custom field).
|
|
- If you cannot create the field via the UI or need to automate it, deploy the field metadata with the Metadata API (MDAPI).
|
|
|
|
MDAPI example (place under `objects/dfsle__EnvelopeConfiguration__c/fields/Short_Name__c.field-meta.xml`):
|
|
|
|
```xml
|
|
<?xml version="1.0" encoding="UTF-8"?>
|
|
<CustomField xmlns="http://soap.sforce.com/2006/04/metadata">
|
|
<fullName>Short_Name__c</fullName>
|
|
<label>Short Name</label>
|
|
<type>Text</type>
|
|
<length>50</length>
|
|
<inlineHelpText>Short identifier for templates used by Apex/Flows</inlineHelpText>
|
|
</CustomField>
|
|
```
|
|
|
|
Include the field in your `package.xml` and deploy with `sfdx force:mdapi:deploy` or your CI.
|
|
|
|
5) Apply the mapping to Salesforce
|
|
|
|
- Update existing records (in-place update keeps references in other automation intact):
|
|
|
|
```bash
|
|
# update by Id
|
|
sfdx force:data:bulk:upsert -s dfsle__EnvelopeConfiguration__c -f updates.csv -i Id -u ORG_ALIAS -w 10
|
|
```
|
|
|
|
- Insert duplicates (if you prefer to preserve old configs):
|
|
|
|
```bash
|
|
sfdx force:data:bulk:insert -s dfsle__EnvelopeConfiguration__c -f inserts.csv -u ORG_ALIAS -w 10
|
|
```
|
|
|
|
- Data Loader: use the GUI to map CSV columns to fields and run Update or Insert jobs.
|
|
|
|
6) Validate & test
|
|
|
|
- Quick queries:
|
|
|
|
```bash
|
|
# list configs with short names
|
|
sfdx force:data:soql:query -u ORG_ALIAS -q "SELECT Id, Name, Short_Name__c, dfsle__DocuSignId__c FROM dfsle__EnvelopeConfiguration__c WHERE Short_Name__c != NULL" --resultformat csv
|
|
```
|
|
|
|
- Send test envelopes:
|
|
- Run the Flow that uses the templates from the UI or use the invocable Apex from Developer Console / Execute Anonymous.
|
|
- Watch logs / debug to verify the correct `dfsle__DocuSignId__c` is used and envelopes are sent successfully.
|
|
|
|
Example Apex (execute as anonymous) — adapt to your codebase if method names differ:
|
|
|
|
```apex
|
|
// Construct an invocable-style request object to test a single template
|
|
// Replace types/names with your project types if they differ
|
|
compositeEnvelope.DocusignEnvelopeRequest r = new compositeEnvelope.DocusignEnvelopeRequest();
|
|
r.templateIds = new List<String>{'NEW-TEMPLATE-GUID'};
|
|
r.recordId = '001xxxxxxxxxxxx';
|
|
System.debug(JSON.serializePretty(r));
|
|
// Call the invocable method or trigger the Flow to verify end-to-end behavior
|
|
```
|
|
|
|
7) Rollback / audit
|
|
|
|
- Keep the original export CSV as your rollback artifact.
|
|
- If something goes wrong, re-run Data Loader using the backup CSV to restore previous `dfsle__DocuSignId__c` values.
|
|
|
|
Troubleshooting & tips
|
|
- If an insert/update fails, check field-level security and that your user has API access for the managed-package object.
|
|
- Some fields on managed-package objects may be controlled by the package; if metadata deploy fails, create the `Short_Name__c` field via the UI.
|
|
- If your Flow or other automation reference specific Config record Ids, prefer updating in-place rather than inserting duplicates.
|
|
|
|
Appendix
|
|
|
|
- SOQL to select configs with non-blank `Short_Name__c`:
|
|
|
|
```sql
|
|
SELECT Id, Name, Short_Name__c FROM dfsle__EnvelopeConfiguration__c WHERE Short_Name__c != NULL
|
|
```
|
|
|
|
- Example update CSV (updates.csv):
|
|
|
|
```
|
|
Id,dfsle__DocuSignId__c
|
|
00Nxxxxxxxxxxxx,AAAAAAAA-BBBB-CCCC-DDDD-111111111111
|
|
00Nyyyyyyyyyyyy,22222222-3333-4444-5555-666666666666
|
|
```
|
|
|
|
- Example insert CSV (inserts.csv):
|
|
|
|
```
|
|
Name,Short_Name__c,dfsle__DocuSignId__c
|
|
Invoice Template - EN,INV_EN,AAAAAAAA-BBBB-CCCC-DDDD-111111111111
|
|
```
|
|
|
|
If you want, I can:
|
|
- Export the current `dfsle__EnvelopeConfiguration__c` records from an org (provide `ORG_ALIAS`) and create the mapping CSV template for you.
|
|
- Create the MDAPI metadata XML for `Short_Name__c` under `deploy/mdapi/objects/dfsle__EnvelopeConfiguration__c/fields/` and add it to `deploy/mdapi/package.xml` for deployment.
|
|
|
|
---
|
|
Last updated: 2026-04-01
|