12 KiB
Field Mapping: Adobe Sign → DocuSign
This doc tracks direct mappings and required transforms between Adobe Sign library document (template) properties and DocuSign template properties.
Field Type Mapping (inputType + contentType + validation → DocuSign tab)
Adobe Sign requires inputType, contentType, and sometimes validation to determine the correct DocuSign tab.
Source: Adobe Sign UI "Change field type" dropdown (all 15 types) + API field data.
| Adobe UI Label | inputType | contentType | validation | DocuSign Tab | Notes |
|---|---|---|---|---|---|
| Signature | SIGNATURE | SIGNATURE | — | signHereTabs | |
| Initials | SIGNATURE | SIGNER_INITIALS | — | initialHereTabs | NOT a full signature |
| Recipient name | TEXT_FIELD | SIGNER_NAME | — | fullNameTabs | Auto-populated from signer profile |
| Recipient email | TEXT_FIELD | SIGNER_EMAIL | — | emailAddressTabs | Auto-populated from signer profile |
| Date of signing | TEXT_FIELD | SIGNATURE_DATE | — | dateSignedTabs | Auto-populated on signing |
| Text | TEXT_FIELD | DATA | STRING | textTabs | |
| Date | TEXT_FIELD | DATA | DATE | dateTabs | User-entered date (not auto-signed date) |
| Number | TEXT_FIELD | DATA | NUMBER | numberTabs | |
| Drop-down menu | DROP_DOWN | DATA | — | listTabs | Options from hiddenOptions array |
| Attachments | FILE_CHOOSER | DATA | — | signerAttachmentTabs | Manual review recommended |
| Participation stamp | PARTICIPATION_STAMP | — | — | (skipped) | No DocuSign equivalent |
| Image | INLINE_IMAGE | DATA | — | (skipped) | No DocuSign equivalent |
| Company | TEXT_FIELD | COMPANY or SIGNER_COMPANY | — | companyTabs | Auto-populated from signer profile. API returns SIGNER_COMPANY when set via UI. |
| Title | TEXT_FIELD | TITLE or SIGNER_TITLE | — | titleTabs | Auto-populated from signer profile. API returns SIGNER_TITLE when set via UI. |
| Stamp | STAMP | — | — | stampTabs | DocuSign stampTabs — signer uploads/selects a stamp image (hanko/seal). Requires stamp feature enabled on account. |
| Signature block | BLOCK | SIGNATURE_BLOCK | — | signHereTabs | Composite block — mapped to sign-here |
Role/Recipient Mapping
| Adobe Field | DocuSign Field | Notes |
|---|---|---|
| recipientSetRole | role (signer, etc.) | Matching by role name |
| recipientSetMemberInfos.email | role.email |
Known Edge Cases & Decision Log
- [2026-04-14] DocuSign checkboxes must be uniquely tab-labeled and mapped to a recipient; Adobe Sign sometimes groups these differently.
- [2026-04-14] Date fields on Adobe may include validation Adobe-only, which needs stripping or custom mapping for DocuSign’s
dateSigned. - [2026-04-14] Conditional logic for showing/hiding fields in Adobe is not always supported in DocuSign (needs review for each case).
- [2026-04-15]
numberTabsAPI bug: DocuSign API acceptsnumberTabsin the template JSON, but the created template displays as a Text field with "Numbers" validation in the editor. Functionally equivalent at signing time; visual/semantic discrepancy only. No API workaround known. - [2026-04-15] Multi-location fields: Adobe Sign fields can have multiple
locations(cloned/synced instances). DocuSign equivalent is tab merging — multiple tabs with the sametabLabelsync their value. Our compose script now emits one tab per location for all data-entry types. SeePLATFORM-QUIRKS.mdfor full details. - [2026-04-15] Tab width required: DocuSign text-entry tabs render as a vertical line if
widthis omitted. Always passwidth(andheight) from the Adobe Sign location. Minimum 120pt enforced.
Workflow Feature Mapping (Rough)
- Sequential routing → Recipient order
- Parallel routing → Recipient routing order logic (sequential/parallel in DocuSign)
- Conditional logic → Needs review, possible via DocuSign conditional tabs/logic
Coordinate System
Both Adobe Sign and DocuSign measure field positions from the top-left corner of the page with y increasing downward — no coordinate inversion is needed. The conversion is a direct pass-through:
docusign_xPosition = adobe_location.left
docusign_yPosition = adobe_location.top
docusign_width = max(adobe_location.width, MIN_TEXT_WIDTH) # 120pt floor
docusign_height = adobe_location.height
MIN_TEXT_WIDTH = 120 is enforced on all text-entry tabs so they render as visible
input boxes rather than vertical lines (DocuSign renders zero-width tabs as a thin line).
Multi-location (Cloned) Fields
Adobe Sign allows a single field definition to have multiple locations — the field
appears in several places on the document and all instances stay in sync.
DocuSign replicates this via tab merging: multiple tabs that share the same
tabLabel automatically sync their value at signing time. The compose script emits
one tab per location for all data-entry tab types. Radio groups are handled differently
— each location is a separate radio button within the same group, not a clone.
Tab types that support merging (one tab emitted per location):
textTabs, numberTabs, dateTabs, dateSignedTabs, fullNameTabs,
emailAddressTabs, companyTabs, titleTabs, listTabs, checkboxTabs
Tab types that do not merge (only first location used or handled specially):
signHereTabs, initialHereTabs, stampTabs — each location is an independent signing/stamping action
radioGroupTabs — each location is one radio button within the group
signerAttachmentTabs — each location is an independent attachment request
Multi-Document Templates
Adobe Sign library documents can contain multiple documents (PDFs) stacked into one template. DocuSign templates also support multiple documents — each document gets a unique documentId starting from 1.
How it works
The compose pipeline assigns a documentId to each document in the order returned by the Adobe Sign documents.json list. All form fields reference their page position within the document they belong to (pageNumber is 1-based within the document's own page sequence, not the overall template page count).
Adobe Sign template with 2 docs:
doc[0]: "Contract.pdf" (3 pages) → documentId: 1
doc[1]: "Exhibit-A.pdf" (2 pages) → documentId: 2
A field on page 2 of Exhibit-A.pdf:
adobe_location.pageNumber = 2 (within the exhibit)
compose emits: documentId=2, pageNumber=2
DocuSign uses (documentId, pageNumber) together to locate every tab. If only one document exists, documentId is always 1.
Known limitation
Adobe Sign form fields store pageNumber as a sequential page number across the entire template (all documents concatenated). If a template has two 3-page documents, fields on document 2 have pageNumber 4–6. The compose pipeline does not currently rebase page numbers per document — it passes Adobe's page numbers through as-is and sets documentId based on field assignment.
Impact: For single-document templates this is correct. For multi-document templates, verify field placement visually in DocuSign after migration if the template spans more than one PDF.
Conditional Logic Mapping
Adobe Sign conditionalAction → DocuSign conditionalParentLabel + conditionalParentValue on the dependent tab.
| Adobe Sign | DocuSign | Outcome | Notes |
|---|---|---|---|
predicates[].fieldName |
conditionalParentLabel |
Mapped | For radio groups, matches the group name |
predicates[].value |
conditionalParentValue |
Mapped | The value the trigger must equal to reveal the tab |
action: SHOW |
Supported | Mapped | Tab is hidden until condition is met |
action: HIDE |
Not supported | Dropped | No DocuSign equivalent — field always shown. HIDE_ACTION issue emitted. |
operator: EQUALS |
Supported | Mapped | Only operator DocuSign supports |
| Other operators (NOT_EQUALS, etc.) | Not supported | Dropped | Condition skipped. UNSUPPORTED_OPERATOR issue emitted. |
| Multiple predicates (ANY/ALL) | Partial — first EQUALS only | Partial | MULTI_PREDICATE issue emitted; remaining predicates ignored |
| Trigger field on a different recipient | Not supported | Dropped | DocuSign conditionalParentLabel only works within the same recipient's tab set. CROSS_RECIPIENT_CONDITIONAL issue emitted. |
| Parent is signature/auto-fill tab | Not supported | Stripped | DocuSign forbids signature, initial, dateSign, fullName, email, title tabs as conditional parents. INVALID_PARENT_TAB issue emitted. |
Known Gaps
- Conditional HIDE: Adobe Sign can conditionally hide a field. DocuSign only supports
revealing hidden fields — there is no native way to hide a visible field conditionally.
Templates with HIDE conditions will have those fields always visible after migration.
Emits a
HIDE_ACTIONfield issue. - Cross-recipient conditionals: Adobe Sign allows field B to appear/hide based on
the value of field A even when A and B belong to different recipients. DocuSign's
conditionalParentLabelonly works within a single recipient's tab set. Emits aCROSS_RECIPIENT_CONDITIONALfield issue; the condition is dropped. - Invalid or forbidden conditional parents: If the trigger field maps to a signature,
initial, dateSign, fullName, email, or title tab — DocuSign forbids these as conditional
parents and returns
CONDITIONALTAB_HAS_INVALID_PARENT(400). The compose pipeline strips these conditions in a post-processing pass and emits anINVALID_PARENT_TABfield issue. - Multi-predicate conditions: Adobe Sign supports ANY/ALL of multiple predicates.
DocuSign only supports a single parent condition per tab. Only the first EQUALS
predicate is mapped; complex conditions require manual rework.
Emits a
MULTI_PREDICATEfield issue. - Unsupported operators: NOT_EQUALS, GT, LT etc. have no DocuSign equivalent.
The condition is dropped. Emits an
UNSUPPORTED_OPERATORfield issue. - DocuSign formula fields: No Adobe Sign equivalent — flag for manual rewrite.
- Advanced field validation: Adobe regex/custom script validation is not mapped; best-effort via standard DocuSign validation types only.
- Radio group flattening: Adobe radios with
radioGroupare merged into a single DocuSignradioGroupTabsentry with per-location radio button coordinates. - Stamp tab account feature:
stampTabsrequires the stamp/hanko feature to be enabled on the DocuSign account. Verify before migrating templates that contain Adobe Sign STAMP fields. Emits aPARTIAL_FIELD_TYPEfield issue. - FILE_CHOOSER → signerAttachmentTabs: Docusign attachment tabs behave differently
from Adobe file upload fields (different UX, no file type restrictions).
Emits a
PARTIAL_FIELD_TYPEfield issue recommending manual review.
Field Issue Codes
All dropped or approximated features are surfaced as structured FieldIssue objects
alongside human-readable warning strings. See src/models/field_issue.py for the full
list. The UI groups these by code in collapsed sections within migration result rows,
history rows, and the template detail Issues tab.