Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

This page will show you how to integrate eSignAnyWhere into your own products and systems. Moreover, some additional use cases are described:

  • Basic Integration: Integrate eSignAnyWhere as middleware for remote signing
  • Advanced Integration
    • In-Person Signing with SIGNificant Apps/Products
    • Integrate remote signing into your own (native) mobile Apps
    • Integrate remote signing into your own web portal
    • Integrate eSignAnyWhere document designer to define e-signing ceremonies in your own web application

Table of Contents
maxLevel4
stylecircle

...

The basic integration is just using eSignAnyWhere as middleware for automating signing workflows and for the remote signing itself. Your integrating system configures envelopes, recipients and tasks via API ( REST /SOAP) and uses callback functions to get the status of a finished (or rejected) envelope.

The callback function is calling the integrating system (basically a URL call with an envelope-id parameter). The integrated system gets the callback and can then check the status (signed or rejected) and init further actions, like downloading the documents and audit trail to store it in your archive system and delete the original documents from the eSignAnyWhere server.

Info

Please note the following referring callbacks:

Only the envelope callback is fired, when the envelope is in a final state. The status update callback is fired by a sub-component and you may require to wait a post-processing time that the envelope reaches its final state. Therefore, please send back the HTTP 200 immediately!
If you are not returning the HTTP 200 immediately, eSignAnyWhere tries to recall the URL.
Attention: After some attempts the envelope will not be finished!

Due to these notes please send the message immediately after you receive the callback and before other callback-processing starts (e.g. download documents) to avoid a timeout of the callback!

Image Removed


Info

Please also see the “HelloWorld” Tutorial for more information about the basic integration: visit HelloWorld_Tutorial.

Advanced Integration

...

In-Person Signing with SIGNificant Apps/Products

...

This is a typical point of sale scenario, where the customer signs the document via Signature-Pad or Touchscreen (Windows, Android, iOS). Therefore you can use the SIGNificant Products and Apps (www.xyzmo.com Solutions). So you can use in one step of the workflow the flexible SIGNificant Platform for signing. After signing the workflow continues automatically. You even can ask the customer at the point of sale if he wants to sign via eSignAnywhere remote on his mobile phone, via Signature-Pad or Tablet Computer.

SIGNificant AppsImage Added

It is also possible to integrate the SIGNificant Biometric Server for biometric verification in real-time into your use-case. This requires devices capable of recording Image Removed a biometric signature (e.g. Signaturepads, Tablet PC with native pen, Smartphones with pen, etc.) and a SIGNificant biometric server. Because of the need of the biometric server, just a on-premise installation is supported.

...

To connect eSignAnyWhere with one of the SIGNificant Products or App you have to suppress sending the email and catch the workstepId.

General steps:

...

General StepsImage Added

1) Suppress Sending Email

Envelope Config (JSON/XML) for suppressing sending email for one recipient/

1) Suppress Sending Email

Envelope Config (JSON/XML) for suppressing sending email for one recipient/workflow-step:

... <recipient> <languageCode>en</languageCode> <eMail>recipient@email.com</eMail> <firstName>Firstname</firstName> <lastName>Lastname</lastName> ... <disableEmail>True</disableEmail> ... <!-- optional authentication methods for this recipient --> </recipient>
"Surname": "Doe",
                            "LanguageCode": "EN"
                        }
                    },
 ...
