Overview

The Process Builder in Salesforce is a graphical point-and-click tool that allows you to automate actions based on triggering events in your Salesforce environment.

Processes are built around an if/then type of logic flow, and contain one trigger event, at least one condition, and at least one action that can happen in real-time, and/or as a scheduled event.

Adobe Sign supports two action types: Updating Records and Apex

Each action type has several invokable actions:

  • Send
  • Cancel
  • Delete
  • Remind
  • Update
  • Load (template) is only available when using the Apex action type

The Process Builder is a very powerful tool and the full description of how it works is beyond the scope of this document.

This document highlights the actions available via v20 of the Adobe Sign for Salesforce package.

If you would like to learn more about the Process Builder in general, there is documentation and an interactive Trailhead available from Salesforce.


Processes that use "Update Records" as the action type

This approach uses the Update Records action type in the Salesforce Process Builder to set the Background Action picklist field on the agreement record to invoke an action.

New process can be created (which fire based on record change events) that can then invoke an action on a related Adobe Sign agreement. Users can control when the action will occur (i.e. after which field update on the master record) and which related agreement(s) are selected for the action.

 

Currently the following actions are supported:

  • Send
  • Cancel
  • Delete
  • Remind
  • Update

Things to be aware of:

  • Any error detected during the process will be stored in the Error Message field, and can be viewed on the corresponding Agreement page
  • Scheduled actions are supported
  • Adobe Sign library documents are supported
  • One or more parent or child agreements can be selected
  • When updating an agreement record, the related record is the echosign_dev1 object
    • The echosign_dev1 object is associated to the common Salesforce objects (Account, Opportunity, Contact, etc). If the Agreements are related to a custom object, this name will be unique to the org.
the_agreement_objectwhenupdatingrecords
  • Actions are triggered by updating the Background Action picklist field on the agreement record with the corresponding action value
background_action
Limitations:
  • The agreement record must already exist. It cannot be created or loaded from an agreement template using an "Update Records" action type


Processes that use Apex as the action type

This approach uses the Apex action type in the Salesforce Process Builder to invoke an Invocable Method included with the managed package to perform the corresponding action. 

New process can be created (which fire based on record change events) that can then invoke an action on a related Adobe Sign agreement.

The following invocable actions have been defined:

  • Agreement Template Load Invocable Action
    • AgreementTemplateLoadInvocableAction.load
      • Pass in the template and master ID's and any runtime variables.
      • Pass in an optional parameter to control whether the template generation runs in async mode
        • Required if the template contains a document from the Adobe Sign library
      • Return the generated agreement record ID or any error message
        • Error will not be visible to the users performing the trigger action

When invoking the Load Agreement Type Class, there are four field options that you can configure:

  • Master Record ID - The Salesforce record ID of the object to which the agreement should be related. 
    • Usually set to type Field Reference and value "[Object].Id" where object is Opportunity, Account, etc.
  • Agreement Template Id - The Salesforce record Id of the agreement template to load. Set type to "ID" and value to the record ID
  • Agreement Template Runtime Variables - Recipients and/or documents from a variable. 
    • One variable: myRecipient=auserguy@adobe.com 
    • Two variables: myRecipient=auserguy@adobe.com,myAttachment=00Pf4000002df0q
  • Async Processing - Optional, do not specify unless necessary. By default this will be false, so the template invocation will run in sync mode (i.e. the same transaction/thread) 
    • Set to True if your agreement template loads an Adobe Sign library document
    • Ensure the value is False if AutoSend is true for the tmplate
    • You cannot have auto send with Adobe Sign library documents together
    • Be aware of the built in Salesforce limitations if the process is being invoked from a batch or other async process

 

load_template_variables
  • Agreement Cancel Invocable Action
    • AgreementCancelInvocableAction.cancelAgreement
      • Pass in the agreement ID
      • Return any error message
  • Agreement Delete Invocable Action
    • AgreementDeleteInvocableAction.deleteAgreement
      • Pass in the agreement ID
      • Return any error message
  • Agreement Remind Invocable Action
    • AgreementRemindInvocableAction.sendReminder
      • Pass in the agreement ID
      • Return any error message
  • Agreement Send Invocable Action
    • AgreementSendInvocableAction.sendAgreement
      • Pass in the agreement ID
      • Return any error message
  • Agreement Agreement Update Invocable Action
    • AgreementUpdateInvocableAction.updateAgreement
      • Pass in the agreement ID
      • Return any error message

The Cancel, Delete, Remind, Send, and Update actions require only the Agreement ID of the agreement that is to be acted upon:

apex_variables


Things to be aware of:

  • Scheduled actions are supported
  • Agreement templates with auto send are supported (i.e. generate and send)
  • All actions can accept multiple requests in one invocation
  • Any exceptions are caught and stored on the result record and logged as an error in the Apex debug log to avoid blocking process execution.
  • The parameter to the Template Load function (Async Processing), controls whether the template processing occurs in synchronous or asynchronous mode. The caller needs to specify whether the template load should run in sync or async mode 
    • The default process runs in synchronous mode. The bulk of processes should run synchronously
    • If auto send is enabled, the process must be in synchronous mode
    • The notable asynchronous process would be if you need to load an Adobe Sign library document

 

Limitations:

  • The combination of auto send templates and Adobe Sign library documents is not supported due to a limitation in Salesforce where one thread cannot kick off another thread
  • For any parameters passed in to the invocable action, only parent fields (not child fields) can be referenced. You cannot take actions on child agreements under a master record
  • Return values from an Apex invocation cannot be consumed in a process builder. No actions which return a value are supported (i.e. get document info or get signing URL).


Queueable Service

A new service layer has been implemented to invoke the agreement actions through the Salesforce queueable interface. More good info on Queueable is here. The actions invoke the core service API's which then callout to the Adobe Sign API. 

The following actions are supported:

  • Send
  • Cancel
  • Delete
  • Remind
  • Update

The global echosign_dev1.AdobeSignApiQueueableService is the service Apex class, which takes in a parameter of type echosign_dev1.QueueableServiceParameter, which contains the action to invoke and the agreement record ID:

 

echosign_dev1.AdobeSignApiQueueableService.QueueableServiceParameter param = new echosign_dev1.AdobeSignApiQueueableService.QueueableServiceParameter();

param.actionType = EchoSignApiService.ACTION_TYPE.AGREEMENT_REMIND;
param.agreementId = 'a0I0S000000KwkaUAC';

ID jobID = System.enqueueJob(new echosign_dev1.AdobeSignApiQueueableService(param));

This work is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License  Twitter™ and Facebook posts are not covered under the terms of Creative Commons.

Legal Notices   |   Online Privacy Policy