eSignature API > API Documentation > The Envelope XML

The Envelope XML

This page will teach you about the envelope XML for eSignAnyWhere.

Envelope Structure

The envelope XML contains all information about a new envelope. Basically it consists of the envelope definition and the workflow. The workflow itself exists of steps and within the steps of the recipients. Signing recipients have to have the workstepconfiguration. The workstepconfiguration is the definition of the signing task.

EnvelopeXML

<envelope>
  <!--  META information for envelope: e.g.: Name, eMailSubject, Reminders, Expiration, CallbackURL etc.  -->
  <steps>
    <step>
      <!-- Step x in Workflow: Information about recipient(s) and Workstep Configuration -->
      <workstepConfiguration />
    </step>
    <step>
      <!-- next step in workflow -->
      <workstepConfiguration />
    </step>
  </steps>
</envelope>

The status of an envelope can be:

  • Draft
  • Started
  • InProgress
  • Canceled
  • Completed
  • Expired
  • Rejected
  • Template
  • CompletedWithWarnings

Hello World Tutorial - Envelope XML Source

<envelope>
   <name>eSignAnyWhere Tutorial</name>
   <eMailSubject>Hello World</eMailSubject>
   <eMailBody>Dear #RecipientFirstName#! Please sign this 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>
      <!-- define recipient and tasks of every step in this envelope -->
      <!-- 1st step -->
      <step>
         <emailBodyExtra />
         <orderIndex>1</orderIndex>
         <recipientType>Signer</recipientType>
         <recipients>
            <recipient>
               <languageCode>en-us</languageCode>
               <eMail>first.signer@email.com</eMail>
               <firstName>First</firstName>
               <lastName>Signer</lastName>
               <!-- optional authentication methods for this recipient -->
            </recipient>
         </recipients>
         <!-- Workstep config for this step -->
         <!--##WorkstepConfigRecipient1##-->
         <workstepConfiguration>
		   <WorkstepLabel />
		   <SmallTextZoomFactorPercent>100</SmallTextZoomFactorPercent>
		   <WorkstepTimeToLiveInMinutes>900</WorkstepTimeToLiveInMinutes>
		   <FinishAction>
			  <ServerAction callSynchronous="0"></ServerAction>
			  <ClientAction clientName="SIGNificant SignAnywhere" closeApp="0" RemoveDocumentFromRecentDocumentList="0" CallClientActionOnlyAfterSuccessfulSync="1" />
		   </FinishAction>
		   <signatureTemplate>
			  <version>1.2.0.2</version>
			  <positionUnits>PdfUnits</positionUnits>
			  <positionReferenceCorner>Lower_Left</positionReferenceCorner>
			  <sig id="c5dfe088-968b-462b-8cdf-15d282f0edb2">
				 <positionPage>1</positionPage>
				 <DocRefNumber>1</DocRefNumber>
				 <positionX>51.42857</positionX>
				 <positionY>464.7771</positionY>
				 <width>171.4286</width>
				 <height>68.57143</height>
				 <param name="enabled">1</param>
				 <param name="completed">0</param>
				 <param name="bio">0</param>
				 <param name="sigType">Picture</param>
				 <param name="positioning">onPage</param>
				 <param name="allowedCapturingMethods">Click2Sign</param>
			  </sig>
		   </signatureTemplate>
		   <senderInformation>
			  <userInformation>
				 <firstName />
				 <lastName />
				 <eMail />
			  </userInformation>
		   </senderInformation>
		   <receiverInformation>
			  <userInformation>
				 <firstName />
				 <lastName />
				 <eMail />
			  </userInformation>
		   </receiverInformation>
		   <Agreements>
			  <text language="en">++Here you should add the legal texts that are the base for the contract to be signed.++</text>
			  <text language="*">++Here you should add the legal texts that are the base for the contract to be signed.++</text>
			  <text language="de">++Hier sollten allfällige Regelungen stehen, die der Benutzer akzeptieren muss, bevor er den Vertrag / das Dokument unterzeichnet.++</text>
		   </Agreements>
		   <IntroTexts>
			  <text language="en">++Here you should describe, what this transaction is about and what the user needs to do next.++</text>
			  <text language="*">++Here you should describe, what this transaction is about and what the user needs to do next.++</text>
			  <text language="de">++Hier sollten sie beschreiben, um was es sich bei dem Dokument handelt, und was der Benutzer nun tun soll.++</text>
		   </IntroTexts>
		   <pdfForms isEditingAllowed="1" />
		   <attachmentFields />
		   <PictureAnnotationTaskInfo>
			  <MinResolution>100</MinResolution>
			  <MaxResolution>1200</MaxResolution>
			  <ColorDepth>Color16M</ColorDepth>
		   </PictureAnnotationTaskInfo>
		   <TypewriterAnnotationTaskInfo />
		   <ViewerPreferences>
			  <ShowVersionNumber>1</ShowVersionNumber>
			  <EnableThumbnailDisplay>1</EnableThumbnailDisplay>
			  <EnableWarningPopupOnLeave>1</EnableWarningPopupOnLeave>
			  <WarningPopupDisplayAfter>FillOrSignField</WarningPopupDisplayAfter>
			  <GuidingBehavior>GuideRequiredAndOptionalTasks</GuidingBehavior>
			  <FormFieldsGuidingBehavior>AllowSubmitAlways</FormFieldsGuidingBehavior>
			  <FinishWorkstepOnOpen>0</FinishWorkstepOnOpen>
		   </ViewerPreferences>
		   <Policy version="1.0.0.2">
			  <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>
				 <AllowUndoLastAction>1</AllowUndoLastAction>
				 <AllowColorizePdfForms>0</AllowColorizePdfForms>
				 <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" originalSequenceMode="SequenceOnlyRequiredTasks">
				 <Task enabled="1" completed="0" required="1" id="c5dfe088-968b-462b-8cdf-15d282f0edb2" displayName="SignField 1" DocRefNumber="1" type="SignField" internalAllConcernedDocRefNumbersList="1" />
			  </WorkstepTasks>
			  <AdhocPolicies>
				 <AllowModificationsAfterSignature>1</AllowModificationsAfterSignature>
			  </AdhocPolicies>
		   </Policy>
		   <timeCreated>2017-03-15T11:02:31.7812969Z</timeCreated>
		   <signaturePluginConfiguration>
			  <PdfSignatureProperties_V1>
				 <PdfAConformant>0</PdfAConformant>
				 <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>DDED02DC192573B722E8C027F0E47E63152EB822</Identifier>
					<Type>Sha1Thumbprint</Type>
					<Csp>Default</Csp>
				 </SigningCertificateDescriptor>
			  </PdfSignatureCryptographicData_V1>
		   </signaturePluginConfiguration>
		   <AuditingToolsConfiguration WriteAuditTrail="1">
			  <NotificationConfiguration>
				 <NotificationUrl>http://localhost:49999/ReceiverSample.aspx?WorkstepId=##WorkstepId##&amp;EventType=##EventType##&amp;Source=##Source##&amp;Time=##Time##&amp;Description=##Description##</NotificationUrl>
			  </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>
		   </TransactionCodeConfigurations>
		</workstepConfiguration>

      </step>
      <!-- define a copy receiver -->
      <step>
         <emailBodyExtra />
         <orderIndex>2</orderIndex>
         <recipientType>CC</recipientType>
         <recipients>
            <recipient>
               <languageCode>en-us</languageCode>
               <eMail>copy.receiver@email.com</eMail>
               <firstName>Copy Receiver Name</firstName>
               <lastName>Thunderbolt</lastName>
            </recipient>
         </recipients>
      </step>
   </steps>