Code Block
languagejava
themeEclipse
...  
"RecipientsRecipientConfiguration": [{
        {
           "Email     "DisableEmail": "recipient@email.com"true,
                  "FirstName      "ContactInformation": "Firstname",{
          "LastName": "Lastname",
                  "LanguageCodeEmail": "enjohndoe@sample.com",
          ...
           "DisableEmail": true,
      "GivenName": "John",
   ...
          "AuthenticationMethods": []
        }
      ],
...
Expand
titleAlternative: SOAP implementation (deprecated)
Code Block
languagexml
themeEclipse

In the next section you can find a complete configuration:

Code Block
languagejava
themeEclipse
{
  
  "SspFileIdsDocuments": [{
      "##FileId##"
  ],
  "SendEnvelopeDescription": {

 
  "NameFileId": "test83467fdc-1234-4592-1234-9c64787cd7a1",
   "EmailSubject": "Please sign the enclosed envelope",
         "EmailBodyDocumentNumber": "Dear #RecipientFirstName# #RecipientLastName#\n\n#PersonalMessage#\n\nPlease sign the envelope #EnvelopeName#\n\nEnvelope will expire at #ExpirationDate#",
  "DisplayedEmailSender1
        }
    ],
    "Name": "Test",
    "EnableRemindersActivities": true,[{
   "FirstReminderDayAmount": 5,
  "RecurrentReminderDayAmount": 3,
  "BeforeExpirationDayAmount": 3,
  "DaysUntilExpireAction": 28,{
  "CallbackUrl": "",
  "StatusUpdateCallbackUrl": "",
  "Steps": [
    {
      "OrderIndexSign": 1,{
      "Recipients": [
        {
          "EmailRecipientConfiguration": "##EMAIL##",
{
						"DisableEmail": true,	
           "FirstName": "##NAME##",
             	"LastNameContactInformation": "##NAME##",
{
                 "LanguageCode": "en",
         	 	 "EmailBodyExtraEmail": "janedoe@sample.com",
              "DisableEmail": false,
            		 "AddAndroidAppLinkGivenName": false"Jane",
          "AddIosAppLink": false,
          "AddWindowsAppLink": false,
     	    	 "AllowDelegationSurname": false"Doe",
          "AllowAccessFinishedWorkstep": false,
          "SkipExternalDataValidation": false,
         	 "LanguageCode": "AuthenticationMethodsEN":
  [
            {
          }
    "Method": "Pin",
              "Parameter": "1234" },
            }
          ]"Elements": {
        }
      ],
      "EmailBodyExtra": "",
      "RecipientTypeSignatures": "Signer",[{
      "WorkstepConfiguration": {
        "WorkstepLabel": "test",
        "SmallTextZoomFactorPercent": 100,
        "FinishActionTaskConfiguration": {
          "ServerActions": [],
                          "ClientActionsOrderDefinition": []{
        },
        "ReceiverInformation": {
          "UserInformation": {
            "FirstNameOrderIndex": "##NAME##",0
            "LastName": "##NAME##",
            "EMail": "##EMAIL##"
          },
              "TransactionCodePushPluginData": []
        },
        "SenderInformation": { },
          "UserInformation": {
            "FirstName": "##NAME##",
            "LastNameElementId": "##NAME##sample sig click2sign",
             "EMail": "##EMAIL##"
            }
       "Required": }true,
         "TransactionCodeConfigurations": [
          {
            "IdDocumentNumber": "smsAuthTransactionCodeId"1,
               "HashAlgorithmIdentifier": "Sha256",
                 "TextsDisplayName": [ "Sign here",
             
            ]
       "AllowedSignatureTypes": {
  }
        ],
        "SignatureConfigurations": [],
                  "ViewerPreferencesClickToSign": {
          "FinishWorkstepOnOpen": false,
            "VisibleAreaOptions": {
            "AllowedDomain": "*", }
            "Enabled": false
            }
        },
        "ResourceUris": {
          "SignatureImagesUri": "http://beta4.testlab.xyzmo.com//Resource/SignatureImages/?link=1agjn5MvqNpSt2jFiZQySxLEiAO~ecLOxKqy3soEHk2F4Dz1MPSYLxRkpA21XMkYY"
        },
        "AuditingToolsConfiguration": "FieldDefinition": {
          "WriteAuditTrail": false,
          "NotificationConfiguration": {}
        },
        "PolicyPosition": {
             "GeneralPolicies": {
              "AllowSaveDocument": true,
            "AllowSaveAuditTrailPageNumber": true1,
              "AllowRotatingPages": false,
            "AllowEmailDocument": true,
            "AllowPrintDocumentX": true100,
              "AllowFinishWorkstep": true,
            "AllowRejectWorkstep": true,
            "AllowRejectWorkstepDelegationY": false,200
            "AllowUndoLastAction": false,
                       "AllowAdhocPdfAttachments": false},
            "AllowAdhocSignatures": false,
            "AllowAdhocStampings": false,
            "AllowAdhocFreeHandAnnotationsSize": false,{
            "AllowAdhocTypewriterAnnotations": false,
               "AllowAdhocPictureAnnotations": false,
            "AllowAdhocPdfPageAppendingWidth": false100,
           },
                "WorkstepTasks": {
            "PictureAnnotationMinResolutionHeight": 0,70
              "PictureAnnotationMaxResolution": 0,
            "PictureAnnotationColorDepth": "Color16M",
            "SequenceMode": "NoSequenceEnforced",}
            "PositionUnits": "PdfUnits",
            "ReferenceCorner": "Lower_Left",
      }
      "Tasks": [
              {
       }
         "Texts": [
                  {]
                    "Language": "*"},
                    "ValueSigningGroup": "Signature Disclosure TextfirstSigner"
                }
   },
         }
        }, {
            "Action": {
                "LanguageSendCopy": "en",{
                    "ValueRecipientConfiguration": "Signature{
 Disclosure Text"
                  }
    "ContactInformation": {
            ],
                "HeadingsEmail": ["johndoe@sample.com",
                  {
          "GivenName": "John",
         "Language": "*",
                    "ValueSurname": "Signature Disclosure SubjectDoe",
                  },
             "LanguageCode": "EN"
     {
                    "Language": "en",} 
                    "Value": "Signature Disclosure Subject"
  }
                }
                ],}
                "IsRequired": false,}
                "Id": "ra",
                "DisplayName": "ra",
  ]
}


2) Links to SIGNificant Products or catch a WorkstepId

eSAW supports to send out links for the SIGNificant products automatically via notifications. Therefore, you just have to add to the recipient configuration JSON the following parameters:

Code Block
languagejava
themeEclipse
"IncludedEmailAppLinks": {
              "DocRefNumberAndroid": 1true,
                "DiscriminatorTypeiOS": "Agreements"true,
               },"Windows": true
              {
   },

Otherwise you can connect one workstep of eSignAnyWhere with one of the SIGNificant Apps. After you have sent the envelope and you have got the envelopeId you can call the method https://demo.esignanywhere.net/api/v6/envelope/{envelopeId}/viewerlinks.  With the result of this method you get information about the envelope and you can find the workstepRedirectionURL. This URL forwards the SignAnywhere Viewer (Web-Client), but with the additional parameter &responseType=returnWorkstepId it returns the workstepId. Example:

https://demo.esignanywhere.net/workstepredirector/sign?identifier=8Wn..9dX&responseType=returnWorkstepId

With this WorkstepId you can now connect the SIGNificant product to the document. If the document is finished the workflow continues automatically.

Other parameters are:

  • responseType=redirectToViewer – redirects to SAW Viewer (default)
  • responseType=redirectToAndroidApp – redirects to Android App
  • responseType=redirectToIOsApp – redirects to iOS App
  • responseType=redirectToWindowsApp – redirects to Windows App
  • responseType=returnWorkstepId – returns the WorkstepId for other integration types


3) Client Redirect

If you want, that the recipient is not redirected to the significant.com webpage after signing the document, you can use the finish action to redirect the recipient to your preferred webpage.

Therefore, you have to use the FinishAction in the WorkstepConfiguration of the recipient.

Code Block
languagejava
themeEclipse
"PolicyConfiguration": {             "PositionPage": 1,
                "Position": {
                  "PositionX": 63.0,
                  "PositionY": 603.0
                },
                "Size": {
                  "Height": 80.0,
                  "Width": 190.0
                },
                "AdditionalParameters": [
                  {
                    "Key": "enabled",
            "FinishActionConfiguration": {
       "Value": "1"
                  },
                    {
                    "Key"SignAnyWhereViewer": "positioning",
    {
                "ValueRedirectUri": "onPagestring"
                 },

Integrate remote signing into your own (native) mobile Apps

Info

Integrate remote signing into your own (native) mobile Apps requires a private SaaS or on-premise version of eSignAnyWhere and the SIGNificant SDK for your desired platforms. You can test it on our demo platform which is available at: https://demo.esignanywhere.net/.

My App Document InboxImage Added

If you want to integrate the document signing for customers into your own Apps, we offer mobile SDKs for you. We support iOS, Android and Windows. Moreover, we have a 100% native SDK and a Hybrid SDK (for a Webbased-Document-Viewer).

So you can integrate into your App a user document-inbox, where the user find documents he/she has to sign. If the user has finished the document, the workflow (e.g. for internal review) continues automatically.

With this integration you can use your notification-channel (no emails via eSignAnyWhere), extend your App and users read & sign documents directly in your App. The use will not see, that he/she is using eSignAnyWhere, because it is seamless integrated into your App.

If you are interested in our mobile SDKs for integrating into your Apps, please contact us. We will provide you information about the Terms & Conditions and the SDK.

Integrate remote signing into your own web portal

...

This use case surpress sending emails via eSignAnyWhere, because you are sending to your customer the notifications and direct them to your web portal. The customer has to login at your web portal and navigate to the “inbox” or a “document section” and gets a list of all documents he/she has to sign. The eSignAnyWhere Viewer is integrated into your web portal.

How to integrate

Basically it is the same as In-Person Signing with SIGNificant Apps/Products. You have to surpress sending the email for the recipient via JSON and instead of catching the WorkstepID you just take the workstepRedirectURL of the response of https://demo.esignanywhere.net/api/v6/envelope/{envelopeId}/viewerlinks. This link you can show the user in your web portal for signing the document.

Integrate eSignAnyWhere document designer to define e-signing ceremonies in your own web application

...

If you are integrating eSignAnyWhere to be used within your web portal, you can use the eSignAnyWhere WYSIWYG document designer for defining e-signing ceremonies.

How to integrate

1) Create Draft and embed designer

General steps:

  • Upload document
  • Create a draft
  • Open with Saw-Viewer

After uploading a file you have to create a draft and configure the option to allow an external designer (allowAgentRedirect). For the create draft call you need the documentId which you got from the upload a file call, an envelope description and the draft option.

Code Block
languagejava
themeEclipse
{
    "Documents": [{
 },
                  {
                    "Key": "req",
                    "Value": "1"
                  },
                  {
                    "Key": "fd",
                    "Value": ""
                  },
                  {
                    "Key": "fd_dateformat",
                    "Value": "dd-MM-yyyy HH:mm:ss"
                  },
                  {
                    "Key": "fd_timezone",
                    "Value": "datetimeutc"
                  },
                  {
                    "Key": "spcId",
                    "ValueFileId": "tLevelId"19b7a4b4-1234-1234-1234-daa50efde453",
            "DocumentNumber": 1
     }
   }
    ],
         ]"Name": "DraftCreate",
    "Activities": [{
            "AllowedSignatureTypesAction": [{
                "Sign":  {
                    "AllowedCapturingMethodRecipientConfiguration": "Click2Sign",{
                        "IdContactInformation": "679dd763-6e25-4a68-929d-cb1ce13dac7e",
{
                            "DiscriminatorTypeEmail": "SigTypeClick2Signjanedoe@sample.com",
                            "PreferredGivenName": false"Jane",
                    "StampImprintConfiguration": {
                        "DisplayExtraInformationSurname": true"Doe",
                      "DisplayEmail": true,
                      "DisplayIp"LanguageCode": true"EN",
                      "DisplayName": true,
     "PhoneNumber":"+43123456789"
                 "DisplaySignatureDate": true,
      }
                "FontFamily": "Times New Roman",
                      "FontSize": 11.0
                    }
                  }
                ],
                "UseTimestamp": false,
                "IsRequired": true,
                "Id": "1#XyzmoDuplicateIdSeperator#Signature_a1e940eb-bcd5-2222-9777-f3570faedf3f",
                "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
}
}
Expand
titleAlternative: SOAP implementation (deprecated)
Code Block
languagexml
themeEclipse
<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>##SIGNER-EMAIL##</eMail>
               <firstName>Alice</firstName>
               <lastName>Somename</lastName>
               <disableEmail>True</disableEmail>
            </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="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>
</workstepConfiguration>
      </step>
   </steps>
</envelope>

2) Links to SIGNificant Products or catch a WorkstepId

eSAW supports to send out links for the SIGNificant products automatically via notifications. Therefore, you just have to add to the recipient configuration (JSON/XML) the following parameters:

Code Block
languagejava
themeEclipse
"Recipients": [
        {
          "AddAndroidAppLink": false,
          "AddIosAppLink": false,
          "AddWindowsAppLink": false,
        }
      ],

...

titleAlternative: SOAP implementation (deprecated)
Code Block
languagexml
themeEclipse
<envelope>
  <steps>
    <step>
      <recipients>
        <recipient>
          <addAndroidAppLink>0</addAndroidAppLink> <!-- 0 or 1 -->
          <addIosAppLink>0</addIosAppLink> <!-- 0 or 1 -->
          <addWindowsAppLink>0</addWindowsAppLink> <!-- 0 or 1 -->
        </recipient>
      </recipients>
    </step>
  </steps>
</envelope>

Otherwise you can connect one workstep of eSignAnyWhere with one of the SIGNificant Apps. After you have sent the envelope and you have got the envelopeId you can call the method /Api/v4.0/envelope/{envelopeId} for REST orGetEnvelopeById_v1 for SOAP . With the result of this method you get information about the envelope and you can find the workstepRedirectionURL. This URL forwards the SignAnywhere Viewer (Web-Client), but with the additional parameter &responseType=returnWorkstepId it returns the workstepId. Example:

https://demo.xyzmo.com/workstepredirector/sign?identifier=8Wn..9dX&responseType=returnWorkstepId

With this WorkstepId you can now connect the SIGNificant product to the document. If the document is finished the workflow continues automatically.

Other parameters are:

  • responseType=redirectToViewer – redirects to SAW Viewer (default)
  • responseType=redirectToAndroidApp – redirects to Android App
  • responseType=redirectToIOsApp – redirects to iOS App
  • responseType=redirectToWindowsApp – redirects to Windows App
  • responseType=returnWorkstepId – returns the WorkstepId for other integration types

3) Client Redirect

If you want, that the recipient is not redirected to the significant.com webpage after signing the document, you can use the finish action to redirect the recipient to your preferred webpage.

Therefore, you have to use the FinishAction in the WorkstepConfiguration of the recipient.

Code Block
languagejava
themeEclipse
"FinishAction": {
          "ServerActions": [],
          "ClientActions": []
        },

...

titleAlternative: SOAP implementation (deprecated)
Code Block
languagexml
themeEclipse
<FinishAction>
<ClientAction clientName="SIGNificant SignAnywhere" closeApp="0" RemoveDocumentFromRecentDocumentList="0" CallClientActionOnlyAfterSuccessfulSync="1">http://www.xyzmo.com</ClientAction>
</FinishAction>

The ClientAction in the SOAP section would forward the SignAnywhere Viewer, after the recipient has signed the document to www.xyzmo.com. You can replace the link with your own or even with parameter to recipient specific pages.

Integrate remote signing into your own (native) mobile Apps

Info

Integrate remote signing into your own (native) mobile Apps requires a private SaaS or on-premise version of eSignAnyWhere and the SIGNificant SDK for your desired platforms. You can test it on our demo platform which is available at: https://demo.esignanywhere.net/.

Image Removed

If you want to integrate the document signing for customers into your own Apps, we offer mobile SDKs for you. We support iOS, Android and Windows. Moreover, we have a 100% native SDK and a Hybrid SDK (for a Webbased-Document-Viewer).

So you can integrate into your App a user document-inbox, where the user find documents he/she has to sign. If the user has finished the document, the workflow (e.g. for internal review) continues automatically.

With this integration you can use your notification-channel (no emails via eSignAnyWhere), extend your App and users read & sign documents directly in your App. The use will not see, that he/she is using eSignAnyWhere, because it is seamless integrated into your App.

If you are interested in our mobile SDKs for integrating into your Apps, please contact us. We will provide you information about the Terms & Conditions and the SDK.

Integrate remote signing into your own web portal

This use case surpress sending emails via eSignAnyWhere, because you are sending to your customer the notifications and direct them to your web portal. The customer has to login at your web portal and navigate to the “inbox” or a “document section” and gets a list of all documents he/she has to sign. The eSignAnyWhere Viewer is integrated into your web portal.

How to integrate

Basically it is the same as In-Person Signing with SIGNificant Apps/Products. You have to surpress sending the email for the recipient (via JSON/XML) and instead of catching the WorkstepID you just take the workstepRedirectURL of the response of /Api/v4.0/envelope/{envelopeId} for REST or GetEnvelopeById_v1 for SOAP. This link you can show the user in your web portal for signing the document.

Integrate eSignAnyWhere document designer to define e-signing ceremonies in your own web application

If you are integrating eSignAnyWhere to be used within your web portal, you can use the eSignAnyWhere WYSIWYG document designer for defining e-signing ceremonies.

How to integrate

1) Create Draft and embed designer

General steps:

...

After uploading a file you have to create a draft and configure the option to allow an external designer (allowAgentRedirect). For the create draft call you need the documentId which you got from the upload a file call, an envelope description and the draft option.

<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>
"Y": 200
   
<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>
        "Size": 
<recipients>
{
              
<recipient>
               
<languageCode>en</languageCode>
           "Width": 100,
   
<eMail>##EMAIL##</eMail>
               
<firstName>Alice</firstName>
               
<lastName>Somename</lastName>
       "Height": 70
       
<disableEmail>false</disableEmail>
                
<addIosAppLink>1</addIosAppLink>
 
            
</recipient>
}
          
</recipients>
      
</step>
      
<step>
         
<emailBodyExtra
 
/>
}
         
<orderIndex>2</orderIndex>
          
<recipientType>CC</recipientType>
         
<recipients>
}
            
<recipient>
            ]
   
<languageCode>en</languageCode>
                 
<eMail>##EMAIL##</eMail>
},
               
