Advanced User Guide
Page Content
- 1 Customization of eSignAnyWhere
- 2 Customization – Viewer Policy
- 3 Email Templating
- 4 Detailed callbacks on specific events
- 5 Reading Tasks
- 6 Audit Trail XML Structure
- 7 Bulk Envelopes
- 8 SAML Support
- 9 How to configure OAuth2 Authentication
- 10 Advanced Document Tags
- 11 P7M Signers
- 12 Automatic Remote Signatures
- 13 A-Trust
- 14 BankID
- 15 Generic Signing Plugin
- 16 Hyperlinks
Customization of eSignAnyWhere
This advanced feature is for customizing the eSignAnyWhere Viewer for the signers. You can change the colors and logo to align them to your CI and set eSAW Viewer behavior. Therefore you have to upload a ZIP-Archive with the new design settings. You can download a design template and change it. Moreover you are able to set a redirect URL when a document is finished.
You can find the the configuration for the customization of eSignAnyWhere in your organization settings in the section “Design of the document viewer for recipients”
The next screenshot shows these configurations:
If the feature is available for your organization, you can:
- set a redirect URL for finished documents
- upload a design
- reset to default design
- download a design template
- download current design
The Customisation.zip file contains:
- variables.xml: contains the style configuration of eSignAnyWhere. The comments in the file will help you to modify it.
- global_variables.xml: contains settings for the eSAW Viewer
- Note: In the global_variables.xml you can find the variable ContentSecurityPolicy. This variable allows you to integrate the viewer in an IFrame. Just enter the page URL in the “value” area on which you want to integrate the viewer. In addition to the possibility of the customization zip there are additional configurations for further scenarios available via API; and via _global.xml for on-premise. These are only required in exceptional cases or for special integration scenarios. Example: WhitelistedPostMessageClients
- files/
In the files you can find the following:
- logo_topbar
- logo_loading
- Localizations.template.custom
- Here you can customize localizations for a specific eSAW organization
- You can create your own Localizations.*.custom.json files, modify the elements which should be customized and add the file to the customization package
- custom.css
- Here you can customize the layout for a specific eSAW organization
- You can adapt the layout of the SAW Viewer
If you have modified the files just put them in an archive and upload via UI. You can use svg instead of png, gif or jpg.
Example: Change Default Color and Logo
Open variables.xml and look for the following lines of code to change the colors of for example the page navigation background.
Replace the following line:
<variable name="lighterGrayColor" value="#{[color:#d3d0d0]}#" comment=" default: #d3d0d0 used as thumbnail background, page navigation background, disabled form fields, menu button hover effects " category=""/>
With this one:
<variable name="lighterGrayColor" value="#{[color:#8b8989]}#" comment=" default: #d3d0d0 used as thumbnail background, page navigation background, disabled form fields, menu button hover effects " category="" />
After the page navigation background color we are now changing the document background color. Therefor, search for the following line and change it to the lines below:
Replace the following line:
<variable name="lightestGrayColor" value="#{[color:#ebeaea]}#" comment=" default: #ebeaea mainly used for the document background and menu backgrounds " category=""/>
With this one:
<variable name="lightestGrayColor" value="#{[color:#EEE9E9]}#" comment=" default: #ebeaea mainly used for the document background and menu backgrounds " category="" />
After the document background color we are now changing the top page navigation. Therefore, search for the following line and change it to the line below.
Replace the following line:
<variable name="defaultColor" value="#{[color:#661864]}#" comment=" default: #661864 affects the cancel button border, active page navigation bar items, top small bar, focused element in the document, upload progress bars, finished message background color, active page border, active thumbnail border, icons and headers in dialogs, batch signing progressbar foreground, SignOnPhone background color " category="" />
With this one:
<variable name="defaultColor" value="#{[color:#000088]}#" comment=" default: #661864 affects the cancel button border, active page navigation bar items, top small bar, focused element in the document, upload progress bars, finished message background color, active page border, active thumbnail border, icons and headers in dialogs, batch signing progressbar foreground, SignOnPhone background color " category="" />
After this configurations the viewer should look like the following:
For changing the Logo you have to put your Logo in the subfolder /files. Then you have to change the variables.xml to set the new files (e.g. my-logo-large.png and my-logo-small.png).
<variable name="logoCollapsedUrl" value="#{[image:my-logo-small.png]}#" ... /> <variable name="logoExpandedUrl" value="#{[image:my-logo-large.png]}#" ... />
Save the files and pack it in a zip-file (e.g. “my-style.zip”), with same structure as the downloaded Customization.zip, and upload it as new design in your organization settings.
There are to places in the XML where you can define the logo:
- For the loading screen
- and for the top bar
Loading screen | Top bar |
---|---|
|
|
Customization – Viewer Policy
You can also set your default viewer policies. So you can in addition to the visual appearance also set the UI elements. For details about the policy parameter check the SignAnyWhere Viewer Customization page.
Email Templating
The Email Templating allows you to adopt the email, sent by eSignAnyWhere. A default template and default notifications are present for every organization and can always be restored to default. For each language set in “Localization”, a separate template and notification can be set. This allows you to set up languages, which are not directly supported by eSignAnyWhere and send the notifications in the, by you translated, language to the recipient.
Note: If a recipient has an eSignAnyWhere user account (on the same instance), the user will receive the mails in his/her prefered language. Sample: the recipient has a eSAW language set in German and you send her/him an envelope in Italian, he/she will receive the notification in German (his prefered language).
There are three types of templates:
- email master template “TEMPLATE”
- reminder template for reminder notifications “ReminderText”, which is used a prefix for the subject of the mail (e.g. “Reminder: “)
- email notifications, the text/wording/layout used for a certain type of notification and is placed within the master template
The email master template is called “TEMPLATE” and defines the basic layout of the notifications for the given language. You can define, for example a header, logo, footer, etc. The {{Content}}
element is a placeholder to be replaced by the email notification template (e.g. “Sign”) to place the notification information and text.
You can select the following placeholders, but please note that not all placeholders are available in all notifications! The next section shows you all general available placeholders:
Placeholder | |
#ContactUrl# |
|
#Delegatee# |
|
#DelegationMessage# |
|
#Delegator# |
|
#DelegatorName# |
|
#EnvelopeList# |
|
#EnvelopeMessage# |
|
#EnvelopeName# |
|
#ExpirationDate# |
|
#InviterName# |
|
#LicenseInfo# |
|
#NumberOfRecipientsWhoSigned# |
|
#OrganizationName# |
|
#Password# |
|
#PersonalMessage# |
|
#RecipientEmail# |
|
#RecipientFirstName# |
|
#RecipientLastName# |
|
#RecipientList# |
|
#SenderFirstName# |
|
#SenderLastName# |
|
#SupportUrl# |
|
#TotalNumberOfRecipients# |
|
#Url# |
|
#UrlAndroid# |
|
#UrlDownload# |
|
#UrlExpiration# |
|
#UrlIos# |
|
#UrlWindows# |
|
#UserFirstName# |
|
#UserLastName# |
|
#UserList# |
|
#{{Content}}# |
Simple Example
Messages exist of the placeholders (see above) and basic HTML tags. Therefore a HTML knowledge for modifing the messages is useful (<br />
, <p>...</p>
, <strong>...</strong>
, <h3>...</h3>
).
<h4>The envelope "#EnvelopeName#" has been signed by the following recipients:</h4> <p>#RecipientList#</p>
Figure | Description |
---|---|
|
|
Figure | Description |
---|---|
|
|
Restore Default Template
If you click on restore the current selected template will be restored to the system’s default.
Detailed callbacks on specific events
You can define per envelope the callbacks for specific events. For example, if a workstep was created, a workstep was opened or a signature was applied. Please note, these events typically are not required for the most use cases and you should have a look at the eSAW Callbacks and eSAW Status callbacks: API Reference and Callbacks
You can forward all eventtyps to your callback url or use a
- blacklist: all events, except the events in the blacklist, are fired
- whitelist: only the events in the whitelist are fired
- empty blacklist/whitelist: all events are fired
Do not use blacklist and withlist at the same time! If you only want to use the event callbacks, use an empty envelope callback in the configuration (<callbackUrl />
)
The following placeholders are defined:
- ##WorkstepId## – workstep of current action
- ##EventType## – type of event (see list of types below)
- ##Source## – internal (eSAW) or external (Viewer)
- ##Time## – time when the action occurred
- ##Description## – textual description of the event
- ##RecipientEmail## – emailadress of current recipient
- ##EnvelopeId## – current envelope id
- ##RecipientOrder## – index of current recipient
Definition without black-/whitelist:
<envelope> ... <workstepEventCallback> <url>http://www.mycallback.at?envelopeId=##EnvelopeId##&recipientEmail=##RecipientEmail##&recipientOrder=##RecipientOrder##</url> </workstepEventCallback> <steps> ... </steps> </envelope>
Blacklist-Definition
<workstepEventCallback> <url>http://www.mycallback.at?envelopeId=##EnvelopeId##&recipientEmail=##RecipientEmail##&recipientOrder=##RecipientOrder##</url> <blacklist> <event>SomeEventName</event> <event>SomeDifferentEventName</event> </blacklist> </workstepEventCallback>
Whitelist-Definition
<workstepEventCallback> <url>http://www.mycallback.at?envelopeId=##EnvelopeId##&recipientEmail=##RecipientEmail##&recipientOrder=##RecipientOrder##</url> <whitelist> <event>SomeEventName</event> <event>SomeDifferentEventName</event> </whitelist> </workstepEventCallback>
Please note:These events are fired by the Workstep Controller (internal component) and are fired before the data in eSAW is complete updated (some postprocessing is required). Therefore this event callbacks are used only in rare integrations. Please have a look at the eSAW Callbacks and Status Callbacks in the API Reference.
Available Event Types
ConfirmTransactionCode – A transaction code was sent
DefaultEventType – Not specially defined event type
AgreementAccepted – The user accepted the agreement
AgreementRejected – The user rejected the agreement
RequestPrepareAuthenticationInformationSuccess – The request for additional authentication infos was requested
PrepareAuthenticationSuccess – The prepare authentication process succeeded
AuthenticationFailed – The user failed to authenticate
AuthenticationRejected – The user rejected the authentication process
AuthenticationSuccess – The user succeeded to authenticate
ReAuthenticationFailed – The reauthentication process failed
AuditTrailRequested – The audittrail was requested
AuditTrailXmlRequested – The audittrail XML was requested
CalledPage – The viewer site was requested
WhoIsInformation
DocumentDownloaded – The document download was requested
FlattenedDocumentDownloaded – The flattened document download was requested
AddedAnnotation – An annotation was added
AddedAttachment – An attachment was added
AppendedDocument – A document was appended
FormsFilled – A form field was filled
ConfirmReading – A reading task was completed
PageViewChanged – The user scrolled
SendTransactionCode – This event is raised, when a TransactionCode for a signature with type TransactionCode* has been sent using the IdentityServer or the TransactionCodeSenderPlugin
PrepareSignWorkstepDocument – A signature is prepared for signing
SignWorkstepDocument – Try to sign a signature
UndoAction – An action was undone
WorkstepCreated – A workstep was created
WorkstepFinished – A workstep was finished
WorkstepRejected – A workstep was rejected
DisablePolicyAndValidityChecks
EnablePolicyAndValidityChecks
AppendFileToWorkstep – A file was appended to the workstep
AppendTasksToWorkstep – A task was added to the workstep
SetOptionalDocumentState – A optional document became either active or inactive
StartBatch – A batch signing process started
EndBatch – A batch signing process ended
PreparePayloadForBatch – The payload is getting prepared for batch signing
Reading Tasks
With the reading task a recipient must confirm reading the document to have the evidence that he/she was reading it.
Generally there are 3 basic ways concerning the range of the reading task:
- Reading task for one page
- Reading task for all pages
- Reading task for a section
The following steps guide you through the process of creating a reading task in the document:
- Upload a document
- Send the document
Upload a document
Here you can download a sample document for the upload: Sample
Send the document
For sending a document the workstep configuration is needed. Within the workstep configuration you can place the reading task.
Reading task for one page
Note: The reading task must be the first task and it must be required!)
Add the following lines of code within the workstep configuration:
"Tasks": [ { "PositionPage": 1, "AllPages": false, "AllDocuments": false, "IsRequired": true, "Id": "847a3d4a-da2c-46f4-8c8c-a9edaa06c29b", "DisplayName": "your text for this task", "DocRefNumber": 1, "DiscriminatorType": "ReadingTask" }, { "PositionPage": 1, "Position": { "PositionX": 80.22857, "PositionY": 158.8629 }, "Size": { "Height": 68.57143, "Width": 171.4286 }, "AllowedSignatureTypes": [], "UseTimestamp": false, "IsRequired": true, "Id": "93cce567-ae5c-4e98-ac99-9f56ac034250", "DisplayName": "SignField 1", "DocRefNumber": 1, "DiscriminatorType": "Signature" } ]
<ReadingTaskInfo positionUnit="PdfUnits" positionReferenceCorner="Upper_Left"> <ReadingTask id="847a3d4a-da2c-46f4-8c8c-a9edaa06c29b" pageNumber="1" DocRefNumber="1" AllPages="0" AllDocuments="0"> </ReadingTask> </ReadingTaskInfo>
After adding the reading task within the workstep configuration you can send the document. The result should look like the following:
As you can see, just the first page needs a reading confirmation.
Reading task for all pages
The following lines of code shows you the reading task configuration for all pages:
"Tasks": [ { "PositionPage": 1, "AllPages": false, "AllDocuments": true, "Position": { "PositionX": 50.0, "PositionY": 100.0 }, "Size": { "Height": 40.0, "Width": 400.0 }, "IsRequired": true, "Id": "847a3d4a-da2c-46f4-8c8c-a9edaa06c29b", "DisplayName": "your text for this task", "DocRefNumber": 1, "DiscriminatorType": "ReadingTask" }, { "PositionPage": 1, "Position": { "PositionX": 80.22857, "PositionY": 158.8629 }, "Size": { "Height": 68.57143, "Width": 171.4286 }, "AllowedSignatureTypes": [], "UseTimestamp": false, "IsRequired": true, "Id": "93cce567-ae5c-4e98-ac99-9f56ac034250", "DisplayName": "SignField 1", "DocRefNumber": 1, "DiscriminatorType": "Signature" } ]
<ReadingTaskInfo positionUnit="PdfUnits" positionReferenceCorner="Upper_Left"> <ReadingTask id="847a3d4a-da2c-46f4-8c8c-a9edaa06c29b" pageNumber="1" DocRefNumber="1" AllPages="0" AllDocuments="1"> </ReadingTask> </ReadingTaskInfo>
"Tasks": [ { "PositionPage": 1, "AllPages": false, "AllDocuments": false, "Position": { "PositionX": 50.0, "PositionY": 100.0 }, "Size": { "Height": 40.0, "Width": 400.0 }, "IsRequired": true, "Id": "847a3d4a-da2c-46f4-8c8c-a9edaa06c29b", "DisplayName": "your text for this task", "DocRefNumber": 1, "DiscriminatorType": "ReadingTask" }, { "PositionPage": 1, "Position": { "PositionX": 80.22857, "PositionY": 158.8629 }, "Size": { "Height": 68.57143, "Width": 171.4286 }, "AllowedSignatureTypes": [], "UseTimestamp": false, "IsRequired": true, "Id": "93cce567-ae5c-4e98-ac99-9f56ac034250", "DisplayName": "SignField 1", "DocRefNumber": 1, "DiscriminatorType": "Signature" } ]
<ReadingTaskInfo positionUnit="PdfUnits" positionReferenceCorner="Upper_Left"> <ReadingTask id="847a3d4a-da2c-46f4-8c8c-a9edaa06c29b" pageNumber="1" DocRefNumber="1" AllPages="0" AllDocuments="0"> <Position positionX="50" positionY="100" width="400" height="40" /> </ReadingTask> </ReadingTaskInfo>
In the next section you can find a complete workstep configuration with one signature field, one recipient and a reading confirmation for a section:
{ "SspFileIds": [ "##FILEID##" ], "SendEnvelopeDescription": { "Name": "eSignAnyWhere Tutorial", "EmailSubject": "Document of eSignAnyWhere Tutorial", "EmailBody": "Dear #RecipientFirstName#! Please sign this tutorial document.", "DisplayedEmailSender": "", "EnableReminders": true, "FirstReminderDayAmount": 1, "RecurrentReminderDayAmount": 1, "BeforeExpirationDayAmount": 1, "DaysUntilExpire": 2, "CallbackUrl": "", "StatusUpdateCallbackUrl": "", "LockFormFieldsAtEnvelopeFinish": true, "Steps": [ { "OrderIndex": 1, "Recipients": [ { "Email": "##EMAIL##", "FirstName": "##NAME##", "LastName": "##NAME##", "LanguageCode": "en", "EmailBodyExtra": "", "DisableEmail": false, "AddAndroidAppLink": false, "AddIosAppLink": false, "AddWindowsAppLink": false, "AllowDelegation": false, "AllowAccessFinishedWorkstep": false, "SkipExternalDataValidation": false, "AuthenticationMethods": [] } ], "EmailBodyExtra": "", "RecipientType": "Signer", "WorkstepConfiguration": { "WorkstepLabel": "", "SmallTextZoomFactorPercent": 100, "FinishAction": { "ServerActions": [], "ClientActions": [] }, "ReceiverInformation": { "UserInformation": { "FirstName": "##NAME##", "LastName": "##NAME##", "EMail": "##EMAIL##" }, "TransactionCodePushPluginData": [] }, "SenderInformation": { "UserInformation": { "FirstName": "##NAME##", "LastName": "##NAME##", "EMail": "##EMAIL##" } }, "TransactionCodeConfigurations": [ { } ], "SignatureConfigurations": [], "ViewerPreferences": {}, "Policy": { "GeneralPolicies": { "AllowSaveDocument": true, "AllowSaveAuditTrail": true, "AllowRotatingPages": true, "AllowFinishWorkstep": true, "AllowUndoLastAction": true }, "WorkstepTasks": { "PictureAnnotationMinResolution": 0, "PictureAnnotationMaxResolution": 0, "PictureAnnotationColorDepth": "Color16M", "SequenceMode": "SequenceOnlyRequiredTasks", "PositionUnits": "PdfUnits", "ReferenceCorner": "Upper_Left", "Tasks": [ { "PositionPage": 1, "AllPages": false, "AllDocuments": false, "Position": { "PositionX": 50.0, "PositionY": 100.0 }, "Size": { "Height": 40.0, "Width": 400.0 }, "IsRequired": true, "Id": "847a3d4a-da2c-46f4-8c8c-a9edaa06c29b", "DisplayName": "your text for this task", "DocRefNumber": 1, "DiscriminatorType": "ReadingTask" }, { "PositionPage": 1, "Position": { "PositionX": 80.22857, "PositionY": 158.8629 }, "Size": { "Height": 68.57143, "Width": 171.4286 }, "AdditionalParameters": [ { "Key": "enabled", "Value": "1" }, { "Key": "completed", "Value": "0" }, { "Key": "sigType", "Value": "Picture" }, { "Key": "positioning", "Value": "onPage" }, { "Key": "allowedCapturingMethods", "Value": "Click2Sign" } ], "AllowedSignatureTypes": [], "UseTimestamp": false, "IsRequired": true, "Id": "93cce567-ae5c-4e98-ac99-9f56ac034250", "DisplayName": "SignField 1", "DocRefNumber": 1, "DiscriminatorType": "Signature" } ] } } }, "DocumentOptions": [ { "DocumentReference": "1", "IsHidden": false } ], "UseDefaultAgreements": true }, { "OrderIndex": 2, "Recipients": [ { "Email": "##EMAIL##", "FirstName": "Charly", "LastName": "Randomname", "LanguageCode": "en", "EmailBodyExtra": "", "DisableEmail": false, "AddAndroidAppLink": false, "AddIosAppLink": false, "AddWindowsAppLink": false, "AllowDelegation": false, "AllowAccessFinishedWorkstep": false, "SkipExternalDataValidation": false, "AuthenticationMethods": [] } ], "EmailBodyExtra": "", "RecipientType": "Cc", "DocumentOptions": [ { "DocumentReference": "1", "IsHidden": false } ], "UseDefaultAgreements": true } ], "AddFormFields": { "Forms": {} }, "OverrideFormFieldValues": { "Forms": {} }, "AttachSignedDocumentsToEnvelopeLog": false } }
<envelope> <name>eSignAnyWhere Tutorial</name> <eMailSubject>Document of eSignAnyWhere Tutorial</eMailSubject> <eMailBody>Dear #RecipientFirstName#! Please sign this tutorial document.</eMailBody> <enableReminders>True</enableReminders> <firstReminderDayAmount>1</firstReminderDayAmount> <recurrentReminderDayAmount>1</recurrentReminderDayAmount> <beforeExpirationReminderDayAmount>1</beforeExpirationReminderDayAmount> <daysUntilExpire>2</daysUntilExpire> <!-- callback to your backend system on a completed envelope <callbackUrl>http://172.16.17.78:57550/default.aspx?EnvelopeId=##EnvelopeId##&myParamForMe=1234</callbackUrl> --> <callbackUrl /> <steps> <step> <emailBodyExtra /> <orderIndex>1</orderIndex> <recipientType>Signer</recipientType> <recipients> <recipient> <languageCode>en</languageCode> <eMail>##EMAIL##</eMail> <firstName>Alice</firstName> <lastName>Somename</lastName> </recipient> </recipients> <workstepConfiguration> <WorkstepLabel /> <SmallTextZoomFactorPercent>100</SmallTextZoomFactorPercent> <WorkstepTimeToLiveInMinutes>11520</WorkstepTimeToLiveInMinutes> <FinishAction /> <signatureTemplate> <version>1.2.0.2</version> <positionUnits>PdfUnits</positionUnits> <positionReferenceCorner>Lower_Left</positionReferenceCorner> <sig id="93cce567-ae5c-4e98-ac99-9f56ac034250"> <positionPage>1</positionPage> <DocRefNumber>1</DocRefNumber> <positionX>80.22857</positionX> <positionY>158.8629</positionY> <width>171.4286</width> <height>68.57143</height> <param name="enabled">1</param> <param name="completed">0</param> <param name="sigType">Picture</param> <param name="positioning">onPage</param> <param name="allowedCapturingMethods">Click2Sign</param> </sig> </signatureTemplate> <Policy version="1.1.0.0"> <GeneralPolicies> <AllowSaveDocument>1</AllowSaveDocument> <AllowSaveAuditTrail>1</AllowSaveAuditTrail> </GeneralPolicies> <WorkstepTasks SequenceMode="SequenceOnlyRequiredTasks" originalSequenceMode="SequenceOnlyRequiredTasks"> <Task enabled="1" completed="0" required="1" id="847a3d4a-da2c-46f4-8c8c-a9edaa06c29b" displayName="your text for this task" DocRefNumber="1" type="ConfirmReading" /> <Task enabled="1" completed="0" required="1" id="93cce567-ae5c-4e98-ac99-9f56ac034250" displayName="SignField 1" DocRefNumber="1" type="SignField" internalAllConcernedDocRefNumbersList="1" allRequiredFieldsFilledOnWorkstepCreation="0" /> </WorkstepTasks> </Policy> <TransactionCodeConfigurations> <TransactionCodeConfiguration trConfId=""> <Message>Please sign the document with the transactionId {tId} with the code: {Token}</Message> <hashAlgorithmIdentifier>Sha256</hashAlgorithmIdentifier> </TransactionCodeConfiguration> <TransactionCodeConfiguration trConfId="Trans1"> <Message>Please accept the transactionId {tId} with the code: {Token}</Message> <hashAlgorithmIdentifier>Sha256</hashAlgorithmIdentifier> </TransactionCodeConfiguration> </TransactionCodeConfigurations> <ReadingTaskInfo positionUnit="PdfUnits" positionReferenceCorner="Upper_Left"> <ReadingTask id="847a3d4a-da2c-46f4-8c8c-a9edaa06c29b" pageNumber="1" DocRefNumber="1" AllPages="0" AllDocuments="0"> <Position positionX="50" positionY="100" width="400" height="40" /> </ReadingTask> </ReadingTaskInfo> </workstepConfiguration> </step> <step> <emailBodyExtra /> <orderIndex>2</orderIndex> <recipientType>CC</recipientType> <recipients> <recipient> <languageCode>en</languageCode> <eMail>##EMAIL##</eMail> <firstName>Charly</firstName> <lastName>Randomname</lastName> </recipient> </recipients> </step> </steps> </envelope>
Audit Trail XML Structure
Structure
The following sample shows the structure of the audit trail xml:
<?xml version="1.0" encoding="utf-8"?> <AuditTrail Version="1" CreationDate="2018-10-01T13:07:21.2795797Z"> <EnvelopeId>[Envelope ID]</EnvelopeId> <EnvelopeName>[Envelope Name]</EnvelopeName> <EnvelopeStatus>[Envelope Status - possible values: Completed]</EnvelopeStatus> <!-- note: at the moment, the Audit Trail is only generated for completed envelopes --> <EnvelopeCreationDate>[Create Date, e.g. 2018-10-01T13:05:10.927Z]</EnvelopeCreationDate> <EnvelopeSendDate>[Send Date, e.g. 2018-10-01T13:06:21.13Z]</EnvelopeSendDate> <EnvelopeExpirationDate>[Expiration Date, e.g. 2018-10-29T13:06:21.13Z]</EnvelopeExpirationDate> <Sender> <FirstName>[Sender First Name]</FirstName> <LastName>[Sender Last Name]</LastName> <EMail>[Sender E-Mail]</EMail> </Sender> <ElectronicDisclosures> <!-- list of "Disclosure" elements (see below) --> </ElectronicDisclosures> <Recipients> <!-- list of "Recipient" elements (see below) --> </Recipients> <Notifications> <!-- list of "Notification" elements (see below) --> </Notifications> <SendFinishedDocuments>[true|false]</SendFinishedDocuments> <PreventMailSending>[true|false]</PreventMailSending> </AuditTrail>
Electronic Disclosures
<Disclosure Culture="[language ISO code, e.g. de, de-AT]"> <Subject>[Message Subject]</Subject> <Text>[Message Body]</Text> </Disclosure>
Recipients
General
<Recipient Id="[Recipient ID]" OrderIndex="[Recipient OrderIndex]" EMail="[Recipient E-Mail]" Deleted="[true|false]"> <FirstName>[Recipient FirstName]</FirstName> <SealingProfileName /> <LastName>[Recipient LastName]</LastName> <Type>[Recipient Type, possible values see below]</Type> <FinishDate>[Finish Date, e.g. 2018-10-01T14:01:32.6354943Z]</FinishDate> <Status>[Recipient Status, possible values see below]</Status> <RejectReason>[Reject/Delegate reason]</RejectReason> <WorkstepId>[Workstep ID]</WorkstepId> <History> <!-- list of "Entry" elements (see below) - info about previous changes of this recipients --> </History> <AuthenticationMethods> <!-- list of "AuthenticationMethod" elements (see below) --> </AuthenticationMethods> <MailSubject>[Mail Message Subject]<MailSubject> <MailContent>[Mail Message Content]<MailContent> <DelegatorId>[OPTIONAL: Recipient ID of the delegator recipient]</DelegatorId> <DelegateeId>[OPTIONAL: Recipient ID of the delegatee recipient]</DelegateeId> <WorkStepInformation><!-- OPTIONAL: Workstep Information XML - details see below --></WorkStepInformation> <auditTrail><!-- OPTIONAL: Workstep Audit Trail XML - details see below --></auditTrail> <PreventMailSending>[true|false]</PreventMailSending> </Recipient>
Values for Type:
- Signer
- CC
- Acknowledge
- Pkcs7Signer
- Automatic
Values for Status
- NotSigned
- Signed
- Rejected
- Delegated
- DelegatedAutomated
History
<Entry ValidFrom="[When was this recipient setting valid? e.g. 2018-10-01T14:00:41.54Z]" ValidTo="[When was this recipient setting valid? e.g. 9999-12-31T23:59:59.9999999Z]"> <FirstName>[FirstName]</FirstName> <LastName>[LastName]</LastName> <EMail>[E-Mail]</EMail> <Modifications> <!-- List of "Modification" elements --> <Modification>[Modification]</Modification> </Modifications> </Entry>
Values for Modification:
- RenameEmail
- RenameRecipientName
- RestartEnvelope
- RenameRecipientFirstName
- RenameRecipientLastName
- RenameRecipientMessage
- ChangeAuthenticationSms
- ChangeAuthenticationLive
- ChangeAuthenticationPin
- AddedAuthenticationSms
- AddedAuthenticationLive
- AddedAuthenticationPin
- RemovedAuthenticationSms
- RemovedAuthenticationLive
- RemovedAuthenticationPin
- ChangeRecipientCulture
- ChangedRecipientDisposableCertificateData
- ChangedRecipientRemoteSignatureData
- ChangeAuthenticationOAuth
- AddedAuthenticationOAuth
- RemovedAuthenticationOAuth
- RecipientDeleted
- ChangeAuthenticationSaml
- AddedAuthenticationSaml
- RemovedAuthenticationSaml
- ChangedRecipientOtpSignatureData
- ChangedRecipientPkcs7SignerData
- ChangedRecipientSwissComCertificateData
Authentication
<AuthenticationMethod>[Authentication Method]</AuthenticationMethod>
Values for AuthenticationMethod:
- Pin
- Sms
- WindowsLive
- CustomOAuthProvider
- CustomSamlProvider
Notifications
<Notification Type="[Notification Type - possible values see below]" Added="[Added Date, e.g. 2018-10-01T14:01:32.6354943Z]" Sent="[Added Date, e.g. 2018-10-01T14:01:32.6354943Z]" Recipient="[OPTIONAL - Recipient ID"> <ExtraInformation /> </Notification>
Values for Type
- SendSignNotificationToRecipient
- SendAcknowledgeNotificationToRecipient
- RecipientChanged
- EnvelopeFinished
- SendCcDocs
- SendCcDocsWithDownloadLink
- SendCcDocsNoLink
- SendCcDocsNoLinkWithDownloadLink
- EnvelopeParallelSigned
- DelegationAutomatic
- DelegationManual
- SendSignNotificationToRecipientWithDelegation,
- AutomatedDelegationNotification
Bulk Envelopes
1. Design the Workflow
Figure | Description |
---|---|
|
|
New buttons “Add Bulk” and “Bulk CSV Template” are available. You can add one bulk per envelope and you are defining the bulk recipients via CSV file. The “Bulk CSV Template” generates your desired bulk recipient configuration. So you are able to define Authentication or Information for Remote or Disposable Certificates in the CSV. Please note that you have a maximum of 1000 recipients per bulk.
Figure | Description |
---|---|
|
|
The Bulk Recipient in the Recipient List.
You can see the uploaded recipient list and the number of recipients found in the uploaded CSV file.
2. Designer
Figure | Description |
---|---|
|
|
In the designer the bulk recipients behave like a normal recipient. You can place and define its signature fields, form fields or predefined fields.
3. Manage Bulk Envelopes
The bulk envelopes are listed normal in the document overview with special bulk envelope features. The statistics are added (number of completed, rejected, … envelopes of the bulk). Moreover you still can control each unique workflow.
Bulk Envelopes API
Sending a bulk is basically creating multiple independent envelopes, which are linked together by an identifiert (bulk id). The API allows accessing the bulk and its envelopes. Please note that only one bulk per envelope is allowed.
Sending a bulk via SendEnvelopes or CreateDraft is simple.
<envelope> ... <steps> ... <step> <!-- a bulk step is a step with multiple recipients --> ... <recipients> <recipient> ... </recipient> <recipient> ... </recipient> </recipients> </step> ... </steps> ... </envelope>
Result of sending a Bulk is different of sending an envelope. You will receive a bulk identifier in addition.
<apiResult version="0.0.0.0"> <baseResult>ok</baseResult> <okInfo> <bulk id="dc4cdaa9-c204-470f-986d-94786ff159f7"> <envelopeId eMail="mail1@eflowauto.test">2daf11a0-6802-474b-bb48-df4b199b026a</envelopeId> <envelopeId eMail="mail2@eflowauto.test">18c7245f-2a78-45b8-9262-3ffe05a62fd1</envelopeId> </bulk> </okInfo> </apiResult>
The Callbacks got an additional bulk parameter to provide the bulk id:
http://www.mycallback.at?envelope=##EnvelopeId##&bulk=##BulkId##&action=##Action##
Finding Envelopes (v1) of Bulk: per default only bulk parent are returned. If you want to get the children of a bulk use the bulk parameter:
<findEnvelopesDescriptor> <status>Active</status> <bulk>dc4cdaa9-c204-470f-986d-94786ff159f7</bulk> <!-- new filter parameter --> </findEnvelopesDescriptor>
The FindEnvelopes_v2 will return in the Extended version also details about the bulk id.
GetEnvelopesById also returns the bulk id. If you are calling with the bulk id, a list of all bulk recipients and its envelopes ids is returned.
GetEnvelopesById with a Bulk ID:
<apiResult version="0.0.0.0"> <baseResult>ok</baseResult> <okInfo> <envelopeStatus> ... <id>5b69258c-2327-43ba-80ad-53b4b6a2f3eb</id> <bulk>5b69258c-2327-43ba-80ad-53b4b6a2f3eb</bulk> ... <bulkRecipients> <bulkRecipient eMail="test1@eflowauto.test" id="e9b53acc-9378-4308-99be-0fca92465dac"> ... </bulkRecipient> <bulkRecipient eMail="test2@eflowauto.test" id="5701da00-2b8c-4e2a-8698-a66c43c3e4c7"> ... </bulkRecipient> </bulkRecipients> </envelopeStatus> </okInfo> </apiResult>
GetEnvelopeId with an envelope id, which is part of a bulk:
<apiResult version="0.0.0.0"> <baseResult>ok</baseResult> <okInfo> <envelopeStatus> ... <id>e9b53acc-9378-4308-99be-0fca92465dac</id> <bulk>5b69258c-2327-43ba-80ad-53b4b6a2f3eb</bulk> <!-- bulk id is set - see find result above --> ... <bulkRecipients> <bulkRecipient eMail="" id=""> ... </bulkRecipient> </bulkRecipients> </envelopeStatus> </okInfo> </apiResult>
Complete_Bulk_Configuration
<envelope> <name>test</name> <eMailSubject>Please sign the enclosed envelope</eMailSubject> <eMailBody>Dear #RecipientFirstName# #RecipientLastName# #PersonalMessage# Please sign the envelope #EnvelopeName# Envelope will expire at #ExpirationDate#</eMailBody> <enableReminders>true</enableReminders> <firstReminderDayAmount>5</firstReminderDayAmount> <recurrentReminderDayAmount>3</recurrentReminderDayAmount> <beforeExpirationReminderDayAmount>3</beforeExpirationReminderDayAmount> <daysUntilExpire>28</daysUntilExpire> <callbackUrl></callbackUrl> <statusUpdateCallbackUrl></statusUpdateCallbackUrl> <displayedEmailSender></displayedEmailSender> <steps> <step> <emailBodyExtra></emailBodyExtra> <orderIndex>1</orderIndex> <recipientType>Signer</recipientType> <useDefaultAgreements>true</useDefaultAgreements> <documentOptions> <documentOption docRef="1"> <isHidden>false</isHidden> </documentOption> </documentOptions> <workstepConfiguration skipThirdPartyChecks="0"> <WorkstepLabel>test</WorkstepLabel> <SmallTextZoomFactorPercent>100</SmallTextZoomFactorPercent> <WorkstepTimeToLiveInMinutes>43210</WorkstepTimeToLiveInMinutes> <FinishAction /> <ViewerPreferences> <SendVisibleArea allowedDomain="*">0</SendVisibleArea> <FinishWorkstepOnOpen>0</FinishWorkstepOnOpen> </ViewerPreferences> <Policy version="1.1.0.0"> <AdhocPolicies> <AllowModificationsAfterSignature>1</AllowModificationsAfterSignature> </AdhocPolicies> <GeneralPolicies> <AllowAdhocFreeHandAnnotations>0</AllowAdhocFreeHandAnnotations> <AllowAdhocPdfAttachments>0</AllowAdhocPdfAttachments> <AllowAdhocPdfPageAppending>0</AllowAdhocPdfPageAppending> <AllowAdhocPictureAnnotations>0</AllowAdhocPictureAnnotations> <AllowAdhocSignatures>0</AllowAdhocSignatures> <AllowAdhocStampings>0</AllowAdhocStampings> <AllowAdhocTypewriterAnnotations>0</AllowAdhocTypewriterAnnotations> <AllowEmailDocument>1</AllowEmailDocument> <AllowFinishWorkstep>1</AllowFinishWorkstep> <AllowPrintDocument>1</AllowPrintDocument> <AllowRejectWorkstep>1</AllowRejectWorkstep> <AllowSaveAuditTrail>1</AllowSaveAuditTrail> <AllowSaveDocument>1</AllowSaveDocument> <AllowUndoLastAction>1</AllowUndoLastAction> <AllowRotatingPages>0</AllowRotatingPages> <AllowRejectWorkstepDelegation>1</AllowRejectWorkstepDelegation> </GeneralPolicies> <WorkstepTasks originalSequenceMode="NoSequenceEnforced" SequenceMode="NoSequenceEnforced"> <Task type="SignField" DocRefNumber="1" id="1#XyzmoDuplicateIdSeperator#Signature_604830bb-2a50-14e3-196c-c63a3d35f3c3" internalCompleted="0" finishPercentage="0" completed="0" enabled="1" displayName="" required="1" /> </WorkstepTasks> </Policy> <TransactionCodeConfigurations> </TransactionCodeConfigurations> <receiverInformation> <userInformation> <firstName>##NAME##</firstName> <lastName>##NAME##</lastName> <eMail>##EMAIL##</eMail> </userInformation> <showNamirialDisposableDisclaimer>1</showNamirialDisposableDisclaimer> </receiverInformation> <senderInformation> <userInformation> <firstName>##NAME##</firstName> <lastName>##NAME##</lastName> <eMail>##EMAIL##</eMail> </userInformation> </senderInformation> <pdfForms isEditingAllowed="0" /> <TypewriterAnnotationTaskInfo /> <attachmentFields /> <signatureTemplate> <version>1.2.0.2</version> <positionReferenceCorner>Lower_Left</positionReferenceCorner> <positionUnits>PdfUnits</positionUnits> <sig id="1#XyzmoDuplicateIdSeperator#Signature_604830bb-2a50-14e3-196c-c63a3d35f3c3"> <TaskDisplayName /> <param name="enabled">1</param> <positionPage>1</positionPage> <positionX>67</positionX> <positionY>517.92</positionY> <width>190</width> <height>80</height> <param name="positioning">onPage</param> <param name="req">1</param> <param name="fd" /> <param name="fd_dateformat">dd-MM-yyyy HH:mm:ss</param> <param name="fd_timezone">datetimeutc</param> <DocRefNumber>1</DocRefNumber> <AllowedSignatureTypes> <sigType id="012d1d5a-8e0e-4bb8-9170-988cbe5297ab" type="Picture"> <allowedCapturingMethods>Click2Sign</allowedCapturingMethods> <StampImprintConfiguration> <DisplayExtraInformation>1</DisplayExtraInformation> <DisplayEmail>1</DisplayEmail> <DisplayIp>1</DisplayIp> <DisplayName>1</DisplayName> <DisplaySignatureDate>1</DisplaySignatureDate> <FontFamily>Times New Roman</FontFamily> <FontSize>11</FontSize> </StampImprintConfiguration> </sigType> </AllowedSignatureTypes> </sig> </signatureTemplate> <AuditingToolsConfiguration WriteAuditTrail="0"> <NotificationConfiguration /> </AuditingToolsConfiguration> <resourceUris> <delegationUri>https://demo.xyzmo.com//Resource/Delegate</delegationUri> </resourceUris> <LoggingMetaInformation> <envelopeId>2048815f-4399-4c15-870c-bb9fd2c8c3de</envelopeId> <envelopeRecipientId>a78f56ca-ff49-4c5f-8e3b-c3530916cfd0</envelopeRecipientId> </LoggingMetaInformation> </workstepConfiguration> <recipients> <recipient> <eMail>##EMAIL##</eMail> <emailBodyExtra></emailBodyExtra> <firstName>##NAME##</firstName> <lastName>##NAME##</lastName> <languageCode>en</languageCode> <disableEmail>false</disableEmail> <skipExternalDataValidation>false</skipExternalDataValidation> <addAndroidAppLink>false</addAndroidAppLink> <addIosAppLink>false</addIosAppLink> <addWindowsAppLink>false</addWindowsAppLink> <allowDelegation>true</allowDelegation> <authentications /> </recipient> <recipient> <eMail>##EMAIL##</eMail> <emailBodyExtra></emailBodyExtra> <firstName>##NAME##</firstName> <lastName>##NAME##</lastName> <languageCode>en</languageCode> <disableEmail>false</disableEmail> <skipExternalDataValidation>false</skipExternalDataValidation> <addAndroidAppLink>false</addAndroidAppLink> <addIosAppLink>false</addIosAppLink> <addWindowsAppLink>false</addWindowsAppLink> <allowDelegation>true</allowDelegation> <authentications /> </recipient> </recipients> </step> <step> <emailBodyExtra></emailBodyExtra> <orderIndex>2</orderIndex> <recipientType>Cc</recipientType> <useDefaultAgreements>false</useDefaultAgreements> <recipients> <recipient> <eMail>##EMAIL##</eMail> <emailBodyExtra></emailBodyExtra> <firstName>##NAME##</firstName> <lastName>##NAME##</lastName> <languageCode>en</languageCode> <disableEmail>false</disableEmail> <skipExternalDataValidation>false</skipExternalDataValidation> <addAndroidAppLink>false</addAndroidAppLink> <addIosAppLink>false</addIosAppLink> <addWindowsAppLink>false</addWindowsAppLink> <allowDelegation>false</allowDelegation> <authentications /> </recipient> </recipients> </step> <step> <emailBodyExtra></emailBodyExtra> <orderIndex>3</orderIndex> <recipientType>Cc</recipientType> <useDefaultAgreements>false</useDefaultAgreements> <recipients> <recipient> <eMail>##EMAIL##</eMail> <emailBodyExtra></emailBodyExtra> <firstName>##NAME##</firstName> <lastName>##NAME##</lastName> <languageCode>en</languageCode> <disableEmail>false</disableEmail> <skipExternalDataValidation>false</skipExternalDataValidation> <addAndroidAppLink>false</addAndroidAppLink> <addIosAppLink>false</addIosAppLink> <addWindowsAppLink>false</addWindowsAppLink> <allowDelegation>false</allowDelegation> <authentications /> </recipient> </recipients> </step> </steps> <attachSignedDocumentsToEnvelopeLog>false</attachSignedDocumentsToEnvelopeLog> </envelope>
SAML Support
Examples of Use Cases
- ADFS integration for eSAW backend users
- Signer authentication with external SAML service
How to configure OAuth2 Authentication
OAuth2 enables you to configure an external authentication method, such as LinkedIn or Facebook. In this section you find how to configure them.
The signer will see an additional external authentication option. A pop-up appears, where the signer has to enter his credentials to authenticate. eSignAnyWhere will receive a temporary token to receive some authentication information, which will be stored in the audit log of the envelope. You can integrate any external OAuth 2.0 service. For example the open source project OAuthServer (https://oauthserver.codeplex.com/) would enable you to connect your AD/LDAP via OAuth 2.0 and eSignAnyWhere, or you can implement your own OAuth 2.0 service.
OAuth 2.0 (LinkedIn)
Step 1: Create a new LinkedIn App
Go to your LinkedIn Account and create a new LinkedIn App. You have to enter a name (e.g. “my-eSAW-Authenticator”, a description, URL and some additional information). Once you have created your LinkedIn App you have to finish the configuration.
Step 2: Configure LinkedIn App
In your LinkedIn App you will find your (secret) client-id
and client-secret
, and the available scopes (e.g. r_basicprofile r_emailaddress
). It is important to separate the scopes with space ” “.
You have to add a OAuth 2.0 forwarding URL. The URL for eSignAnyWhere is https://www.significant.com/esawviewer/HttpHandlers/AuthHandler.ashx
.
Step 3: Configure eSignAnyWhere
Open the Settings > Organization page and add a new OAuth 2.0 provider. Enter the LinkedIn credentials as below (see LinkedIn documentation for current configuration!). The Identifier is your unique identifier for using with API. The ressources URIs are called for data, which will be stored in the audit-log.
Client ID: | your Linked Client ID |
Client Secret: | your LinkedIn Client Secret |
Scope: | r_basicprofile r_emailaddress |
Authorization URI: | https://www.linkedin.com/oauth/v2/authorization |
Token URI: | https://www.linkedin.com/oauth/v2/accessToken |
Logout URI: | https://www.linkedin.com |
Ressource Parameter: | oauth2_access_token |
Ressource URI: | https://api.linkedin.com/v1/people/~:(id,firstName,lastName,headline,email-address)?format=json |
Ressources
LinkedIn and OAuth2: https://developer.linkedin.com/docs/oauth2
OAuth 2.0 (Facebook)
Step 1: Create a new Facebook App
Go to Facebook Developer, login and create a new Facebook App. You have to enter your App Name (e.g. “my-eSAW-Authenticator”), a contact email-address and a category.
Step 2: Configure your Facebook App
In your Facebook App dashboard and subpages you will find the API ID (similar to Client Token) and the App Secret (similar to Client Secret). You have to add a Facebook Login product to your app (OAuth2). In the settings page of your Facebook Login you can configure the OAuth Redirect URI (https://www.significant.com/esawviewer/HttpHandlers/AuthHandler.ashx
).
For the scope you will need to add permissions, which can be found here. For this example we are using the following permissions: public_profile email user_about_me
. It is important to separate the scopes with space ” “.
Step 3: Configure eSignAnyWhere
Open the Settings > Organization page and add a new OAuth 2.0 provider. Enter the Facebook credentials as below (see Facebook documentation for current configuration!). The Identifier is your unique identifier for using with API. The ressources URIs are called for data, which will be stored in the audit-log (see Facebook documentation).
Client ID: | your Facebook App ID |
Client Secret: | your Facebook App Secret |
Scope: | public_profile email user_about_me |
Authorization URI: | https://www.facebook.com/v2.8/dialog/oauth |
Token URI: | https://graph.facebook.com/v2.8/oauth/access_token |
Logout URI: | http://facebook.com |
Ressource Parameter: | oauth_token |
Ressource URI: | https://graph.facebook.com/v2.5/me?fields=id,name,first_name,middle_name,last_name,email,birthday |
The configured Ressource URI returns a JSON object with the specified parameter. These parameters can be defined in the fields to force a specific LinkedIn user to authenticate (e.g. email address). HINT: to see what data is returned in the Ressource URI send yourself an envelope and have a look in the audit trail. It contains the returned object with its parameter. Note: Parameter in Ressource URI of LinkedIn is not the same in the result (email vs. emailAddress).
The Ressource URI will return data of the profile. With the “Graph API Explorer” you can build and test your own profile requests. With the optional configuration of “Fields” you can define fields, which are checked for authentication. So you can force a specific user (e.g. identified via email, id or birthdate) to authenticate. Other users are not accepted.
{ "id": "5761459xxxxxx", "name": "Firstname Lastname", "first_name": "Firstname", "last_name": "Lastname", "email": "some@email.com", "birthday": "01/01/2000" }
Ressources
Facebook Developer: https://developers.facebook.com
Permissions: https://developers.facebook.com/docs/facebook-login/permissions/
Facebook API: https://developers.facebook.com/docs/graph-api/using-graph-api/
OAuth 2.0 (eSAW)
Step 1: Create a new App
Create a new app in eSAW. You can find the OAuth settings in the section OAUTH APPS. You can configure the app with the following settings:
- Logo
- Name
- Description
- Redirect Urls
- In the settings you can also find the Client id and the Client Secret which are both necessary in the next steps.
Step 2: Configure eSignAnyWhere
Open the Settings > Organization page and add a new OAuth 2.0 provider. Enter the eSAW app credentials as below. Please see the following figure for more information about the configuration in eSAW:
We recommend to configure Resource Uris. If you configure a resource Uri it returns a JSON object with the specified parameter. These parameters can be defined in the fields to force a specific eSAW user to authenticate (e.g. email address). HINT: to see what data is returned in the Resource URI send yourself an envelope and have a look in the audit trail. It contains the returned object with its parameter. You can find a sample configuration in the next figure:
In the figure shown above the resource URI will return data of the profile with the following URI: https://demo.esignanywhere.net/api/v5/user/me. With the optional configuration of “Fields” you can define fields, which are checked for authentication. So you can force a specific user (e.g. identified via email, id or birth date) to authenticate. Other users are not accepted. In the figure above we configured one filed with the email address of the user and added the field in the URI. As response for this URI we get the following data shown in the audit trail:
{ "id": "39cbe455xxxxxx", "email": "some@email.com", "first_name": "Firstname", "last_name": "Lastname", }
If the user is not allowed to authenticate the following error will appear:
If authentication was successful you can find the app in Settings->Api Tokens and Apps in the section Apps and Connectors. Please see the next figure:
For more information about the signing process in eSAW please also see the next video:
Force a specific user to authentication
You can force a specific user to authentication via checks in the authenticator (based e.g. on userid or email). Via API you configure the authentication with a “check”.
<authentications> <authentication> <!-- CustomAuthenticationProvider will be mapped to GenericOAuthProvider --> <method>CustomAuthenticationProvider</method> <parameter>nameofprovider</parameter> <checks> <check compareOperation="equals" fieldId="userprofile" value="a232656-6656-5665"></check> </checks> </authentication> <authentication> <method>CustomOAuthProvider</method> <parameter>nameofprovider</parameter> <checks> <check compareOperation="equals" fieldId="useremail" value="jordan@xyzmo.com"></check> <check compareOperation="equals" fieldId="userprofile" value="a232336-6656-5665"></check> </checks> </authentication> </authentications>
Advanced Document Tags
Here you can download a PDF which contains two recipient tags and some additional tags like a Checkbox and a Textfield.
Start and Endmarker in the Document [[tags]]
Parameters
! |
required (optional) |
* |
read only (optional) |
fieldname |
String (required) |
:signer1 |
Assigned to signer; “signer” or “signer1”, “signer2”, … (required) |
:objecttype |
Type, e.g. signature, combobox, … (mandatory) |
:property |
additional parameters (allow using of some short notation (e.g. l,r,c instead left, right, center, …)) |
Signature Fields
Sample for Click2Sign and Draw2Sign
[[!sigField1:signer1:signature(sigType="Click2Sign,Draw2Sign",batch=1):label("some label"):size(width=150,height=60)]]
sigType, batch, label, size are optional.
Sample for Automatic Remote Signature
Note: To use an automatic remote signature you must have the role “Automatic Sealing Sender” enabled, otherwise you are not able to proceed.
[[!sig1:signer1:signature(sigType="AutomaticRemoteSignature"):size(height=50):label("some label")]]
Supported signature types: Click2Sign, Draw2Sign, Type2Sign, RemoteSignature, BiometricSignature, LocalCertificateSignature, DisposableCertificate, OtpSignature (as of October 2019, eSAW 3.6).
Attachments
[[myAttachment:signer:attachment:label("some label"):size(width=10,height=10)]]
label, size are optional.
Textfield
[[*myText:signer2:text(maxLength=100,password=1,multiline=true):default("default text"):font(name=Arial, color=#FF0000, size=12):alignment(left|right|center):size(width=10,height=10)]]
maxLength, password, default, font, alignment, size, multiline are optional.
Checkbox
A required checked checkbox is for only one signer.
[[!chk1:signer:checkbox:size(width=10,height=10):checked]]
checked, size is optional.
RadioButton
All items of a group have to have the same name. Group of three RadioButtons for one recipient:
[[testRbnGroup:signer:radio(Red):size(width=10,height=10):checked]] [[testRbnGroup:signer:radio(Green):size(width=10,height=10)]] [[testRbnGroup:signer:radio(Blue):size(width=10,height=10)]]
checked, size is optional.
DropDown
[[myDrop:signer:dropdown(options="Red,Green,Blue",values="R,G,B",editable=1):default("R"):font(name=Arial, color=#FF0000, size=12):alignment(left|right|center):size(width=10,height=10)]]
values, editable, default, size, font, alignment are optional.
List
[[myList:signer:list(options="Red,Green,Blue",values="R,G,B",multiSelect=1):default("R"):font(name=Arial, color=#FF0000, size=12):alignment(left|right|center):size(width=10,height=10)]]
values, multiSelect, default, size, font, alignment are optional.
Offset
You can define a offset by using
:offset(x=-10.5,y=-50.6)
The offset starts at the lower left position, is using points as units and numbers (double) as input. A positive x value moves to right and a positive y value moves up. Note: this is support eSAW version 3.0+.
Variables
Use to reuse some fragments and allow an easier placement of the text markup into floating text.
Definition:
[[#myFontSettings=:font(name=Arial, color=#FF0000, size=12):alignment(left|right|center)]]
Usage:
[[myList:signer:list(options="Red,Green,Blue",values="R,G,B",multiSelect=1):default("R")$myFontSettings:size(width=10,height=10)]]
Input Validation
Input Validation is available with version 3.1. It might be helpful to check the workstep configuration documentation for accepted formats.
- Date
- Requires a date field for signer1
-
[[!someDate:signer1:date(format="dd. MMMM yyyy"):range(from="13. März 2018",to="18. December 2019")]]
- range is optional and must match with defined format
- Email
- optional for email field
-
[[someMail:signer:email()]]
- Number
-
[[someNumber:signer:number(decimalPlaces=2,decimalSeparator=comma,thousandsSeparator=point,symbol="€",symbolLocation=endWithBlank):range(from="-300,00 €",to="5.000,00 €")]]
- range, decimalSeparator, thousandsSeparator, symbol, symbolLocation, are optional
- decimalSeparator: comma, point, apostrophe, none
- thousandsSeparator: comma, point, apostrophe, blank, none
- symbolLocation: start, startWithBlank, end, endWithBlank
- range must match with defined format
-
- phone
-
[[somePhone:signer:phone(type=international)]]
- type: international, internationalLeadingZero, internationalLeadingPlus
-
- time
-
[[someTime:signer:time(format="HH:mm"):range(from="12:00",to="18:00")]]
- range is optional
- range must match the defined format
-
REST example
For detailed information of using api calls in REST please also see this tutorial: Postman_tutorial.
You can download the PDF for the following tutorial here.
To test it yourself, use the following endpoint: https://demo.esignanywhere.net/Api
- Prepare a PDF document
- Upload the document (uploadtemporary)
- Prepare the envelope (prepare)
- Send the envelope
- Result
Step 1: Prepare a PDF document
You can either prepare a PDF document with field markups or use this sample document: sample.
Step 2-4: Upload, prepare and send envelope
For these steps you can download the JSON file with the configurations here.
Result
REST Example For Input Validation
In the next collapse you can find a input validation example for REST. With this configuration only numbers from -300,00 to 5.000,00 are allowed in the Textfield.
Note: If you delete this section:
"Range": { "From": "-300,00 €", "To": "5.000,00 €" },
you can type in any numbers. If you define the same number for “FROM” and “TO” you can only type in the given number. For example if you define 400,00 for “FROM” and “TO” the recipient can only type in this number into the Text Field.
Please find a complete configuration for the input validation in this collapse:
configuration
{ "SspFileIds": [ "##FileId##" ], "SendEnvelopeDescription": { "Name": "inputtest.pdf", "EmailSubject": "Please sign the enclosed envelope", "EmailBody": "Dear #RecipientFirstName# #RecipientLastName#\n\n#PersonalMessage#\n\nPlease sign the envelope #EnvelopeName#\n\nEnvelope will expire at #ExpirationDate#", "DisplayedEmailSender": "", "EnableReminders": true, "FirstReminderDayAmount": 5, "RecurrentReminderDayAmount": 3, "BeforeExpirationDayAmount": 3, "DaysUntilExpire": 28, "CallbackUrl": "", "StatusUpdateCallbackUrl": "", "Steps": [ { "OrderIndex": 1, "Recipients": [ { "Email": "##EMAIL##", "FirstName": "##NAME##", "LastName": "##NAME##", "LanguageCode": "en", "EmailBodyExtra": "", "DisableEmail": false, "AddAndroidAppLink": false, "AddIosAppLink": false, "AddWindowsAppLink": false, "AllowDelegation": false, "AllowAccessFinishedWorkstep": false, "SkipExternalDataValidation": false, "AuthenticationMethods": [] } ], "EmailBodyExtra": "", "RecipientType": "Signer", "WorkstepConfiguration": { "WorkstepLabel": "inputtest.pdf", "SmallTextZoomFactorPercent": 100, "FinishAction": { "ServerActions": [], "ClientActions": [] }, "ReceiverInformation": { "UserInformation": { "FirstName": "##NAME##", "LastName": "##NAME##", "EMail": "##EMAIL##" }, "TransactionCodePushPluginData": [] }, "SenderInformation": { "UserInformation": { "FirstName": "##NAME##", "LastName": "##NAME##", "EMail": "##EMAIL##" } }, "TransactionCodeConfigurations": [ { "Id": "smsAuthTransactionCodeId", "HashAlgorithmIdentifier": "Sha256", "Texts": [ ] } ], "SignatureConfigurations": [], "ViewerPreferences": { "FinishWorkstepOnOpen": false, "VisibleAreaOptions": { "AllowedDomain": "*", "Enabled": false } }, "ResourceUris": {}, "AuditingToolsConfiguration": { "WriteAuditTrail": false, "NotificationConfiguration": {} }, "Policy": { "GeneralPolicies": { "AllowSaveDocument": true, "AllowSaveAuditTrail": true, "AllowRotatingPages": false, "AllowEmailDocument": true, "AllowPrintDocument": true, "AllowFinishWorkstep": true, "AllowRejectWorkstep": true, "AllowRejectWorkstepDelegation": false, "AllowUndoLastAction": false, "AllowAdhocPdfAttachments": false, "AllowAdhocSignatures": false, "AllowAdhocStampings": false, "AllowAdhocFreeHandAnnotations": false, "AllowAdhocTypewriterAnnotations": false, "AllowAdhocPictureAnnotations": false, "AllowAdhocPdfPageAppending": false }, "WorkstepTasks": { "PictureAnnotationMinResolution": 0, "PictureAnnotationMaxResolution": 0, "PictureAnnotationColorDepth": "Color16M", "SequenceMode": "NoSequenceEnforced", "PositionUnits": "PdfUnits", "ReferenceCorner": "Lower_Left", "Tasks": [ { "Forms": [ { "FormFieldValidation": { "DecimalPlaces": 2, "DecimalSeparator": "Comma", "ThousandsSeparator": "Point", "Symbol": "€", "SymbolLocation": "EndWithBlank", "Range": { "From": "-300,00 €", "To": "5.000,00 €" }, "DiscriminatorType": "FormFieldValidationNumber" }, "IsRequired": false, "Id": "someNumber", "PositionPage": 1, "DocRefNumber": 1, "Position": { "PositionX": 71.0, "PositionY": 712.0 }, "Size": { "Height": 52.12, "Width": 100.0 }, "DiscriminatorType": "TextBox" } ], "IsRequired": false, "Id": "77e47a7d-a995-4668-a5f6-4fdb261f4bdd", "DisplayName": "", "DocRefNumber": 1, "DiscriminatorType": "FormGroup" } ] } }, "Navigation": { "HyperLinks": [], "Links": [], "LinkTargets": [] } }, "DocumentOptions": [ { "DocumentReference": "1", "IsHidden": false } ], "UseDefaultAgreements": true }, { "OrderIndex": 2, "Recipients": [ { "Email": "##EMAIL##", "FirstName": "##NAME##", "LastName": "##NAME##", "LanguageCode": "en", "EmailBodyExtra": "", "DisableEmail": false, "AddAndroidAppLink": false, "AddIosAppLink": false, "AddWindowsAppLink": false, "AllowDelegation": false, "SkipExternalDataValidation": false, "AuthenticationMethods": [] } ], "EmailBodyExtra": "", "RecipientType": "Cc", "DocumentOptions": [], "UseDefaultAgreements": false } ], "AddFormFields": { "Forms": { "1": [ { "Value": "", "MaxLength": 0, "IsMultiline": false, "IsPassword": false, "IsFileSelect": false, "IsScrollAllowed": false, "IsComb": false, "TextColor": "Black", "FontSize": 20.0, "FontName": "Arial", "Bold": false, "Italic": false, "TextAlign": "Left", "Name": "someNumber", "ReadOnly": false, "Required": false, "X": 70.8239974975586, "Y": 712.054990234375, "Width": 100.0, "Height": 52.12, "Page": 1, "DiscriminatorType": "AddTextBoxFormFieldDescriptor" } ] } }, "OverrideFormFieldValues": { "Forms": {} }, "AttachSignedDocumentsToEnvelopeLog": false } }
SOAP example
For detailed information of using api calls with SOAP please also see this tutorial: SOAP_tutorial.
You can download the PDF for the following tutorial here.
To test it yourself, use the following endpoint: https://demo.esignanywhere.net/api.asmx?WSDL
- Prepare a PDF document
- Upload the document (UploadTemporarySspFile_v1)
- Prepare the envelope (PrepareSendEnvelopeSteps_v1)
- Send the envelope (SendEnvelope_v1)
- Result
Step 1: Prepare a PDF document
You can either prepare a PDF document with field markups or use this sample document: sample
Step 2: Upload the document
In the next collapse with the title “upload_example” you can find a configuration for uploading a document:
upload_example
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:esig="http://www.eSignAnyWhere.com/"> <soapenv:Header/> <soapenv:Body> <esig:UploadTemporarySspFile_v1> <!--Optional:--> <esig:authorizationXml> <authorization> <organizationKey>##KEY##</organizationKey> <userLoginName>##EMAIL##</userLoginName> </authorization> </esig:authorizationXml> <!--Optional:--> <esig:fileXml> <file> <name>eSignAnyWhere_Tutorial.pdf</name> <data> ##BASE64##</data> </file> </esig:fileXml> </esig:UploadTemporarySspFile_v1> </soapenv:Body> </soapenv:Envelope>
Step 3: Prepare the envelope
The “PrepareSendEnvelopeSteps_v1” call parses the document. Therefore we get the exact positions of the field markups so that we can place them in the next step. In the next collapse with the title “prepare_example” you find a sample for the adHoc workstep configuration which is needed for this call.
prepare_example
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:esig="http://www.eSignAnyWhere.com/"> <soapenv:Header/> <soapenv:Body> <esig:PrepareSendEnvelopeSteps_v1> <!--Optional:--> <esig:authorizationXml> <authorization> <organizationKey>##KEY##</organizationKey> <userLoginName>##EMAIL##</userLoginName> </authorization> </esig:authorizationXml> <!--Optional:--> <esig:sspFileIds> <!--Zero or more repetitions:--> <esig:string>c82d180a-6f31-4eb0-bed3-2d332229797c</esig:string> </esig:sspFileIds> <!--Optional:--> <esig:adHocWorkstepConfiguration> <AdhocWorkstepConfiguration> <WorkstepLabel /> <SmallTextZoomFactorPercent>100</SmallTextZoomFactorPercent> <WorkstepTimeToLiveInMinutes>10</WorkstepTimeToLiveInMinutes> <FinishAction /> <NoSequenceEnforced>0</NoSequenceEnforced> <SigTemplate> <width>50.5</width> <height>100.5</height> </SigTemplate> <ParseFormFields mapRequiredFieldsToRequiredTask="1" formsGrouping="PerPage" returnSimplifiedConfig="0" addKeepExistingValueFlag="0">1</ParseFormFields> <AdhocPolicies> <AllowModificationsAfterSignature>1</AllowModificationsAfterSignature> </AdhocPolicies> <PictureAnnotationConfigurationDefaults> <MinResolution>100</MinResolution> <MaxResolution>300</MaxResolution> <ColorDepth>Color16M</ColorDepth> </PictureAnnotationConfigurationDefaults> <signaturePluginConfiguration> <PdfSignatureProperties_V1> <PdfAConformant>0</PdfAConformant> <PAdESPart4Compliant>0</PAdESPart4Compliant> <IncludeSigningCertificateChain>0</IncludeSigningCertificateChain> <SigningCertificateRevocationInformationIncludeMode>DoNotInclude</SigningCertificateRevocationInformationIncludeMode> </PdfSignatureProperties_V1> <PdfSignatureCryptographicData_V1> <SignatureHashAlgorithm>Sha1</SignatureHashAlgorithm> <SigningCertificateDescriptor> <Identifier>DDED02DC192573B722E8C027F0E47E63152EB822</Identifier> <Type>Sha1Thumbprint</Type> <Csp>Default</Csp> </SigningCertificateDescriptor> </PdfSignatureCryptographicData_V1> </signaturePluginConfiguration> <SigStringParsingConfiguration> <SigStringsForParsing> <StartPattern>`sig</StartPattern> <EndPattern>`</EndPattern> <ClearSigString>1</ClearSigString> <SearchEntireWordOnly>1</SearchEntireWordOnly> </SigStringsForParsing> </SigStringParsingConfiguration> <GeneralPolicies> <AllowSaveDocument>1</AllowSaveDocument> <AllowSaveAuditTrail>0</AllowSaveAuditTrail> <AllowRotatingPages>1</AllowRotatingPages> <AllowAppendFileToWorkstep>0</AllowAppendFileToWorkstep> <AllowAppendTasksToWorkstep>0</AllowAppendTasksToWorkstep> <AllowEmailDocument>0</AllowEmailDocument> <AllowPrintDocument>0</AllowPrintDocument> <AllowFinishWorkstep>1</AllowFinishWorkstep> <AllowRejectWorkstep>1</AllowRejectWorkstep> <AllowRejectWorkstepDelegation>0</AllowRejectWorkstepDelegation> <AllowUndoLastAction>1</AllowUndoLastAction> <AllowColorizePdfForms>0</AllowColorizePdfForms> <AllowAdhocPdfAttachments>1</AllowAdhocPdfAttachments> <AllowAdhocSignatures>1</AllowAdhocSignatures> <AllowAdhocStampings>1</AllowAdhocStampings> <AllowAdhocFreeHandAnnotations>1</AllowAdhocFreeHandAnnotations> <AllowAdhocTypewriterAnnotations>1</AllowAdhocTypewriterAnnotations> <AllowAdhocPictureAnnotations>0</AllowAdhocPictureAnnotations> <AllowAdhocPdfPageAppending>1</AllowAdhocPdfPageAppending> </GeneralPolicies> </AdhocWorkstepConfiguration> </esig:adHocWorkstepConfiguration> <!--Optional:--> <esig:prepareSendEnvelopeStepsDescriptor> <prepareSendEnvelopeStepsDescriptor> <clearFieldMarkupString>1</clearFieldMarkupString> </prepareSendEnvelopeStepsDescriptor> </esig:prepareSendEnvelopeStepsDescriptor> </esig:PrepareSendEnvelopeSteps_v1> </soapenv:Body> </soapenv:Envelope>
Note: The following lines of code of the prepare_example are the configuration of the fieldmarkups. You can either decide to clear the field markup strings or not with the value (0,1). In this example we clear the strings because we have no use of them later.
<esig:prepareSendEnvelopeStepsDescriptor> <prepareSendEnvelopeStepsDescriptor> <clearFieldMarkupString>1</clearFieldMarkupString> </prepareSendEnvelopeStepsDescriptor> </esig:prepareSendEnvelopeStepsDescriptor>
After a successful configuration you get a new workstep configuration including the form fields at the end. With the sample PDF the addFormFields section of the new workstep configuration should look like:
<addFormFields> <document docRef="1"> <textBox name="myText1" readOnly="false" required="true" x="72" y="563.477001953125" width="200" height="65.149999999999991" page="1"> <fontSettings> <textColor>#FF0000</textColor> <fontName>Arial</fontName> <fontSize>12</fontSize> <fontStyleBold>false</fontStyleBold> <fontStyleItalic>false</fontStyleItalic> <textAlign>Center</textAlign> </fontSettings> <value>Place for signer1</value> <maxLength>100</maxLength> <isMultiLine>false</isMultiLine> <isPassword>false</isPassword> <isFileSelect>false</isFileSelect> <isScrollAllowed>false</isScrollAllowed> <isComb>false</isComb> </textBox> <checkBox name="chk1" readOnly="false" required="true" x="72" y="439.802001953125" width="25" height="25" page="1"> <isChecked>true</isChecked> </checkBox> </document> </addFormFields>
Step 4: Send the envelope
After you received the new workstep configuration you can now send it to recipients. If you want to use another workstep configuration but with the same form fields you can just add these form fields to the configuration. The next collapse contains a sample workstep configuration and the form fields for the sending api call.
sending_configuration
<soap:Header /> <soap:Body> <esig:SendEnvelope_v1> <!--Optional:--> <esig:authorizationXml> <authorization> <organizationKey>##KEY##</organizationKey> <userLoginName>##EMAIL##</userLoginName> </authorization> </esig:authorizationXml> <!--Optional:--> <esig:sspFileIds> <esig:string>0c078eb3-d7a6-4853-adca-4375940f68c0</esig:string> </esig:sspFileIds> <!--Optional:--> <esig:envelopeDescriptionXml> <envelope> <name>eSignAnyWhere Tutorial</name> <eMailSubject>Document of eSignAnyWhere Tutorial</eMailSubject> <eMailBody>Dear #RecipientFirstName#! Please sign this tutorial document.</eMailBody> <enableReminders>True</enableReminders> <firstReminderDayAmount>1</firstReminderDayAmount> <recurrentReminderDayAmount>1</recurrentReminderDayAmount> <beforeExpirationReminderDayAmount>1</beforeExpirationReminderDayAmount> <daysUntilExpire>2</daysUntilExpire> <!-- callback to your backend system on a completed envelope <callbackUrl>http://172.16.17.78:57550/default.aspx?EnvelopeId=##EnvelopeId##&amp;myParamForMe=1234</callbackUrl> --> <callbackUrl /> <steps> <step> <emailBodyExtra /> <orderIndex>1</orderIndex> <recipientType>Signer</recipientType> <recipients> <recipient> <languageCode>en</languageCode> <eMail>##EMAIL##</eMail> <firstName>Alice</firstName> <lastName>Somename</lastName> </recipient> </recipients> <workstepConfiguration> <WorkstepLabel /> <SmallTextZoomFactorPercent>100</SmallTextZoomFactorPercent> <WorkstepTimeToLiveInMinutes>11520</WorkstepTimeToLiveInMinutes> <FinishAction /> <signatureTemplate> <version>1.2.0.2</version> <positionUnits>PdfUnits</positionUnits> <positionReferenceCorner>Lower_Left</positionReferenceCorner> </signatureTemplate> <Policy version="1.1.0.0"> <GeneralPolicies> <AllowSaveDocument>1</AllowSaveDocument> <AllowSaveAuditTrail>1</AllowSaveAuditTrail> </GeneralPolicies> <WorkstepTasks SequenceMode="SequenceOnlyRequiredTasks" originalSequenceMode="SequenceOnlyRequiredTasks"> </WorkstepTasks> </Policy> <TransactionCodeConfigurations> <TransactionCodeConfiguration trConfId=""> <Message>Please sign the document with the transactionId {tId} with the code: {Token}</Message> <hashAlgorithmIdentifier>Sha256</hashAlgorithmIdentifier> </TransactionCodeConfiguration> <TransactionCodeConfiguration trConfId="Trans1"> <Message>Please accept the transactionId {tId} with the code: {Token}</Message> <hashAlgorithmIdentifier>Sha256</hashAlgorithmIdentifier> </TransactionCodeConfiguration> </TransactionCodeConfigurations> </workstepConfiguration> </step> <step> <emailBodyExtra /> <orderIndex>2</orderIndex> <recipientType>CC</recipientType> <recipients> <recipient> <languageCode>en</languageCode> <eMail>##EMAIL##</eMail> <firstName>Charly</firstName> <lastName>Randomname</lastName> </recipient> </recipients> </step> </steps> <addFormFields> <document docRef="1"> <textBox name="myText1" readOnly="false" required="true" x="72" y="563.477001953125" width="500" height="65.149999999999991" page="1"> <fontSettings> <textColor>#FF0000</textColor> <fontName>Arial</fontName> <fontSize>12</fontSize> <fontStyleBold>false</fontStyleBold> <fontStyleItalic>false</fontStyleItalic> <textAlign>Center</textAlign> </fontSettings> <value>This is the textfield we added with addFormFields within the SendEnvelope call</value> <maxLength>200</maxLength> <isMultiLine>false</isMultiLine> <isPassword>false</isPassword> <isFileSelect>false</isFileSelect> <isScrollAllowed>false</isScrollAllowed> <isComb>false</isComb> </textBox> <checkBox name="chk1" readOnly="false" required="true" x="72" y="439.802001953125" width="25" height="25" page="1"> <isChecked>true</isChecked> </checkBox> </document> </addFormFields> </envelope> </esig:envelopeDescriptionXml> </esig:SendEnvelope_v1> </soap:Body> </soap:Envelope>
QES with Disposable Certificate
To use the disposable certificate you just click the settings for the recipient to edit her/his information for the certificate. You need the following information:
- Document type
- Identity card
- Driver license
- Passport
- Document number
- Document issued on
- Document issued by
- Document expiry date
- Identification Issuing Country
- Identification type
- Tax Code
- National unique number
- Passport
- Identity card
- Driving license
- Identification Number
- Mobile phone
- Country of residence
Figure | Description |
---|---|
|
|
In the designer you have to select the signature field type as “Disposable Certificate”.
The signer will receive its email as usual and when the signer wants to sign a disposable certificate signature field he will get a one-time-password via SMS. The counter on the disposable certificate starts by signing the first signature.
If “Show disclaimer before certificate request” is enabled in Settings->Organization->Disposable Certificate the signer first receives the disclaimer before the SMS-OTP.
Note: There can be links in the disclaimer which the signer can follow directly by clicking.
When the document is finished you can validate, for example, the qualified electronic signature in Adobe Reader.
You can also send a disposable signature via api. To do this, you first have to upload a document and then add the signature and the disposable certificate data. Note: You have to add the disposable certificate data in the section “recipient”.
Please see the following sample configuration:
{ "SspFileIds": [ "##FILE_ID##" ], "SendEnvelopeDescription": { "Name": "test", "EmailSubject": "Please sign the enclosed envelope", "EmailBody": "Dear #RecipientFirstName# #RecipientLastName#\n\n#PersonalMessage#\n\nPlease sign the envelope #EnvelopeName#\n\nEnvelope will expire at #ExpirationDate#", "DisplayedEmailSender": "", "EnableReminders": true, "FirstReminderDayAmount": 5, "RecurrentReminderDayAmount": 3, "BeforeExpirationDayAmount": 3, "DaysUntilExpire": 28, "CallbackUrl": "", "StatusUpdateCallbackUrl": "", "LockFormFieldsAtEnvelopeFinish": true, "Steps": [ { "OrderIndex": 1, "Recipients": [ { "Email": "##EMAIL##", "FirstName": "##NAME##", "LastName": "##NAME##", "LanguageCode": "en", "EmailBodyExtra": "", "DisableEmail": false, "AddAndroidAppLink": false, "AddIosAppLink": false, "AddWindowsAppLink": false, "AllowDelegation": false, "AllowAccessFinishedWorkstep": false, "SkipExternalDataValidation": false, "AuthenticationMethods": [], "DisposableCertificateData": { "CountryResidence": "AT", "IdentificationCountry": "AT", "IdentificationType": "PASSPORT", "PhoneMobile": "##PHONENUMBER##", "DocumentType": "PASS", "DocumentIssuedBy": "Namirial", "DocumentIssuedOn": "2020-07-07T00:00:00Z", "DocumentExpiryDate": "2020-07-29T00:00:00Z", "SerialNumber": "1234", "DocumentNumber": "123", "OverrideHolderInCaseOfMismatch": false } } ], "EmailBodyExtra": "", "RecipientType": "Signer", "WorkstepConfiguration": { "WorkstepLabel": "test", "SmallTextZoomFactorPercent": 100, "FinishAction": { "ServerActions": [], "ClientActions": [ { "RemoveDocumentFromRecentDocumentList": false, "CallClientActionOnlyAfterSuccessfulSync": true, "ClientName": "SIGNificant SignAnywhere", "CloseApp": false, "Action": "https://www.esignanywhere.net/" } ] }, "ReceiverInformation": { "UserInformation": { "FirstName": "##NAME##", "LastName": "##NAME##", "EMail": "##EMAIL##" }, "HolderInformation": "<recognitionType>PASS</recognitionType><documentIssuedOn>07/07/2020</documentIssuedOn><documentExpiryDate>29/07/2020</documentExpiryDate><documentIssuedBy>Namirial</documentIssuedBy><documentNumber>123</documentNumber><countryResidence>AT</countryResidence><firstName>##NAME##</firstName><lastName>##NAME##</lastName><email>##EMAIL##</email><phoneMobile>##PHONENUMBER##</phoneMobile><identificationType>PASSPORT</identificationType><identificationCountry>AT</identificationCountry><passport>1234</passport>", "TransactionCodePushPluginData": [] }, "SenderInformation": { "UserInformation": { "FirstName": "##NAME##", "LastName": "##NAME##", "EMail": "##EMAIL##" } }, "TransactionCodeConfigurations": [ { "Id": "smsAuthTransactionCodeId", "HashAlgorithmIdentifier": "Sha256", "Texts": [ { } ] } ], "SignatureConfigurations": [], "ViewerPreferences": { "FinishWorkstepOnOpen": false, "VisibleAreaOptions": { "AllowedDomain": "*", "Enabled": false } }, "ResourceUris": {}, "AuditingToolsConfiguration": { "WriteAuditTrail": false, "NotificationConfiguration": {} }, "Policy": { "GeneralPolicies": { "AllowSaveDocument": true, "AllowSaveAuditTrail": true, "AllowRotatingPages": false, "AllowEmailDocument": true, "AllowPrintDocument": true, "AllowFinishWorkstep": true, "AllowRejectWorkstep": true, "AllowRejectWorkstepDelegation": false, "AllowUndoLastAction": true, "AllowAdhocPdfAttachments": false, "AllowAdhocSignatures": false, "AllowAdhocStampings": false, "AllowAdhocFreeHandAnnotations": false, "AllowAdhocTypewriterAnnotations": false, "AllowAdhocPictureAnnotations": false, "AllowAdhocPdfPageAppending": false }, "WorkstepTasks": { "PictureAnnotationMinResolution": 0, "PictureAnnotationMaxResolution": 0, "PictureAnnotationColorDepth": "Color16M", "SequenceMode": "NoSequenceEnforced", "PositionUnits": "PdfUnits", "ReferenceCorner": "Lower_Left", "Tasks": [ { "PositionPage": 1, "Position": { "PositionX": 89.0, "PositionY": 575.0 }, "Size": { "Height": 80.0, "Width": 190.0 }, "AdditionalParameters": [ { "Key": "enabled", "Value": "1" }, { "Key": "positioning", "Value": "onPage" }, { "Key": "req", "Value": "1" }, { "Key": "fd", "Value": "" }, { "Key": "fd_dateformat", "Value": "dd-MM-yyyy HH:mm:ss" }, { "Key": "fd_timezone", "Value": "datetimeutc" }, { "Key": "spcId", "Value": "padesSigningId" } ], "AllowedSignatureTypes": [ { "TrModType": "RemoteSignatureDisposableCertificate", "TrValidityInSeconds": 300, "Ly": "remoteCertificate", "TrConfIdIssueCertificate": "disposableCertificateEnrolAndSignSmsText", "TrConfId": "remoteCertificateSignSmsText", "IsPhoneNumberRequired": false, "Id": "180c4201-4146-4161-baf8-cb5a607eec62", "DiscriminatorType": "SigTypeTransactionCode", "Preferred": false, "StampImprintConfiguration": { "DisplayExtraInformation": true, "DisplayEmail": true, "DisplayIp": true, "DisplayName": true, "DisplaySignatureDate": true, "FontFamily": "Times New Roman", "FontSize": 11.0 } } ], "UseTimestamp": false, "IsRequired": true, "Id": "1#XyzmoDuplicateIdSeperator#Signature_b58c192b-47c0-5339-cb18-4fe77c3d1812", "DisplayName": "", "DocRefNumber": 1, "DiscriminatorType": "Signature" } ] } }, "Navigation": { "HyperLinks": [], "Links": [], "LinkTargets": [] } }, "DocumentOptions": [ { "DocumentReference": "1", "IsHidden": false } ], "UseDefaultAgreements": true }, { "OrderIndex": 2, "Recipients": [ { "Email": "##EMAIL##", "FirstName": "##NAME##", "LastName": "##NAME##", "LanguageCode": "en", "EmailBodyExtra": "", "DisableEmail": false, "AddAndroidAppLink": false, "AddIosAppLink": false, "AddWindowsAppLink": false, "AllowDelegation": false, "SkipExternalDataValidation": false, "AuthenticationMethods": [] } ], "EmailBodyExtra": "", "RecipientType": "Cc", "DocumentOptions": [], "UseDefaultAgreements": false } ], "AddFormFields": { "Forms": {} }, "OverrideFormFieldValues": { "Forms": {} }, "AttachSignedDocumentsToEnvelopeLog": false } }
<envelope> <name>test</name> <eMailSubject>Please sign the enclosed envelope</eMailSubject> <eMailBody>Dear #RecipientFirstName# #RecipientLastName# #PersonalMessage# Please sign the envelope #EnvelopeName# Envelope will expire at #ExpirationDate#</eMailBody> <enableReminders>true</enableReminders> <firstReminderDayAmount>5</firstReminderDayAmount> <recurrentReminderDayAmount>3</recurrentReminderDayAmount> <beforeExpirationReminderDayAmount>3</beforeExpirationReminderDayAmount> <daysUntilExpire>28</daysUntilExpire> <callbackUrl></callbackUrl> <statusUpdateCallbackUrl></statusUpdateCallbackUrl> <lockFormFieldsAtEnvelopeFinish>true</lockFormFieldsAtEnvelopeFinish> <displayedEmailSender></displayedEmailSender> <steps> <step> <emailBodyExtra></emailBodyExtra> <orderIndex>1</orderIndex> <recipientType>Signer</recipientType> <useDefaultAgreements>true</useDefaultAgreements> <documentOptions> <documentOption docRef="1"> <isHidden>false</isHidden> </documentOption> </documentOptions> <workstepConfiguration skipThirdPartyChecks="0"> <WorkstepLabel>test</WorkstepLabel> <SmallTextZoomFactorPercent>100</SmallTextZoomFactorPercent> <WorkstepTimeToLiveInMinutes>44650</WorkstepTimeToLiveInMinutes> <AbsoluteExpiryDate>2020-07-10T10:57:46.4243017Z</AbsoluteExpiryDate> <FinishAction> <ClientAction clientName="SIGNificant SignAnywhere" closeApp="0" RemoveDocumentFromRecentDocumentList="0" CallClientActionOnlyAfterSuccessfulSync="1">https://www.esignanywhere.net/</ClientAction> </FinishAction> <ViewerPreferences> <SendVisibleArea allowedDomain="*">0</SendVisibleArea> <FinishWorkstepOnOpen>0</FinishWorkstepOnOpen> </ViewerPreferences> <Policy version="1.1.0.0"> <AdhocPolicies> <AllowModificationsAfterSignature>1</AllowModificationsAfterSignature> </AdhocPolicies> <GeneralPolicies> <AllowAdhocFreeHandAnnotations>0</AllowAdhocFreeHandAnnotations> <AllowAdhocPdfAttachments>0</AllowAdhocPdfAttachments> <AllowAdhocPdfPageAppending>0</AllowAdhocPdfPageAppending> <AllowAdhocPictureAnnotations>0</AllowAdhocPictureAnnotations> <AllowAdhocSignatures>0</AllowAdhocSignatures> <AllowAdhocStampings>0</AllowAdhocStampings> <AllowAdhocTypewriterAnnotations>0</AllowAdhocTypewriterAnnotations> <AllowEmailDocument>1</AllowEmailDocument> <AllowFinishWorkstep>1</AllowFinishWorkstep> <AllowPrintDocument>1</AllowPrintDocument> <AllowRejectWorkstep>1</AllowRejectWorkstep> <AllowSaveAuditTrail>1</AllowSaveAuditTrail> <AllowSaveDocument>1</AllowSaveDocument> <AllowUndoLastAction>1</AllowUndoLastAction> <AllowRotatingPages>0</AllowRotatingPages> <AllowRejectWorkstepDelegation>1</AllowRejectWorkstepDelegation> </GeneralPolicies> <WorkstepTasks originalSequenceMode="NoSequenceEnforced" SequenceMode="NoSequenceEnforced"> <Task type="SignField" DocRefNumber="1" id="1#XyzmoDuplicateIdSeperator#Signature_a3d634d1-5b9e-8089-e77d-4888a9616fb2" internalCompleted="0" finishPercentage="0" completed="0" enabled="1" displayName="" required="1" /> </WorkstepTasks> </Policy> <Navigation /> <timeCreated>2020-07-10T10:47:46.3930488Z</timeCreated> <TransactionCodeConfigurations> <TransactionCodeConfiguration trConfId="smsAuthTransactionCodeId"> </TransactionCodeConfiguration> </TransactionCodeConfigurations> <receiverInformation> <userInformation> <firstName>##NAME##</firstName> <lastName>##NAME##</lastName> <eMail>##EMAIL##</eMail> </userInformation> <showNamirialDisposableDisclaimer>1</showNamirialDisposableDisclaimer> <trRsDcNamHolderInformation version="2"> <recognitionType>PASS</recognitionType> <documentIssuedOn>07/07/2020</documentIssuedOn> <documentExpiryDate>29/07/2020</documentExpiryDate> <documentIssuedBy>Namirial</documentIssuedBy> <documentNumber>123</documentNumber> <countryResidence>AT</countryResidence> <firstName>##NAME##</firstName> <lastName>##NAME##</lastName> <email>##EMAIL##</email> <phoneMobile>##PHONENUMBER##</phoneMobile> <identificationType>PASSPORT</identificationType> <identificationCountry>AT</identificationCountry> <passport>123</passport> </trRsDcNamHolderInformation> </receiverInformation> <senderInformation> <userInformation> <firstName>##NAME##</firstName> <lastName>##NAME##</lastName> <eMail>##EMAIL##</eMail> </userInformation> </senderInformation> <pdfForms isEditingAllowed="0" /> <TypewriterAnnotationTaskInfo /> <attachmentFields /> <signatureTemplate> <version>1.2.0.2</version> <positionReferenceCorner>Lower_Left</positionReferenceCorner> <positionUnits>PdfUnits</positionUnits> <sig id="1#XyzmoDuplicateIdSeperator#Signature_a3d634d1-5b9e-8089-e77d-4888a9616fb2"> <TaskDisplayName /> <param name="enabled">1</param> <positionPage>1</positionPage> <positionX>78</positionX> <positionY>545</positionY> <width>190</width> <height>80</height> <param name="positioning">onPage</param> <param name="req">1</param> <param name="fd" /> <param name="fd_dateformat">dd-MM-yyyy HH:mm:ss</param> <param name="fd_timezone">datetimeutc</param> <DocRefNumber>1</DocRefNumber> <AllowedSignatureTypes> <sigType id="89f2876e-2149-4a88-b841-547a1b3478a5" type="TransactionCode"> <trModType>RemoteSignatureDisposableCertificate</trModType> <trValidityInSeconds>300</trValidityInSeconds> <ly>remoteCertificate</ly> <trConfIdIssueCertificate>disposableCertificateEnrolAndSignSmsText</trConfIdIssueCertificate> <trConfId>remoteCertificateSignSmsText</trConfId> <StampImprintConfiguration> <DisplayExtraInformation>1</DisplayExtraInformation> <DisplayEmail>1</DisplayEmail> <DisplayIp>1</DisplayIp> <DisplayName>1</DisplayName> <DisplaySignatureDate>1</DisplaySignatureDate> <FontFamily>Times New Roman</FontFamily> <FontSize>11</FontSize> </StampImprintConfiguration> </sigType> </AllowedSignatureTypes> <param name="spcId">padesSigningId</param> </sig> </signatureTemplate> <AuditingToolsConfiguration WriteAuditTrail="0"> <NotificationConfiguration /> </AuditingToolsConfiguration> <resourceUris> <delegationUri>https://demo.esignanywhere.net/Resource/Delegate</delegationUri> </resourceUris> <LoggingMetaInformation> <envelopeId>##ENVELOPEID##</envelopeId> <envelopeRecipientId>##RECIPIENTID##</envelopeRecipientId> </LoggingMetaInformation> </workstepConfiguration> <recipients> <recipient> <eMail>##EMAIL##</eMail> <emailBodyExtra></emailBodyExtra> <firstName>##NAME##</firstName> <lastName>##NAME##</lastName> <languageCode>en</languageCode> <disableEmail>false</disableEmail> <skipExternalDataValidation>false</skipExternalDataValidation> <addAndroidAppLink>false</addAndroidAppLink> <addIosAppLink>false</addIosAppLink> <addWindowsAppLink>false</addWindowsAppLink> <allowDelegation>true</allowDelegation> <allowAccessFinishedWorkstep>false</allowAccessFinishedWorkstep> <authentications /> <disposableCertificateAdditionalInformation> <countryResidence>AT</countryResidence> <phoneMobile>##PHONENUMBER##</phoneMobile> <documentType>PASS</documentType> <documentIssuedBy>Namirial</documentIssuedBy> <documentIssuedOn>2020-07-07T00:00:00Z</documentIssuedOn> <documentExpiryDate>2020-07-29T00:00:00Z</documentExpiryDate> <serialNumber>123</serialNumber> <identificationType>PASSPORT</identificationType> <identificationCountry>AT</identificationCountry> <documentNumber>123</documentNumber> <overrideOnHolderMismatch>false</overrideOnHolderMismatch> </disposableCertificateAdditionalInformation> </recipient> </recipients> </step> <step> <emailBodyExtra></emailBodyExtra> <orderIndex>2</orderIndex> <recipientType>Cc</recipientType> <useDefaultAgreements>false</useDefaultAgreements> <recipients> <recipient> <eMail>##EMAIL##</eMail> <emailBodyExtra></emailBodyExtra> <firstName>##NAME##</firstName> <lastName>##NAME##</lastName> <languageCode>en</languageCode> <disableEmail>false</disableEmail> <skipExternalDataValidation>false</skipExternalDataValidation> <addAndroidAppLink>false</addAndroidAppLink> <addIosAppLink>false</addIosAppLink> <addWindowsAppLink>false</addWindowsAppLink> <allowDelegation>false</allowDelegation> <authentications /> </recipient> </recipients> </step> </steps> <attachSignedDocumentsToEnvelopeLog>false</attachSignedDocumentsToEnvelopeLog> </envelope>
QES with Remote Certificate
If the user has a long lived certificate you can use the Digital Remote Signature option. It is similar to the disposable certificate, but you must not provide so much information, as the user is already registered. It is not required to define the User Id or Device Id, then the signer must enter the data himself.
Figure | Description |
---|---|
|
|
In the designer you must select the Digital Remote Signature for the signature type.
Figure | Description |
---|---|
|
|
Figure | Description |
---|---|
|
|
P7M Signers
The P7M signer can be defined in the recipient list (P7M Signer Type). The P7M signer has no assigned signature fields in the document, so you will not be able to assign signature fields, form fields or predefined fields for him or her.
When a workflow with a P7M signer is finished you will not receive a PDF document, but a signed P7M container with the PDF. Please see the next figure:
The workstepconfig must be extended with a invisibleSignature, Task and a document information:
<signatureTemplate> <InvisibleSig> <id>pkcs1</id> <TargetDocument> <DocRefNumber>1</DocRefNumber> <completed>0</completed> </TargetDocument> <TargetDocument> <DocRefNumber>2</DocRefNumber> <completed>0</completed> </TargetDocument> <TargetDocument> <DocRefNumber>3</DocRefNumber> <completed>0</completed> </TargetDocument> </InvisibleSig> </signatureTemplate>
Taskdefinition:
<WorkstepTasks SequenceMode="SequenceOnlyRequiredTasks"> <Task enabled="1" completed="0" required="0" id="pkcs1" displayName="" DocRefNumber="1" type="SignPkcs7" finishPercentage="0" /> </WorkstepTasks>
EnvelopeDocumentInforamtion
<WorkStepInformation> ... <EnvelopeInformation> <EnvelopeDocumentInformation numberOfPages="1" DocRefNumber="1" name="" isOptionalDocument="0" isPkcs7="0" enabled="1" /> <EnvelopeDocumentInformation numberOfPages="1" DocRefNumber="2" name="" isOptionalDocument="0" isPkcs7="0" enabled="1" /> <EnvelopeDocumentInformation numberOfPages="1" DocRefNumber="3" name="" isOptionalDocument="0" isPkcs7="0" enabled="1" /> </EnvelopeInformation> ... </WorkStepInformation>
Automatic Remote Signatures
If you create a workflow, a new type “Add Automatic” recipient is available. The automatic remote signature / eSealing is applied automatically to the document, if it is the automatic recipient turn. The workflow continues automatically with the next recipient after the automatic recipient.
- Automatic Remote Signatures / eSealing are an optional eSignAnyWhere feature
- User Managers can configure the automatic remote signature / eSealing profiles in the Organization settings page, when they have enabled the user option “Allow Automatic eSealing”
- Power use can use the automatic remote signature / eSealing profiles, if they have the user option “Allow Automatic eSealing” enabled
1) Automatic Remote Signature Profiles
The profiles for automatic remote signatures are managed via the organization’s settings page (so only by user managers). For creating an automatic remote signature profile you need a description (e.g. name), the username and the password.
Attention: if a power user wants to use the automatic remote signatures, the user must have enabled the user right “” (see “Settings” > “Users”).
2) User Settings
User must have enabled the option “Allow automatic eSealing” to use the automatic remote signatures / eSealing within a workflow.
Figure | Description |
---|---|
|
|
3) Creating a workflow with automatic remote signatures
In the eSAW UI you can add an automatic signer / eSealing via button in the recipient list “Add Automatic”. Then the profile must be selected for the automatic signature / eSealing. Attention: the power user must have the right “Allow automatic eSealing” enabled (see “Settings” > “Users”).
Figure | Description |
---|---|
|
|
Creating the Automatic Remote Signature Recipient via API
Via API you have to use a new recipient type (“Automatic”). Moreover the workstepConfiguration must contain information about the automatic remote signature. As additional option, you can use more than one profile for the workstep configuration at once via API. Note: this leads to a missing information in eSAW UI!
1) Envelope XML with new recipient type “Automatic”
<envelope> ... <steps> <step> <emailBodyExtra></emailBodyExtra> <orderIndex>1</orderIndex> <recipientType>Automatic</recipientType> <workstepConfiguration skipThirdPartyChecks="0"> ... </workstepConfiguration> </step> </steps> </envelope>
2) Workstep Configuration
2.1) Define Signature Field in WorkstepConfiguration
<sig id="GENERIC_SIG_IDENTIFIER"> <DocRefNumber>1</DocRefNumber> <param name="enabled">1</param> <AllowedSignatureTypes> <sigType id="automatic" type="AutomaticSignature" preferred="0"> <trModType>RemoteSignature</trModType> <ImageRenderingLanguage>en</ImageRenderingLanguage> <SealingProfileId>SEALING_PROFILE_IDENTIFIER_FROM_ORGANIZATION_SETTINGS</SealingProfileId> </sigType> </AllowedSignatureTypes> </sig>
The sealing profile identifier can be found in the organization settings page at the automatic remote signature settings (Identifier).
2.3) Finalize Action in WorkstepConfiguration Policy
<Policy version="1.1.0.0"> <FinalizeActions> <AutomaticSignature sigId="GENERIC_SIG_IDENTIFIER" /> </FinalizeActions> </Policy>
A-Trust
In this section you can find the configuration for the A-Trust signature. First we have to upload a PDF with the API call UploadTemporarySspFile_v1. After uploading the document we can now send the document with the following workstep configuration to define the A-Trust signature:
<envelope>
<name>eSignAnyWhere Tutorial</name>
<eMailSubject>Document of eSignAnyWhere Tutorial</eMailSubject>
<eMailBody>Dear #RecipientFirstName#! Please sign this tutorial document.</eMailBody>
<enableReminders>True</enableReminders>
<firstReminderDayAmount>1</firstReminderDayAmount>
<recurrentReminderDayAmount>1</recurrentReminderDayAmount>
<beforeExpirationReminderDayAmount>1</beforeExpirationReminderDayAmount>
<daysUntilExpire>2</daysUntilExpire>
<!-- callback to your backend system on a completed envelope
<callbackUrl>http://172.16.17.78:57550/default.aspx?EnvelopeId=##EnvelopeId##&myParamForMe=1234</callbackUrl>
-->
<callbackUrl />
<steps>
<step>
<emailBodyExtra />
<orderIndex>1</orderIndex>
<recipientType>Signer</recipientType>
<recipients>
<recipient>
<languageCode>en</languageCode>
<eMail>##EMAIL##</eMail>
<firstName>Alice</firstName>
<lastName>Somename</lastName>
</recipient>
</recipients>
<workstepConfiguration>
<WorkstepLabel />
<SmallTextZoomFactorPercent>100</SmallTextZoomFactorPercent>
<WorkstepTimeToLiveInMinutes>11520</WorkstepTimeToLiveInMinutes>
<FinishAction />
<signatureTemplate>
<version>1.2.0.2</version>
<positionUnits>PdfUnits</positionUnits>
<positionReferenceCorner>Lower_Left</positionReferenceCorner>
<sig id="1">
<positionPage>1</positionPage>
<DocRefNumber>1</DocRefNumber>
<positionX>10</positionX>
<positionY>10</positionY>
<width>200</width>
<height>50</height>
<param name="enabled">1</param>
<param name="completed">0</param>
<param name="sigType">ExternalSigningProcess</param>
<param name="positioning">onPage</param>
<param name="trModType">ATrustHandySignatur</param>
<param name="aTrustTemplateId">4246</param>
</sig>
</signatureTemplate>
<receiverInformation>
<userInformation>
<firstName>FirstName</firstName>
<lastName>LastName</lastName>
<eMail />
</userInformation>
<aTrustCertificateData>
<!--Used to prefill the phone number for A-Trust Handysignatur-->
<phonenumber>##phone number##</phonenumber>
</aTrustCertificateData>
<!--Defines, if the disclaimer for Namirial disposable certificates should be shown.-->
<showNamirialDisposableDisclaimer>0</showNamirialDisposableDisclaimer>
</receiverInformation>
<Policy version="1.1.0.0">
<GeneralPolicies>
</GeneralPolicies>
<TypewriterAnnotationTaskInfo />
<WorkstepTasks SequenceMode="SequenceOnlyRequiredTasks" originalSequenceMode="SequenceOnlyRequiredTasks">
<Task enabled="1" completed="0" required="1" id="1" displayName="SignField 1" DocRefNumber="1" type="SignField" internalAllConcernedDocRefNumbersList="1" allRequiredFieldsFilledOnWorkstepCreation="0" />
</WorkstepTasks>
</Policy>
<TransactionCodeConfigurations>
<TransactionCodeConfiguration trConfId="">
<Message>Please sign the document with the transactionId {tId} with the code: {Token}</Message>
<hashAlgorithmIdentifier>Sha256</hashAlgorithmIdentifier>
</TransactionCodeConfiguration>
<TransactionCodeConfiguration trConfId="Trans1">
<Message>Please accept the transactionId {tId} with the code: {Token}</Message>
<hashAlgorithmIdentifier>Sha256</hashAlgorithmIdentifier>
</TransactionCodeConfiguration>
</TransactionCodeConfigurations>
</workstepConfiguration>
</step>
<step>
<emailBodyExtra />
<orderIndex>2</orderIndex>
<recipientType>CC</recipientType>
<recipients>
<recipient>
<languageCode>en</languageCode>
<eMail>##EMAIL##</eMail>
<firstName>Charly</firstName>
<lastName>Randomname</lastName>
</recipient>
</recipients>
</step>
</steps>
</envelope>
The highlighted code shows where you can find the configuration of the signature. The second highlighted code shows the configuration of the phone number for the recipient. If you enter the phone number then the recipient can not enter another number. However, if you do not define a phone number then the recipient is free to choose a phone number of their choice.
BankID
In this section you can find the configuration for the bankID signature. First we have to upload a PDF. After uploading the document we can now send the document with the following workstep configuration to define the bankID signature:
{ "Name": "test", "EmailSubject": "Please sign the enclosed envelope", "EmailBody": "Dear #RecipientFirstName# #RecipientLastName#\n\n#PersonalMessage#\n\nPlease sign the envelope #EnvelopeName#\n\nEnvelope will expire at #ExpirationDate#", "DisplayedEmailSender": "##SENDER##", "EnableReminders": true, "FirstReminderDayAmount": 5, "RecurrentReminderDayAmount": 3, "BeforeExpirationDayAmount": 3, "DaysUntilExpire": 28, "CallbackUrl": "", "StatusUpdateCallbackUrl": "", "LockFormFieldsAtEnvelopeFinish": true, "Steps": [ { "OrderIndex": 1, "Recipients": [ { "Email": "##EMAIL##", "FirstName": "##NAME##", "LastName": "##NAME##", "LanguageCode": "en", "EmailBodyExtra": "", "DisableEmail": false, "AddAndroidAppLink": false, "AddIosAppLink": false, "AddWindowsAppLink": false, "AllowDelegation": false, "AllowAccessFinishedWorkstep": false, "SkipExternalDataValidation": false, "AuthenticationMethods": [] } ], "EmailBodyExtra": "", "RecipientType": "Signer", "WorkstepConfiguration": { "WorkstepLabel": "test", "SmallTextZoomFactorPercent": 100, "FinishAction": { "ServerActions": [], "ClientActions": [ { "RemoveDocumentFromRecentDocumentList": false, "CallClientActionOnlyAfterSuccessfulSync": true, "ClientName": "SIGNificant SignAnywhere", "CloseApp": false, "Action": "https://www.esignanywhere.net/" } ] }, "ReceiverInformation": { "UserInformation": { "FirstName": "##NAME##", "LastName": "##NAME##", "EMail": "##EMAIL##" }, "TransactionCodePushPluginData": [] }, "SenderInformation": { "UserInformation": { "FirstName": "##NAME##", "LastName": "##NAME##", "EMail": "##EMAIL##" } }, "TransactionCodeConfigurations": [ { "Id": "", "HashAlgorithmIdentifier": "Sha1", "Texts": [ { "Value": "Please sign the document" } ] }, { "Id": "otpSignatureSmsText", "HashAlgorithmIdentifier": "Sha256", "Texts": [ ] } ], "SignatureConfigurations": [], "ViewerPreferences": { "FinishWorkstepOnOpen": false, "VisibleAreaOptions": { "AllowedDomain": "*", "Enabled": false } }, "ResourceUris": {}, "AuditingToolsConfiguration": { "WriteAuditTrail": false, "NotificationConfiguration": {} }, "Policy": { "GeneralPolicies": { "AllowSaveDocument": true, "AllowSaveAuditTrail": true, "AllowRotatingPages": false, "AllowEmailDocument": true, "AllowPrintDocument": true, "AllowFinishWorkstep": true, "AllowRejectWorkstep": true, "AllowRejectWorkstepDelegation": false, "AllowUndoLastAction": true, "AllowAdhocPdfAttachments": false, "AllowAdhocSignatures": false, "AllowAdhocStampings": false, "AllowAdhocFreeHandAnnotations": false, "AllowAdhocTypewriterAnnotations": false, "AllowAdhocPictureAnnotations": false, "AllowAdhocPdfPageAppending": false }, "WorkstepTasks": { "PictureAnnotationMinResolution": 0, "PictureAnnotationMaxResolution": 0, "PictureAnnotationColorDepth": "Color16M", "SequenceMode": "SequenceOnlyRequiredTasks", "PositionUnits": "PdfUnits", "ReferenceCorner": "Lower_Left", "Tasks": [ { "PositionPage": 1, "Position": { "PositionX": 10.0, "PositionY": 10.0 }, "Size": { "Height": 50.0, "Width": 200.0 }, "AdditionalParameters": [ { "Key": "sigType", "Value": "TransactionCode" }, { "Key": "trModType", "Value": "BankIdSignature" }, { "Key": "trValidityInSeconds", "Value": "60" }, { "Key": "ly", "Value": "bankId" } ], "AllowedSignatureTypes": [], "UseTimestamp": false, "IsRequired": true, "Id": "1", "DisplayName": "SignField 1", "DocRefNumber": 1, "DiscriminatorType": "Signature" } ] } }, "Navigation": { "HyperLinks": [], "Links": [], "LinkTargets": [] } }, "DocumentOptions": [ { "DocumentReference": "1", "IsHidden": false } ], "UseDefaultAgreements": true }, { "OrderIndex": 2, "Recipients": [ { "Email": "##EMAIL##", "FirstName": "##NAME##", "LastName": "##NAME##", "LanguageCode": "en", "EmailBodyExtra": "", "DisableEmail": false, "AddAndroidAppLink": false, "AddIosAppLink": false, "AddWindowsAppLink": false, "AllowDelegation": false, "AllowAccessFinishedWorkstep": false, "SkipExternalDataValidation": false, "AuthenticationMethods": [] } ], "EmailBodyExtra": "", "RecipientType": "Cc", "DocumentOptions": [ { "DocumentReference": "1", "IsHidden": false } ], "UseDefaultAgreements": false } ], "AddFormFields": { "Forms": {} }, "OverrideFormFieldValues": { "Forms": {} }, "AttachSignedDocumentsToEnvelopeLog": false }
<envelope> <name>test</name> <eMailSubject>Please sign the enclosed envelope</eMailSubject> <eMailBody>Dear #RecipientFirstName# #RecipientLastName# #PersonalMessage# Please sign the envelope #EnvelopeName# Envelope will expire at #ExpirationDate#</eMailBody> <enableReminders>true</enableReminders> <firstReminderDayAmount>5</firstReminderDayAmount> <recurrentReminderDayAmount>3</recurrentReminderDayAmount> <beforeExpirationReminderDayAmount>3</beforeExpirationReminderDayAmount> <daysUntilExpire>28</daysUntilExpire> <callbackUrl></callbackUrl> <statusUpdateCallbackUrl></statusUpdateCallbackUrl> <lockFormFieldsAtEnvelopeFinish>true</lockFormFieldsAtEnvelopeFinish> <displayedEmailSender></displayedEmailSender> <steps> <step> <emailBodyExtra></emailBodyExtra> <orderIndex>1</orderIndex> <recipientType>Signer</recipientType> <useDefaultAgreements>true</useDefaultAgreements> <documentOptions> <documentOption docRef="1"> <isHidden>false</isHidden> </documentOption> </documentOptions> <workstepConfiguration skipThirdPartyChecks="0"> <WorkstepLabel>test</WorkstepLabel> <SmallTextZoomFactorPercent>100</SmallTextZoomFactorPercent> <WorkstepTimeToLiveInMinutes>44650</WorkstepTimeToLiveInMinutes> <AbsoluteExpiryDate>2020-07-13T09:11:44.7415636Z</AbsoluteExpiryDate> <FinishAction> <ClientAction clientName="SIGNificant SignAnywhere" closeApp="0" RemoveDocumentFromRecentDocumentList="0" CallClientActionOnlyAfterSuccessfulSync="1">https://www.esignanywhere.net/</ClientAction> </FinishAction> <ViewerPreferences> <SendVisibleArea allowedDomain="*">0</SendVisibleArea> <FinishWorkstepOnOpen>0</FinishWorkstepOnOpen> </ViewerPreferences> <Policy version="1.1.0.0"> <AdhocPolicies> <AllowModificationsAfterSignature>1</AllowModificationsAfterSignature> </AdhocPolicies> <GeneralPolicies> <AllowAdhocFreeHandAnnotations>0</AllowAdhocFreeHandAnnotations> <AllowAdhocPdfAttachments>0</AllowAdhocPdfAttachments> <AllowAdhocPdfPageAppending>0</AllowAdhocPdfPageAppending> <AllowAdhocPictureAnnotations>0</AllowAdhocPictureAnnotations> <AllowAdhocSignatures>0</AllowAdhocSignatures> <AllowAdhocStampings>0</AllowAdhocStampings> <AllowAdhocTypewriterAnnotations>0</AllowAdhocTypewriterAnnotations> <AllowEmailDocument>1</AllowEmailDocument> <AllowFinishWorkstep>1</AllowFinishWorkstep> <AllowPrintDocument>1</AllowPrintDocument> <AllowRejectWorkstep>1</AllowRejectWorkstep> <AllowSaveAuditTrail>1</AllowSaveAuditTrail> <AllowSaveDocument>1</AllowSaveDocument> <AllowUndoLastAction>1</AllowUndoLastAction> <AllowRotatingPages>0</AllowRotatingPages> <AllowRejectWorkstepDelegation>0</AllowRejectWorkstepDelegation> </GeneralPolicies> <WorkstepTasks SequenceMode="SequenceOnlyRequiredTasks" originalSequenceMode="SequenceOnlyRequiredTasks"> <Task enabled="1" completed="0" required="1" id="1" displayName="SignField 1" DocRefNumber="1" type="SignField" internalAllConcernedDocRefNumbersList="1" allRequiredFieldsFilledOnWorkstepCreation="0" /> </WorkstepTasks> </Policy> <Navigation /> <timeCreated>2020-07-13T09:01:44.7103136Z</timeCreated> <TransactionCodeConfigurations> <TransactionCodeConfiguration trConfId=""> <Message>Please sign the document</Message> <hashAlgorithmIdentifier>Sha1</hashAlgorithmIdentifier> </TransactionCodeConfiguration> </TransactionCodeConfigurations> <receiverInformation> <userInformation> <firstName>##NAME##</firstName> <lastName>##NAME##</lastName> <eMail>##EMAIL##</eMail> </userInformation> <showNamirialDisposableDisclaimer>1</showNamirialDisposableDisclaimer> </receiverInformation> <senderInformation> <userInformation> <firstName>##NAME##</firstName> <lastName>##NAME##</lastName> <eMail>##EMAIL##</eMail> </userInformation> </senderInformation> <pdfForms isEditingAllowed="0" /> <TypewriterAnnotationTaskInfo /> <attachmentFields /> <signatureTemplate> <version>1.2.0.2</version> <positionUnits>PdfUnits</positionUnits> <positionReferenceCorner>Lower_Left</positionReferenceCorner> <sig id="1"> <positionPage>1</positionPage> <DocRefNumber>1</DocRefNumber> <positionX>10</positionX> <positionY>10</positionY> <width>200</width> <height>50</height> <param name="sigType">TransactionCode</param> <param name="trModType">BankIdSignature</param> <param name="trValidityInSeconds">60</param> <param name="ly">bankId</param> </sig> </signatureTemplate> <AuditingToolsConfiguration WriteAuditTrail="0"> <NotificationConfiguration /> </AuditingToolsConfiguration> <resourceUris /> <LoggingMetaInformation> <envelopeId>##ENVELOPE##</envelopeId> <envelopeRecipientId>##RECIPIENT##</envelopeRecipientId> </LoggingMetaInformation> </workstepConfiguration> <recipients> <recipient> <eMail>##EMAIL##</eMail> <emailBodyExtra></emailBodyExtra> <firstName>##NAME##</firstName> <lastName>##NAME##</lastName> <languageCode>en</languageCode> <disableEmail>false</disableEmail> <skipExternalDataValidation>false</skipExternalDataValidation> <addAndroidAppLink>false</addAndroidAppLink> <addIosAppLink>false</addIosAppLink> <addWindowsAppLink>false</addWindowsAppLink> <allowDelegation>false</allowDelegation> <allowAccessFinishedWorkstep>false</allowAccessFinishedWorkstep> </recipient> </recipients> </step> <step> <emailBodyExtra></emailBodyExtra> <orderIndex>2</orderIndex> <recipientType>Cc</recipientType> <useDefaultAgreements>false</useDefaultAgreements> <recipients> <recipient> <eMail>##EMAIL##</eMail> <emailBodyExtra></emailBodyExtra> <firstName>##NAME##</firstName> <lastName>##NAME##</lastName> <languageCode>en</languageCode> <disableEmail>false</disableEmail> <skipExternalDataValidation>false</skipExternalDataValidation> <addAndroidAppLink>false</addAndroidAppLink> <addIosAppLink>false</addIosAppLink> <addWindowsAppLink>false</addWindowsAppLink> <allowDelegation>false</allowDelegation> <authentications /> </recipient> </recipients> </step> </steps> <attachSignedDocumentsToEnvelopeLog>false</attachSignedDocumentsToEnvelopeLog> </envelope>
In this section you can find the bankID authentication method:
"AuthenticationMethods": [ { "Method": "BankId", "Parameter": "##Parameter##" } ]
<authentications> <authentication> <method>BankId</method> <parameter>##parameter##</parameter> </authentication> </authentications>
Generic Signing Plugin
In this section you can find the configuration for the generic signing plugin signature. First we have to upload a PDF. After uploading the document we can now send the document with the following workstep configuration to define the plugin signature:
{ "SspFileIds": [ "##FileId##" ], "SendEnvelopeDescription": { "Name": "test", "EmailSubject": "Please sign the enclosed envelope", "EmailBody": "Dear #RecipientFirstName# #RecipientLastName#\n\n#PersonalMessage#\n\nPlease sign the envelope #EnvelopeName#\n\nEnvelope will expire at #ExpirationDate#", "DisplayedEmailSender": "", "EnableReminders": true, "FirstReminderDayAmount": 5, "RecurrentReminderDayAmount": 3, "BeforeExpirationDayAmount": 3, "DaysUntilExpire": 28, "CallbackUrl": "", "StatusUpdateCallbackUrl": "", "Steps": [ { "OrderIndex": 1, "Recipients": [ { "Email": "##Email##", "FirstName": "##name##", "LastName": "##name##", "LanguageCode": "en", "EmailBodyExtra": "", "DisableEmail": false, "AddAndroidAppLink": false, "AddIosAppLink": false, "AddWindowsAppLink": false, "AllowDelegation": false, "SkipExternalDataValidation": false, "AuthenticationMethods": [], "BankIdPluginData" : { "TrBiPersonalNumber": "##PersonalNumber##", "TrBiAllowAnyPersonalNumber": false } } ], "EmailBodyExtra": "", "RecipientType": "Signer", "WorkstepConfiguration": { "WorkstepLabel": "test", "ReceiverInformation": { "GenericSigningPluginDataList": [{ "PluginId": "GenericSigningPluginForTests", "SenderDataFields": { "Fields": [{ "Key": "customEmail", "Value": "##customEmail##" },{ "Key": "userId", "Value": "##UserId##" },{ "Key": "email", "Value": "##Email##" },{ "Key": "password", "Value": "##Password##" },{ "Key": "number", "Value": "##Number##" },{ "Key": "phoneNumber", "Value": "##Number##" },{ "Key": "list", "Value": "app" }] } }] }, "SmallTextZoomFactorPercent": 100, "FinishAction": { "ServerActions": [], "ClientActions": [ { "RemoveDocumentFromRecentDocumentList": false, "CallClientActionOnlyAfterSuccessfulSync": true, "ClientName": "SIGNificant SignAnywhere", "CloseApp": false, "Action": "https://www.esignanywhere.net/" } ] }, "Policy": { "GeneralPolicies": { "AllowSaveDocument": true, "AllowSaveAuditTrail": true, "AllowRotatingPages": false, "AllowEmailDocument": true, "AllowPrintDocument": true, "AllowFinishWorkstep": true, "AllowRejectWorkstep": true, "AllowRejectWorkstepDelegation": false, "AllowUndoLastAction": true, "AllowAdhocPdfAttachments": false, "AllowAdhocSignatures": false, "AllowAdhocStampings": false, "AllowAdhocFreeHandAnnotations": false, "AllowAdhocTypewriterAnnotations": false, "AllowAdhocPictureAnnotations": false, "AllowAdhocPdfPageAppending": false }, "WorkstepTasks": { "PictureAnnotationMinResolution": 0, "PictureAnnotationMaxResolution": 0, "PictureAnnotationColorDepth": "Color16M", "SequenceMode": "NoSequenceEnforced", "PositionUnits": "PdfUnits", "ReferenceCorner": "Lower_Left", "Tasks": [ { "PositionPage": 1, "Position": { "PositionX": 70.0, "PositionY": 606.0 }, "Size": { "Height": 80.0, "Width": 191.0 }, "AdditionalParameters": [ { "Key": "enabled", "Value": "1" }, { "Key": "positioning", "Value": "onPage" }, { "Key": "req", "Value": "1" }, { "Key": "fd", "Value": "" }, { "Key": "fd_dateformat", "Value": "dd-MM-yyyy HH:mm:ss" }, { "Key": "fd_timezone", "Value": "datetimeutc" }, { "Key": "spcId", "Value": "padesSigningId" } ], "AllowedSignatureTypes": [ { "Id": "8e4ce7e9-b70b-464b-861e-8429239ef474", "DiscriminatorType": "SigTypeGenericSigningPlugin", "PluginId": "GenericSigningPluginForTests" } ], "UseTimestamp": false, "IsRequired": true, "Id": "1#XyzmoDuplicateIdSeperator#Signature_a48a82a2-0bd3-1e9e-c223-64ad308bf715", "DisplayName": "", "DocRefNumber": 1, "DiscriminatorType": "Signature" } ] } } }, "DocumentOptions": [ { "DocumentReference": "1", "IsHidden": false } ], "UseDefaultAgreements": true } ] } }
<envelope> <name>test</name> <eMailSubject>Please sign the enclosed envelope</eMailSubject> <eMailBody>Dear #RecipientFirstName# #RecipientLastName# #PersonalMessage# Please sign the envelope #EnvelopeName# Envelope will expire at #ExpirationDate#</eMailBody> <enableReminders>true</enableReminders> <firstReminderDayAmount>5</firstReminderDayAmount> <recurrentReminderDayAmount>3</recurrentReminderDayAmount> <beforeExpirationReminderDayAmount>3</beforeExpirationReminderDayAmount> <daysUntilExpire>28</daysUntilExpire> <callbackUrl></callbackUrl> <statusUpdateCallbackUrl></statusUpdateCallbackUrl> <lockFormFieldsAtEnvelopeFinish>false</lockFormFieldsAtEnvelopeFinish> <displayedEmailSender>##Email##</displayedEmailSender> <steps> <step> <emailBodyExtra></emailBodyExtra> <orderIndex>1</orderIndex> <recipientType>Signer</recipientType> <useDefaultAgreements>true</useDefaultAgreements> <documentOptions> <documentOption docRef="1"> <isHidden>false</isHidden> </documentOption> </documentOptions> <workstepConfiguration skipThirdPartyChecks="0"> <WorkstepLabel>test</WorkstepLabel> <SmallTextZoomFactorPercent>100</SmallTextZoomFactorPercent> <WorkstepTimeToLiveInMinutes>43200</WorkstepTimeToLiveInMinutes> <FinishAction> <ClientAction clientName="SIGNificant SignAnywhere" closeApp="0" RemoveDocumentFromRecentDocumentList="0" CallClientActionOnlyAfterSuccessfulSync="1">https://www.esignanywhere.net/</ClientAction> </FinishAction> <signatureTemplate> <sig id="1#XyzmoDuplicateIdSeperator#Signature_a48a82a2-0bd3-1e9e-c223-64ad308bf715" useTimestamp="false"> <positionPage>1</positionPage> <DocRefNumber>1</DocRefNumber> <positionX>70</positionX> <positionY>606</positionY> <width>191</width> <height>80</height> <param name="enabled">1</param> <param name="positioning">onPage</param> <param name="req">1</param> <param name="fd"></param> <param name="fd_dateformat">dd-MM-yyyy HH:mm:ss</param> <param name="fd_timezone">datetimeutc</param> <AllowedSignatureTypes> <sigType id="8e4ce7e9-b70b-464b-861e-8429239ef474" type="GenericSigningPlugin" preferred="0"> <genericSigningPluginId>GenericSigningPluginForTests</genericSigningPluginId> </sigType> </AllowedSignatureTypes> </sig> <positionUnits>PdfUnits</positionUnits> <positionReferenceCorner>Lower_Left</positionReferenceCorner> </signatureTemplate> <PictureAnnotationTaskInfo> <MinResolution>0</MinResolution> <MaxResolution>0</MaxResolution> <ColorDepth>Color16M</ColorDepth> </PictureAnnotationTaskInfo> <Policy version="1.1.0.0"> <GeneralPolicies> <AllowSaveDocument>1</AllowSaveDocument> <AllowSaveAuditTrail>1</AllowSaveAuditTrail> <AllowRotatingPages>0</AllowRotatingPages> <AllowAppendFileToWorkstep>0</AllowAppendFileToWorkstep> <AllowAppendTasksToWorkstep>0</AllowAppendTasksToWorkstep> <AllowEmailDocument>1</AllowEmailDocument> <AllowPrintDocument>1</AllowPrintDocument> <AllowFinishWorkstep>1</AllowFinishWorkstep> <AllowRejectWorkstep>1</AllowRejectWorkstep> <AllowRejectWorkstepDelegation>0</AllowRejectWorkstepDelegation> <AllowUndoLastAction>1</AllowUndoLastAction> <AllowColorizePdfForms>0</AllowColorizePdfForms> <AllowAdhocPdfAttachments>0</AllowAdhocPdfAttachments> <AllowAdhocSignatures>0</AllowAdhocSignatures> <AllowAdhocStampings>0</AllowAdhocStampings> <AllowAdhocFreeHandAnnotations>0</AllowAdhocFreeHandAnnotations> <AllowAdhocTypewriterAnnotations>0</AllowAdhocTypewriterAnnotations> <AllowAdhocPictureAnnotations>0</AllowAdhocPictureAnnotations> <AllowAdhocPdfPageAppending>0</AllowAdhocPdfPageAppending> </GeneralPolicies> <WorkstepTasks SequenceMode="NoSequenceEnforced"> <Task enabled="0" completed="0" required="1" id="1#XyzmoDuplicateIdSeperator#Signature_a48a82a2-0bd3-1e9e-c223-64ad308bf715" displayName="" DocRefNumber="1" type="SignField" /> </WorkstepTasks> </Policy> <timeCreated /> <TransactionCodeConfigurations> <TransactionCodeConfiguration trConfId="smsAuthTransactionCodeId" language=""> </TransactionCodeConfiguration> </TransactionCodeConfigurations> <ViewerPreferences /> <receiverInformation> <userInformation> <firstName>##FirstName##</firstName> <lastName>##LastName##</lastName> <eMail>##Email##</eMail> </userInformation> <showNamirialDisposableDisclaimer>1</showNamirialDisposableDisclaimer> <genericSigningPluginData pluginId="GenericSigningPluginForTests"> <senderDataFields> <recipientemail>##Email##</recipientemail> <recipientfirstname>##FirstName##</recipientfirstname> <customEmail>##Email##</customEmail> <userId>##UserId##</userId> <email>##Email##</email> <password>##Password##</password> <number>##Number##</number> <phoneNumber>+##PhoneNumber##</phoneNumber> <list>app</list> </senderDataFields> </genericSigningPluginData> </receiverInformation> <senderInformation> <userInformation> <firstName>##FirstName##</firstName> <lastName>##LastName##</lastName> <eMail>##Email##</eMail> </userInformation> </senderInformation> </workstepConfiguration> <recipients> <recipient> <eMail>##Email##</eMail> <emailBodyExtra></emailBodyExtra> <firstName>##FirstName##</firstName> <lastName>##LastName##</lastName> <languageCode>en</languageCode> <disableEmail>false</disableEmail> <skipExternalDataValidation>false</skipExternalDataValidation> <addAndroidAppLink>false</addAndroidAppLink> <addIosAppLink>false</addIosAppLink> <addWindowsAppLink>false</addWindowsAppLink> <allowDelegation>false</allowDelegation> <allowAccessFinishedWorkstep>false</allowAccessFinishedWorkstep> <authentications /> </recipient> </recipients> </step> </steps> <attachSignedDocumentsToEnvelopeLog>false</attachSignedDocumentsToEnvelopeLog> </envelope>
Generic Signing Plugin (automatic)
In this section you can find the configuration for an automatic generic signing plugin signature. Please see the following workstep configuration for more information:
{ "SspFileIds": ["##SspFileId##"], "SendEnvelopeDescription": { "Name": "GenericSigningPluginForTests", "EmailSubject": "*GenericSigningPluginForTests*", "EmailBody": "*Please sign the document*", "Steps": [{ "OrderIndex": 1, "Recipients": [{ "Email": "##PlaceholderEmail##", "FirstName": "_PlaceHolderFirstName", "LastName": "_PlaceHolderLastName", "LanguageCode": "en", "DisableEmail": true, "AddAndroidAppLink": false, "AddIosAppLink": false, "AddWindowsAppLink": false, "AllowDelegation": false, "SkipExternalDataValidation": true }], "RecipientType": "Automatic", "WorkstepConfiguration": { "WorkstepLabel": "Automatic", "SkipThirdPartyChecks": false, "SmallTextZoomFactorPercent": 100, "WorkstepTimeToLiveInMinutes": 44650, "ViewerPreferences": { "FinishWorkstepOnOpen": false }, "Policy": { "WorkstepTasks": { "SequenceMode": "NoSequenceEnforced", "PositionUnits": "PdfUnits", "ReferenceCorner": "Lower_Left", "Tasks": [{ "DiscriminatorType": "Signature", "Id": "c5d2b3a5-afd1-4794-b8c8-c3f9c0755b75", "DocRefNumber": 1, "PositionPage": 1, "Position": { "PositionX": 0.0, "PositionY": 0.0 }, "Size": { "Height": 80.0, "Width": 190.0 }, "AdditionalParameters": [{ "Key": "req", "Value": "1" }, { "Key": "positioning", "Value": "onPage" }, { "Key": "enabled", "Value": "1" }], "AllowedSignatureTypes": [{ "DiscriminatorType": "SigTypeAutomaticSignature", "Id": "SignFor_c5d2b3a5-afd1-4794-b8c8-c3f9c0755b75", "GenericSigningPluginId": "GenericSigningPluginForTests", "SealingProfileId": "##SealingProfileId##" }] }] }, "FinalizeActions": { "FinalizeActionList": [{ "DiscriminatorType": "AutomaticSignature", "SigId": "c5d2b3a5-afd1-4794-b8c8-c3f9c0755b75" }] } } } }] } }
<envelope> <name>GenericSigningPluginForTests</name> <eMailSubject>*GenericSigningPluginForTests*</eMailSubject> <eMailBody>*Please sign the document*</eMailBody> <enableReminders>true</enableReminders> <firstReminderDayAmount>5</firstReminderDayAmount> <recurrentReminderDayAmount>3</recurrentReminderDayAmount> <beforeExpirationReminderDayAmount>3</beforeExpirationReminderDayAmount> <daysUntilExpire>28</daysUntilExpire> <callbackUrl></callbackUrl> <statusUpdateCallbackUrl></statusUpdateCallbackUrl> <lockFormFieldsAtEnvelopeFinish>false</lockFormFieldsAtEnvelopeFinish> <displayedEmailSender>##Email##</displayedEmailSender> <steps> <step> <emailBodyExtra></emailBodyExtra> <orderIndex>1</orderIndex> <recipientType>Automatic</recipientType> <useDefaultAgreements>true</useDefaultAgreements> <documentOptions> <documentOption docRef="1"> <isHidden>false</isHidden> </documentOption> </documentOptions> <workstepConfiguration skipThirdPartyChecks="0"> <WorkstepLabel>Generic Signing Plugin</WorkstepLabel> <SmallTextZoomFactorPercent>100</SmallTextZoomFactorPercent> <WorkstepTimeToLiveInMinutes>43200</WorkstepTimeToLiveInMinutes> <signatureTemplate> <sig id="c5d2b3a5-afd1-4794-b8c8-c3f9c0755b75"> <positionPage>1</positionPage> <DocRefNumber>1</DocRefNumber> <positionX>0</positionX> <positionY>0</positionY> <width>190</width> <height>80</height> <param name="req">1</param> <param name="positioning">onPage</param> <param name="enabled">1</param> <AllowedSignatureTypes> <sigType id="SignFor_c5d2b3a5-afd1-4794-b8c8-c3f9c0755b75" type="AutomaticSignature" preferred="0"> <trModType /> <SealingProfileId>##SealingProfileId##</SealingProfileId> <genericSigningPluginId>GenericSigningPluginForTests</genericSigningPluginId> </sigType> </AllowedSignatureTypes> <param name="spcId">automaticSigningId</param> </sig> <positionUnits>PdfUnits</positionUnits> <positionReferenceCorner>Lower_Left</positionReferenceCorner> </signatureTemplate> <PictureAnnotationTaskInfo> <MinResolution>-1</MinResolution> <MaxResolution>-1</MaxResolution> <ColorDepth>Color16M</ColorDepth> </PictureAnnotationTaskInfo> <Policy version="1.1.0.0"> <GeneralPolicies> <AllowSaveDocument>1</AllowSaveDocument> <AllowSaveAuditTrail>1</AllowSaveAuditTrail> <AllowRotatingPages>1</AllowRotatingPages> <AllowAppendFileToWorkstep>0</AllowAppendFileToWorkstep> <AllowAppendTasksToWorkstep>0</AllowAppendTasksToWorkstep> <AllowEmailDocument>1</AllowEmailDocument> <AllowFinishWorkstep>1</AllowFinishWorkstep> <AllowRejectWorkstep>1</AllowRejectWorkstep> <AllowRejectWorkstepDelegation>1</AllowRejectWorkstepDelegation> <AllowUndoLastAction>1</AllowUndoLastAction> <AllowColorizePdfForms>0</AllowColorizePdfForms> <AllowAdhocPdfAttachments>1</AllowAdhocPdfAttachments> <AllowAdhocSignatures>0</AllowAdhocSignatures> <AllowAdhocStampings>0</AllowAdhocStampings> <AllowAdhocFreeHandAnnotations>0</AllowAdhocFreeHandAnnotations> <AllowAdhocTypewriterAnnotations>0</AllowAdhocTypewriterAnnotations> <AllowAdhocPictureAnnotations>0</AllowAdhocPictureAnnotations> <AllowAdhocPdfPageAppending>0</AllowAdhocPdfPageAppending> </GeneralPolicies> <WorkstepTasks SequenceMode="NoSequenceEnforced" /> <FinalizeActions> <AutomaticSignature sigId="c5d2b3a5-afd1-4794-b8c8-c3f9c0755b75" /> </FinalizeActions> </Policy> <timeCreated /> <TransactionCodeConfigurations> <TransactionCodeConfiguration trConfId="smsAuthTransactionCodeId" language=""> </TransactionCodeConfiguration> </TransactionCodeConfigurations> <ViewerPreferences> <FinishWorkstepOnOpen>0</FinishWorkstepOnOpen> </ViewerPreferences> <senderInformation> <userInformation> <firstName>##FirstName##</firstName> <lastName>##LastName##</lastName> <eMail>##Email##</eMail> </userInformation> </senderInformation> <FinishAction /> </workstepConfiguration> <recipients> <recipient> <eMail>#PlaceholderEmail##</eMail> <emailBodyExtra></emailBodyExtra> <firstName>_PlaceHolderFirstName</firstName> <lastName>_PlaceHolderFirstName</lastName> <languageCode>en</languageCode> <disableEmail>true</disableEmail> <skipExternalDataValidation>false</skipExternalDataValidation> <addAndroidAppLink>false</addAndroidAppLink> <addIosAppLink>false</addIosAppLink> <addWindowsAppLink>false</addWindowsAppLink> <allowDelegation>false</allowDelegation> <allowAccessFinishedWorkstep>false</allowAccessFinishedWorkstep> <authentications /> </recipient> </recipients> </step> </steps> <attachSignedDocumentsToEnvelopeLog>false</attachSignedDocumentsToEnvelopeLog> </envelope>
Generic Signing Plugin (Batch-Signature)
In this section you can find the configuration for a batch generic signing plugin signature. Please see the following workstep configuration for more information:
{ "SspFileIds": ["##SspFileId##"], "SendEnvelopeDescription": { "Name": "eSignAnyWhere Tutorial", "EmailSubject": "Document of eSignAnyWhere Tutorial", "EmailBody": "Dear #RecipientFirstName#! Please sign this tutorial document.", "DisplayedEmailSender": "", "EnableReminders": true, "FirstReminderDayAmount": 1, "RecurrentReminderDayAmount": 1, "BeforeExpirationDayAmount": 1, "DaysUntilExpire": 2, "CallbackUrl": "", "StatusUpdateCallbackUrl": "", "LockFormFieldsAtEnvelopeFinish": false, "Steps": [ { "OrderIndex": 1, "Recipients": [ { "Email": "##Email##", "FirstName": "##FirstName##", "LastName": "##LastName##", "LanguageCode": "en", "EmailBodyExtra": "", "DisableEmail": false, "AddAndroidAppLink": false, "AddIosAppLink": false, "AddWindowsAppLink": false, "AllowDelegation": false, "AllowAccessFinishedWorkstep": false, "SkipExternalDataValidation": false, "AuthenticationMethods": [] } ], "EmailBodyExtra": "", "RecipientType": "Signer", "WorkstepConfiguration": { "WorkstepLabel": "", "SmallTextZoomFactorPercent": 100, "FinishAction": { "ServerActions": [], "ClientActions": [] }, "ReceiverInformation": { "UserInformation": { "FirstName": "##FirstName##", "LastName": "##LastName##", "EMail": "##Email##" }, "TransactionCodePushPluginData": [], "GenericSigningPluginDataList": [ { "PluginId": "GenericSigningPluginForTests", "SenderDataFields": { "Fields": [ { "Key": "customEmail", "Value": "##Email##" }, { "Key": "userId", "Value": "##UserId##" }, { "Key": "email", "Value": "##Email##" }, { "Key": "password", "Value": "##Password##" }, { "Key": "number", "Value": "##Number##" }, { "Key": "phoneNumber", "Value": "+##PhoneNumber##" }, { "Key": "list", "Value": "app" } ] } } ] }, "SenderInformation": { "UserInformation": { "FirstName": "##FirstName##", "LastName": "##LastName##", "EMail": "##Email##" } }, "TransactionCodeConfigurations": [ { "Id": "", "HashAlgorithmIdentifier": "Sha256", "Texts": [ { "Value": "Please sign the document with the transactionId {tId} with the code: {Token}" } ] }, { "Id": "Trans1", "HashAlgorithmIdentifier": "Sha256", "Texts": [ { "Value": "Please accept the transactionId {tId} with the code: {Token}" } ] }, { "Id": "IdentityServerMail", "HashAlgorithmIdentifier": "Sha256", "Texts": [ {} ] }, { "Id": "otpSignatureSmsText", "HashAlgorithmIdentifier": "Sha256", "Texts": [ ] } ], "SignatureConfigurations": [], "ViewerPreferences": {}, "AuditingToolsConfiguration": { "WriteAuditTrail": true, "NotificationConfiguration": { } }, "Policy": { "GeneralPolicies": { "AllowSaveDocument": true, "AllowSaveAuditTrail": true, "AllowRotatingPages": true, "AllowAppendFileToWorkstep": false, "AllowAppendTaskToWorkstep": false, "AllowEmailDocument": true, "AllowPrintDocument": true, "AllowFinishWorkstep": true, "AllowRejectWorkstep": true, "AllowRejectWorkstepDelegation": false, "AllowUndoLastAction": true, "AllowColorizePdfForms": false, "AllowAdhocPdfAttachments": true, "AllowAdhocSignatures": true, "AllowAdhocStampings": true, "AllowAdhocFreeHandAnnotations": true, "AllowAdhocTypewriterAnnotations": true, "AllowAdhocPictureAnnotations": true, "AllowAdhocPdfPageAppending": true, "AllowReloadOfFinishedWorkstep": true }, "WorkstepTasks": { "PictureAnnotationMinResolution": 96, "PictureAnnotationMaxResolution": 300, "PictureAnnotationColorDepth": "Color16M", "SequenceMode": "SequenceOnlyRequiredTasks", "PositionUnits": "PdfUnits", "ReferenceCorner": "Lower_Left", "Tasks": [ { "PositionPage": 1, "Position": { "PositionX": 50.0, "PositionY": 700.0 }, "Size": { "Height": 54.85714, "Width": 240.0 }, "AdditionalParameters": [ { "Key": "enabled", "Value": "1" }, { "Key": "completed", "Value": "0" }, { "Key": "sigType", "Value": "GenericSigningPlugin" }, { "Key": "genericSigningPluginId", "Value": "GenericSigningPluginForTests" }, { "Key": "positioning", "Value": "onPage" }, { "Key": "ly", "Value": "remoteCertificate" }, { "Key": "fd", "Value": "My Field Description Text" } ], "AllowedSignatureTypes": [], "UseTimestamp": false, "IsRequired": false, "Id": "Sig1a", "DisplayName": "SignField 1", "DocRefNumber": 1, "BatchId": "batch", "DiscriminatorType": "Signature" }, { "PositionPage": 1, "Position": { "PositionX": 50.0, "PositionY": 600.0 }, "Size": { "Height": 54.85714, "Width": 240.0 }, "AdditionalParameters": [ { "Key": "enabled", "Value": "1" }, { "Key": "completed", "Value": "0" }, { "Key": "sigType", "Value": "GenericSigningPlugin" }, { "Key": "genericSigningPluginId", "Value": "GenericSigningPluginForTests" }, { "Key": "positioning", "Value": "onPage" }, { "Key": "ly", "Value": "remoteCertificate" }, { "Key": "fd", "Value": "My Field Description Text" } ], "AllowedSignatureTypes": [], "UseTimestamp": false, "IsRequired": false, "Id": "Sig1b", "DisplayName": "SignField 1", "DocRefNumber": 1, "BatchId": "batch", "DiscriminatorType": "Signature" }, { "PositionPage": 1, "Position": { "PositionX": 50.0, "PositionY": 500.0 }, "Size": { "Height": 54.85714, "Width": 240.0 }, "AdditionalParameters": [ { "Key": "enabled", "Value": "1" }, { "Key": "completed", "Value": "0" }, { "Key": "sigType", "Value": "GenericSigningPlugin" }, { "Key": "genericSigningPluginId", "Value": "GenericSigningPluginForTests" }, { "Key": "positioning", "Value": "onPage" }, { "Key": "ly", "Value": "remoteCertificate" }, { "Key": "fd", "Value": "My Field Description Text" } ], "AllowedSignatureTypes": [], "UseTimestamp": false, "IsRequired": false, "Id": "Sig1c", "DisplayName": "SignField 1", "DocRefNumber": 1, "BatchId": "batch", "DiscriminatorType": "Signature" } ] } }, "Navigation": { "HyperLinks": [], "Links": [], "LinkTargets": [] } }, "DocumentOptions": [ { "DocumentReference": "1", "IsHidden": false } ], "UseDefaultAgreements": true }, { "OrderIndex": 2, "Recipients": [ { "Email": "##Email##", "FirstName": "##FirstName##", "LastName": "##LastName##", "LanguageCode": "en", "EmailBodyExtra": "", "DisableEmail": false, "AddAndroidAppLink": false, "AddIosAppLink": false, "AddWindowsAppLink": false, "AllowDelegation": false, "AllowAccessFinishedWorkstep": false, "SkipExternalDataValidation": false, "AuthenticationMethods": [] } ], "EmailBodyExtra": "", "RecipientType": "Cc", "DocumentOptions": [ { "DocumentReference": "1", "IsHidden": false } ], "UseDefaultAgreements": true } ], "AddFormFields": { "Forms": {} }, "OverrideFormFieldValues": { "Forms": {} }, "AttachSignedDocumentsToEnvelopeLog": false } }
<envelope> <name>eSignAnyWhere Tutorial</name> <eMailSubject>Document of eSignAnyWhere Tutorial</eMailSubject> <eMailBody>Dear #RecipientFirstName#! Please sign this tutorial document.</eMailBody> <enableReminders>True</enableReminders> <firstReminderDayAmount>1</firstReminderDayAmount> <recurrentReminderDayAmount>1</recurrentReminderDayAmount> <beforeExpirationReminderDayAmount>1</beforeExpirationReminderDayAmount> <daysUntilExpire>2</daysUntilExpire> <callbackUrl /> <steps> <step> <emailBodyExtra /> <orderIndex>1</orderIndex> <recipientType>Signer</recipientType> <recipients> <recipient> <languageCode>en</languageCode> <eMail>##Email##</eMail> <firstName>##FirstName##</firstName> <lastName>##LastName##</lastName> </recipient> </recipients> <workstepConfiguration skipThirdPartyChecks="0"> <WorkstepLabel /> <SmallTextZoomFactorPercent>100</SmallTextZoomFactorPercent> <WorkstepTimeToLiveInMinutes>900</WorkstepTimeToLiveInMinutes> <FinishAction> </FinishAction> <signatureTemplate> <version>1.2.0.2</version> <positionUnits>PdfUnits</positionUnits> <positionReferenceCorner>Lower_Left</positionReferenceCorner> <sig id="Sig1a"> <positionPage>1</positionPage> <DocRefNumber>1</DocRefNumber> <positionX>50</positionX> <positionY>700</positionY> <width>240</width> <height>54.85714</height> <param name="enabled">1</param> <param name="completed">0</param> <param name="sigType">GenericSigningPlugin</param> <param name="genericSigningPluginId">GenericSigningPluginForTests</param> <param name="positioning">onPage</param> <param name="ly">remoteCertificate</param> <param name="fd">My Field Description Text</param> </sig> <sig id="Sig1b"> <positionPage>1</positionPage> <DocRefNumber>1</DocRefNumber> <positionX>50</positionX> <positionY>600</positionY> <width>240</width> <height>54.85714</height> <param name="enabled">1</param> <param name="completed">0</param> <param name="sigType">GenericSigningPlugin</param> <param name="genericSigningPluginId">GenericSigningPluginForTests</param> <param name="positioning">onPage</param> <param name="ly">remoteCertificate</param> <param name="fd">My Field Description Text</param> </sig> <sig id="Sig1c"> <positionPage>1</positionPage> <DocRefNumber>1</DocRefNumber> <positionX>50</positionX> <positionY>500</positionY> <width>240</width> <height>54.85714</height> <param name="enabled">1</param> <param name="completed">0</param> <param name="sigType">GenericSigningPlugin</param> <param name="genericSigningPluginId">GenericSigningPluginForTests</param> <param name="positioning">onPage</param> <param name="ly">remoteCertificate</param> <param name="fd">My Field Description Text</param> </sig> </signatureTemplate> <receiverInformation> <userInformation> <firstName>##FirstName##</firstName> <lastName>##LastName##</lastName> <eMail>##Email##</eMail> </userInformation> <genericSigningPluginData pluginId="GenericSigningPluginForTests"> <senderDataFields> </senderDataFields> </genericSigningPluginData> </receiverInformation> <pdfForms isEditingAllowed="1" /> <attachmentFields /> <PictureAnnotationTaskInfo> <MinResolution>96</MinResolution> <MaxResolution>300</MaxResolution> <ColorDepth>Color16M</ColorDepth> </PictureAnnotationTaskInfo> <TypewriterAnnotationTaskInfo /> <Policy version="1.1.0.0"> <GeneralPolicies> <AllowSaveDocument>1</AllowSaveDocument> <AllowSaveAuditTrail>1</AllowSaveAuditTrail> <AllowRotatingPages>1</AllowRotatingPages> <AllowAppendFileToWorkstep>0</AllowAppendFileToWorkstep> <AllowAppendTasksToWorkstep>0</AllowAppendTasksToWorkstep> <AllowEmailDocument>1</AllowEmailDocument> <AllowPrintDocument>1</AllowPrintDocument> <AllowFinishWorkstep>1</AllowFinishWorkstep> <AllowRejectWorkstep>1</AllowRejectWorkstep> <AllowRejectWorkstepDelegation>0</AllowRejectWorkstepDelegation> <AllowUndoLastAction>1</AllowUndoLastAction> <AllowColorizePdfForms>0</AllowColorizePdfForms> <AllowReloadOfFinishedWorkstep>1</AllowReloadOfFinishedWorkstep> <AllowAdhocPdfAttachments>1</AllowAdhocPdfAttachments> <AllowAdhocSignatures>1</AllowAdhocSignatures> <AllowAdhocStampings>1</AllowAdhocStampings> <AllowAdhocFreeHandAnnotations>1</AllowAdhocFreeHandAnnotations> <AllowAdhocTypewriterAnnotations>1</AllowAdhocTypewriterAnnotations> <AllowAdhocPictureAnnotations>1</AllowAdhocPictureAnnotations> <AllowAdhocPdfPageAppending>1</AllowAdhocPdfPageAppending> </GeneralPolicies> <WorkstepTasks SequenceMode="SequenceOnlyRequiredTasks"> <Task enabled="1" completed="0" required="0" id="Sig1a" displayName="SignField 1" DocRefNumber="1" type="SignField" internalAllConcernedDocRefNumbersList="1" allRequiredFieldsFilledOnWorkstepCreation="0" batchId="batch" /> <Task enabled="1" completed="0" required="0" id="Sig1b" displayName="SignField 1" DocRefNumber="1" type="SignField" internalAllConcernedDocRefNumbersList="1" allRequiredFieldsFilledOnWorkstepCreation="0" batchId="batch" /> <Task enabled="1" completed="0" required="0" id="Sig1c" displayName="SignField 1" DocRefNumber="1" type="SignField" internalAllConcernedDocRefNumbersList="1" allRequiredFieldsFilledOnWorkstepCreation="0" batchId="batch" /> </WorkstepTasks> <AdhocPolicies> <AllowModificationsAfterSignature>1</AllowModificationsAfterSignature> </AdhocPolicies> </Policy> <Navigation /> <timeCreated>2020-07-08T08:17:01.0948544Z</timeCreated> <signaturePluginConfiguration> <PdfSignatureProperties_V1> <PdfAConformant>0</PdfAConformant> <ValidateSigningCertificateName regex="(?<LastName>.*) (?<FirstName>.*)">0</ValidateSigningCertificateName> <ValidateSigningCertificateViaEutl>0</ValidateSigningCertificateViaEutl> <PAdESPart4Compliant>0</PAdESPart4Compliant> <IncludeSigningCertificateChain>0</IncludeSigningCertificateChain> <SigningCertificateRevocationInformationIncludeMode>DoNotInclude</SigningCertificateRevocationInformationIncludeMode> <SignatureTimestampData> <Password /> <SignatureHashAlgorithm>SHA1</SignatureHashAlgorithm> <Uri /> <UserName /> </SignatureTimestampData> </PdfSignatureProperties_V1> <PdfSignatureCryptographicData_V1> <SignatureHashAlgorithm>Sha256</SignatureHashAlgorithm> <SigningCertificateDescriptor> <Identifier>14527a6bcfa8b4d7d0183fca6b735b1c246d14ae</Identifier> <Type>Sha1Thumbprint</Type> <Csp>Default</Csp> </SigningCertificateDescriptor> </PdfSignatureCryptographicData_V1> </signaturePluginConfiguration> <AuditingToolsConfiguration WriteAuditTrail="1"> <NotificationConfiguration> </NotificationConfiguration> </AuditingToolsConfiguration> <TransactionCodeConfigurations> <TransactionCodeConfiguration trConfId=""> <Message>Please sign the document with the transactionId {tId} with the code: {Token}</Message> <hashAlgorithmIdentifier>Sha256</hashAlgorithmIdentifier> </TransactionCodeConfiguration> <TransactionCodeConfiguration trConfId="Trans1"> <Message>Please accept the transactionId {tId} with the code: {Token}</Message> <hashAlgorithmIdentifier>Sha256</hashAlgorithmIdentifier> </TransactionCodeConfiguration> <TransactionCodeConfiguration trConfId="IdentityServerMail"> <Subject>Message for TransactionCode</Subject> <FromAddress>##Email##</FromAddress> <TextBody>Please accept the transactionId {tId} with the code: {Token}</TextBody> <hashAlgorithmIdentifier>Sha256</hashAlgorithmIdentifier> </TransactionCodeConfiguration> </TransactionCodeConfigurations> </workstepConfiguration> </step> <step> <emailBodyExtra /> <orderIndex>2</orderIndex> <recipientType>CC</recipientType> <recipients> <recipient> <languageCode>en</languageCode> <eMail>##Email##</eMail> <firstName>##FirstName##</firstName> <lastName>##LastName##</lastName> </recipient> </recipients> </step> </steps> </envelope>
Hyperlinks
eSaw allows hyperlinks on documents. These links can be configured in the workstep configuration. For more information about the configuration please have a look at the following case: Hyperlinks
The next video shows how these links look like on the document and how they work.