</envelope>

Envelope Section

The Envelope Section contains the configuration of the envelope.

The example configures the following settings:

  • Name of the envelope (name)
  • E-Mail Subject
  • E-Mail Body: the message for the signers email (see Email Templating for more details and the available tags).
  • Reminders and expiration
    • enableReminders: if set to false, no reminders will be sent at all
    • firstReminderDayAmount: an active recipient will retrieve a 1st notification after the defined amount of days. Values: 1 to (daysUntilExpire – 1)
    • recurrentReminderDayAmount: an active recipient will retrieve a recurring notification after the first notification every configured days. Values: 1 to (daysUntilExpire – 1)
    • beforeExpirationReminderDayAmount:an active recipient will retrieve a notification on the configured days before expiration. Values: positive integer
    • daysUntilExpire: If the envelope isn’t finished or rejected within the defined amount of days, the envelope will expire. Values: 1 to _global.xml ‘maxEnvelopeValidityInDays’ setting (default: 28)
  • Callback URL is fired when the envelope is finished (this means successfully finished & signed or by a recipient rejected). So you can notify your integrating system and get the information which envelope is finished (placeholder for envelope id is ##EnvelopeId##). If you want to listen to events within the workflow use the workstep-callbacks.
    Attention: if the callback URL doesn’t return a HTTP 200 the envelope goes into an error state is will not be finished! eSAW tries to call the URL until it gets a HTTP 200 or reaches the limit of callback-attempts (30).
  • The meta data element allows you to store additional, non-eSAW-data (e.g. for archiving) directly in the envelope. You can retrieve this information via getEnvelopeById call. An example of metaData is to store data for the archiving system in the envelope. The callback-integrating solution then can download the files (PDF & Audit-Trail) and store them directly in the archive.
  • DisplayedEmailSender Configuration: If the displayedEmailSender is empty only eSignAnywhere is used. If the field is not empty, this text will be used before ” via eSignAnywhere”. Without displayedEmailSender the organization default setting is used. On-Premise or private SaaS allows to modify “via eSignAnywhere” text.
  • attachSignedDocumentsToEnvelopeLog allows to add the final & signed document to the audit trail. Per default this feature is disabled. Note: this requires eSAW 3.4+

 

   <name>eSignAnyWhere Tutorial</name>
   <eMailSubject>Hello World</eMailSubject>
   <eMailBody>Dear #RecipientFirstName#! Please sign this 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 />
   <metaData>Your meta data</metaData>
   <displayedEmailSender></displayedEmailSender>
   <attachSignedDocumentsToEnvelopeLog>1</attachSignedDocumentsToEnvelopeLog>

Step(s) Section

The step(s) section is defining the workflow. You can define steps (with the order-index) and its recipients (at least one recipient, parallel recipients are supported).

  <steps>
    <step>
      <!-- Step x in Workflow: Information about recipient(s) and Workstep Configuration -->
      <workstepConfiguration />
    </step>
    <step>
      <!-- next step in workflow -->
      <workstepConfiguration />
    </step>
  </steps>
Recipient Configuration within a Step

Example of a simple step (one recipient as signer with empty workstep configuration; see section about workstep configuration for more details):

<step>
  <emailBodyExtra />
  <orderIndex>1</orderIndex>
  <recipientType>Signer</recipientType>
  <recipients>
    <recipient>
      <languageCode>en-us</languageCode>
      <eMail>first.signer@email.com</eMail>
      <firstName>First</firstName>
      <lastName>Signer</lastName>
      <allowDelegation>True</allowDelegation>
      <!-- No notification will be sent if set to True
              use this in case you want to integrate this step into a portal or handle this step with another product (Kiosk, iOS/Android/Windows Phone App -->
      <disableEmail>False</disableEmail> 
      <!-- optional authentication methods for this recipient -->
    </recipient>
  </recipients>
  <workstepConfiguration />
</step>

The following parts are configured in this example:

  • emailBodyExtra
  • Order index in workflow
  • Recipient Type (Signer, CC, Acknowledge)
  • Recipient Data (Language, E-Mail, Firstname, Lastname, Delegation, Authentication)
  • Workstep configuration to define the signing task
Authentication

If you want to use the authentication you can define it the following:

<authentications>
  <authentication>
    <method>Pin</method>
    <parameter>4812</parameter>
  </authentication>
  <authentication>
    <method>SMS</method>
    <parameter>+43664123456789</parameter>
  </authentication>
</authentications>

To configure a OAuth2/SAML Authentication you can additionally use checks (eSAW 2.6+) to force a specific user to authenticate.

<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>
Hide Specific Documents

API Configuration is done via envelope/steps/step/documentOption; Sample:

<envelope>
   ...
   <steps>
      <step>
         <emailBodyExtra>
         </emailBodyExtra>
         <orderIndex>1</orderIndex>
         <documentOptions>
             <documentOption docRef="1">
                 <isHidden>1</isHidden>
             </documentOption>
             <documentOption docRef="2">
                 <isHidden>1</isHidden>
             </documentOption>
         </documentOptions>
         <useDefaultAgreements>true</useDefaultAgreements>
         <recipientType>Signer</recipientType>
         <workstepConfiguration>...</workstepConfiguration>
         <recipients>
            <recipient>
               <eMail>next@recipient.domain</eMail>
               ...
            </recipient>
         </recipients>
      </step>
   </steps>
</envelope>

This feature is not available in all subscriptions.

Disposable Certificate Additional Information

If you want to use the disposable certificate you have to add additional information for the recipient:

<recipient>
  ...
  <disposableCertificateAdditionalInformation>
    <countryResidence>IT</countryResidence>
    <phoneMobile>+39XXXXXXXXXX</phoneMobile>
    <documentType>CI</documentType>
    <documentIssuedBy>Comune di XXXXXXXXX</documentIssuedBy>
    <documentIssuedOn>20XX-XX-01T00:00:00Z</documentIssuedOn>
    <documentExpiryDate>20XX-XX-30T00:00:00Z</documentExpiryDate>
    <serialNumber>XXXXXXXXXXXXXXXX</serialNumber>
    <identificationType>FOREIGN_TAX_CODE</identificationType>
    <identificationCountry>IT</identificationCountry>
    <documentNumber>XXXXXXXXXXXXX</documentNumber>
  </disposableCertificateAdditionalInformation>
<recipient>

Workstep Configuration

The workstep configuration is the most tricky part for a integration. It defines the signing task for a recipient. The easiest part is to upload a file and call the GetAdHocWorkstepConfiguration_v1 call. Then you receive an empty configuration based on the uploaded PDF. You can now add additional signature fields or change some behaviors.

Hello World Tutorial - WorkstepConfiguration XML

<workstepConfiguration>
   <WorkstepLabel />
   <SmallTextZoomFactorPercent>100</SmallTextZoomFactorPercent>
   <WorkstepTimeToLiveInMinutes>900</WorkstepTimeToLiveInMinutes>
   <FinishAction>
      <ServerAction callSynchronous="0" />
      <ClientAction clientName="SIGNificant SignAnywhere" closeApp="0" RemoveDocumentFromRecentDocumentList="0" CallClientActionOnlyAfterSuccessfulSync="1" />
   </FinishAction>
   <signatureTemplate>
      <version>1.2.0.2</version>
      <positionUnits>PdfUnits</positionUnits>
      <positionReferenceCorner>Lower_Left</positionReferenceCorner>
      <sig id="c5dfe088-968b-462b-8cdf-15d282f0edb2">
         <positionPage>1</positionPage>
         <DocRefNumber>1</DocRefNumber>
         <positionX>51.42857</positionX>
         <positionY>464.7771</positionY>
         <width>171.4286</width>
         <height>68.57143</height>
         <param name="enabled">1</param>
         <param name="completed">0</param>
         <param name="bio">0</param>
         <param name="sigType">Picture</param>
         <param name="positioning">onPage</param>
         <param name="allowedCapturingMethods">Click2Sign</param>
      </sig>
   </signatureTemplate>
   <senderInformation>
      <userInformation>
         <firstName />
         <lastName />
         <eMail />
      </userInformation>
   </senderInformation>
   <receiverInformation>
      <userInformation>
         <firstName />
         <lastName />
         <eMail />
      </userInformation>
   </receiverInformation>
   <Agreements>
      <text language="en">++Here you should add the legal texts that are the base for the contract to be signed.++</text>
      <text language="*">++Here you should add the legal texts that are the base for the contract to be signed.++</text>
      <text language="de">++Hier sollten allfällige Regelungen stehen, die der Benutzer akzeptieren muss, bevor er den Vertrag / das Dokument unterzeichnet.++</text>
   </Agreements>
   <IntroTexts>
      <text language="en">++Here you should describe, what this transaction is about and what the user needs to do next.++</text>
      <text language="*">++Here you should describe, what this transaction is about and what the user needs to do next.++</text>
      <text language="de">++Hier sollten sie beschreiben, um was es sich bei dem Dokument handelt, und was der Benutzer nun tun soll.++</text>
   </IntroTexts>
   <pdfForms isEditingAllowed="1" />
   <attachmentFields />
   <PictureAnnotationTaskInfo>
      <MinResolution>100</MinResolution>
      <MaxResolution>1200</MaxResolution>
      <ColorDepth>Color16M</ColorDepth>
   </PictureAnnotationTaskInfo>
   <TypewriterAnnotationTaskInfo />
   <ViewerPreferences>
      <ShowVersionNumber>1</ShowVersionNumber>
      <EnableThumbnailDisplay>1</EnableThumbnailDisplay>
      <EnableWarningPopupOnLeave>1</EnableWarningPopupOnLeave>
      <WarningPopupDisplayAfter>FillOrSignField</WarningPopupDisplayAfter>
      <GuidingBehavior>GuideRequiredAndOptionalTasks</GuidingBehavior>
      <FormFieldsGuidingBehavior>AllowSubmitAlways</FormFieldsGuidingBehavior>
      <FinishWorkstepOnOpen>0</FinishWorkstepOnOpen>
   </ViewerPreferences>
   <Policy version="1.0.0.2">
      <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>
         <AllowUndoLastAction>1</AllowUndoLastAction>
         <AllowColorizePdfForms>0</AllowColorizePdfForms>
         <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" originalSequenceMode="SequenceOnlyRequiredTasks">
         <Task enabled="1" completed="0" required="1" id="c5dfe088-968b-462b-8cdf-15d282f0edb2" displayName="SignField 1" DocRefNumber="1" type="SignField" internalAllConcernedDocRefNumbersList="1" />
      </WorkstepTasks>
      <AdhocPolicies>
         <AllowModificationsAfterSignature>1</AllowModificationsAfterSignature>
      </AdhocPolicies>
   </Policy>
   <timeCreated>2017-03-15T11:02:31.7812969Z</timeCreated>
   <signaturePluginConfiguration>
      <PdfSignatureProperties_V1>
         <PdfAConformant>0</PdfAConformant>
         <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>DDED02DC192573B722E8C027F0E47E63152EB822</Identifier>
            <Type>Sha1Thumbprint</Type>
            <Csp>Default</Csp>
         </SigningCertificateDescriptor>
      </PdfSignatureCryptographicData_V1>
   </signaturePluginConfiguration>
   <AuditingToolsConfiguration WriteAuditTrail="1">
      <NotificationConfiguration>
         <NotificationUrl>http://localhost:49999/ReceiverSample.aspx?WorkstepId=##WorkstepId##&amp;EventType=##EventType##&amp;Source=##Source##&amp;Time=##Time##&amp;Description=##Description##</NotificationUrl>
      </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>
   </TransactionCodeConfigurations>
</workstepConfiguration>

The easiest way to prepare the workstep is to use signature field placeholder (‘sig’) or advanced tags in the document. For signature field placeholders you need to get the AdHocWorkstepConfiguration via API (GetAdHocWorkstepConfiguration_v1) and for advanced tags you have first to perform a prepare call (PrepareSendEnvelopeSteps_v1). An alternative is to use the Workstep Designer. The workstep designer can help you creating a workstep xml and you can directly try it in the SignAnyWhere Viewer (the eSignAnyWhere default signing client).

Important: with eSignAnyWhere 2.6+ there will be a developer option for users to download directly the envelope confiruation for any in eSAW via UI designed workflows, including all workstepconfigurations. So, the eSAW UI will become an envelope-designer for developers! Then using the Workstep Designer is obsolete.

workstep designer
You have to select “SignAnyWhere” for creating a eSignAnyWhere compatible workstep. Then you click “Start Designing”.

workstep designer
Via “+” (Plus) you can add & place signature fields on the document. “Create WorkStep” can be used for trying the current configuration in a SAW Viewer (default eSAW client). Save configuration downloads the current configuration.

Input Validation for Form Fields

In the workstep configuration you can define (since version 3.1) a form field valdiation for text fields.

<textBox id="Text1">
   ...

   <minLength>5</minLength>
   <placeholders>
      <placeholder language="*">example.mail@xyzmo.com</placeholder>
      <placeholder language="de">beispiel.mail@xyzmo.com</placeholder>
   </placeholders>
   <tooltips>
      <tooltip language="*">Please enter your phone number in the format +{countryCode}{phoneNumber}</tooltip>
      <tooltip language="de">Bitte geben Sie hier Ihre Telefonnummer in dem Format +{Ländercode}{Telefonnummer} ein</tooltip>
   </tooltips>
   <inputValidation>
      <type>Number/Decimal/Currency/Phone/Email/Date/Time/Custom</type>
      <format>dd-MM-yyyy / \d*(\.|,)?\d?</format>
      <range from="-128" to="127" />
   </inputValidation>
</textBox>

The following options are availabe:

  • Date
    • Format is required; Value: any .NET format
    • Range is optional and must match with given format
    • <inputValidation>
          <type>date</type>
          <format>dd. MMMM yyyy</format>
          <range from="13. März 2018" to="18. December 2019" />
      </inputValidation>
  • Email
    • no format or range
    • <inputValidation>
          <type>email<type>
      </inputValidation>
  • Number
    • Format is required
      • decimalPlaces required; between 0..10
      • decimalSeparator (if decimalPlaces > 0): comma, point or apostrophe
      • thousandsSeparator (must be different to decimalSeparator): comma, point, apostrophe, blank
      • symbol (optional): any text, e.g. for currency
      • symbolLocation (required if symbol is set): start, startWithBlank, end, endWithBlank
      • Range: allowed (optional): must match with given format
    • <inputValidation>
          <type>number</type>
          <format decimalPlaces="2" decimalSeparator="comma" thousandsSeparator="point" symbol="€" symbolLocation="endWithBlank" />
          <range from="-300,00 €" to="5.000,00 €" />
      </inputValidation>
  • Phone
    • Format: required; International, InternationalLeadingZeros, InternationLeadingPlus
    • <inputValidation>
          <type>phone</type>
          <format type="international" />
      </inputValidation>
  • Time
    • Format: required; any .NET time format
    • Range: allowed (optional), must match with given format
    • <inputValidation>
          <type>time</type>
          <format>HH:mm</format>
          <range from="12:00" to="18:00" />
      </inputValidation>