<firstName>Charly</firstName>
     "SigningGroup": "firstSigner"
         
<lastName>Randomname</lastName>
       }
     
</recipient>
       }
  
</recipients>
      
</step>
}
    
</steps> </envelope>
Code Block
languagejava
themeEclipse


{
  "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": [
        {
    },
                    
                    "Elements": {
                        "Signatures": [{
                                "TaskConfiguration": {
                                    "OrderDefinition": {
                             "Email": "##EMAIL##",
          "FirstNameOrderIndex": "##NAME##",
0
             "LastName": "##NAME##",
          "LanguageCode": "en",
          "EmailBodyExtra": "", }
          "DisableEmail": false,
          "AddAndroidAppLink": false,
          "AddIosAppLink": true},
          "AddWindowsAppLink": false,
          "AllowDelegation": true,
          "SkipExternalDataValidationElementId": false"click2sign",
           "AuthenticationMethods": []
        }
      ],
      "EmailBodyExtraRequired": ""true,
      "RecipientType": "Signer",
     
        
      
      "DocumentOptionsDocumentNumber": [
1,
                      {
          "DocumentReferenceDisplayName": "1Sign here",
          "IsHidden": false
          }
      ],
      "UseDefaultAgreementsAllowedSignatureTypes": true{
    },
    {
      "OrderIndex": 2,
      "Recipients": [
        {
          "EmailClickToSign": "##EMAIL##",{
          "FirstName": "##NAME##",
              "LastName": "##NAME##",
          "LanguageCode": "en", }
          "EmailBodyExtra": "",
          "DisableEmail": false,
          "AddAndroidAppLink": false},
          "AddIosAppLink": false,
          "AddWindowsAppLink": false,
          "AllowDelegationFieldDefinition": false,{
          "SkipExternalDataValidation": false,
            "AuthenticationMethods": []
        }
      ],"Position": {
      "EmailBodyExtra": "",
           "RecipientType": "Cc",
      "DocumentOptions": [],
      "UseDefaultAgreements": false
    }
  ],
  "AddFormFieldsPageNumber": {1,
    "Forms": {}
  },
  "OverrideFormFieldValues": {
    "Forms": {}
  },
  "AttachSignedDocumentsToEnvelopeLog": false
},
"CreateDraftOptions": {
    "AfterSendRedirectUrl": "http://www.mycallback.at/DraftAfterSendRedirect?envelope=##EnvelopeId##&action=##Action##",
    "AfterSendCallbackUrl": "http://www.mycallback.at/DraftAfterSendCallback?envelope=##EnvelopeId##&action=##Action##",
    "RedirectPolicy": "ToDesigner",
      "AllowAgentRedirectX": true100,
     "IframeWhiteList": "http://172.16.17.256;http://foo.org"
  }
}

Expand
titleAlternative: SOAP implementation (deprecated)
Code Block
languagexml
themeEclipse

In REST the CreateDraftOptions is already given in the envelope description.

]
}


For the redirect policy please add the following:

Alternative: SOAP implementation (deprecated)
Info

Note the following regarding AgentRedirectConfiguration:

  •  Draft/create
    • If Allow flag is set to false, Policy and IFrameAllowList should be null
  • Draft/Update
    • If Allow flag is set to false,
      • Policy and IFrameAllowList should be null
      • If it is valid, then Policy and IFrameAllowList are reset to default
Expand
title
Code Block
languagexmljava
themeEclipse
You have to add the following section for the CreateDraftOptions:

<draftOptions>
	<afterSendRedirectUrl>http://www.mycallback.at/DraftAfterSendRedirect?envelope=##EnvelopeId##&action=##Action##</afterSendRedirectUrl>
        <afterSendCallbackUrl>http://www.mycallback.at/DraftAfterSendCallback?envelope=##EnvelopeId##&action=##Action##</afterSendCallbackUrl>"AgentRedirectConfiguration": {
    "Policy": "Workflow",
    "Allow": false,
    "IFrameAllowList":    <redirectPolicy>ToDesigner</redirectPolicy>
	<allowAgentRedirect>true</allowAgentRedirect>
	<iFrameWhiteList>http://172.16.17.256;http://foo.org</iFrameWhiteList>
</draftOptions>

RedirectPolicy values:

  • “ToDesigner” (like it is in the example)
  • “ToRecipients” -> in JSON, “ToCreateEnvelope” in XML
  • “ToSend”
[]
  }

Please also see Guide for manifest.xml#SecuritySection (restricted access)

RedirectPolicy values:

  • "Workflow" → redirects to the create envelope page
  • "FormEditor" → redirects to the designer page
  • "Summary" → redirects to the envelope summary page
FormEditor

Form EditorImage Added


Workflow

Workflow Create EnvelopeImage Added


Summary

Summary Of EnvelopeImage Added

ToDesignerToCreateEnvelope

Image Removed

Image Removed
 

ToSend

Image Removed


Info

On the create envelope page you may think that you have to upload the document again but you do not have to. The document which you have uploaded before via the api call is still there. If go forward to the “Designer” page you can see the document.

...

http://www.significant.com/AgentRedirect/index?draftid=##draftid##

or

https://demo.xyzmoesignanywhere.comnet/AgentRedirect/index?draftid=##draftid##

...

The following picture show you an example of a complex integration/use case.

Image RemovedComplex IntegrationImage Added

Description:

  1. An agent designs in your web portal via integrated document designer the e-signing ceremony
  2. The first signer (customer) gets a notification via mobile app on his smartphone/tablet and gets an email that a document can be signed in the web portal. The customer is able to sign in the app or in the web-portal after login.
  3. An agent has to confirm the signed document. The agent gets an email from the eSignAnyWhere System and signs it in the browser.

...

In some scenarios it makes sense to send the envelopes via UI by the user and have an automated post processing, when the envelope gets finished. Therefore, you can configure in the organization settings a default callback, which is used by using the UI. You still can overwrite it via API.

Image Removed

Recommended is to use the envelope status change callback to get detailed information about the callbacks. See API Reference for details how to configure the callback.Default Callback URLImage Added


So you can allow users to send envelopes via eSAW UI and integrate a post processing, e.g. for automated archiving.

...

You can define specific callbacks on specific events (e.g. if you want to get notified when a signer rejects the agreement text). A detailed description of this feature you can find here.