logo
down
shadow

Updating the data field tag in Docusign from Salesforce data


Updating the data field tag in Docusign from Salesforce data

By : James
Date : November 17 2020, 11:55 AM
like below fixes the issue It is possible with Salesforce and DS but not the way you are going at it. I answered your question about background correct on the other question at Send (Load) a URL to web browser and run it in background in APEX
Merge fields are part of the question, but they are only shown as the value when "SENT" and update Salesforce only when the envelope is COMPLETED successfully, so really this is only a half solution for your scenario.
code :
1. Components added: 
    DocuSign Connect Object - dseRecipientConnectUpdate
    custom Object - dseRecipientConnectUpdate__c​
    Trigger - dseRCU_AfterUpdate​
    Class - desController (in Sandbox and code below as well)
    Class - CheckRecursive (in sandbox and code below as well)
    DS Template Example -Agreement with ContractID  960BD14E-6A09-4A9E-89E6-77B1D8444B72


2. What you need yet to do
    Replace Send on Behalf user with Sender of envelope via code (hard Coded as david.grigsby@docusign.com in code) lookup using envelopeID in DocuSign Status and get sender, then lookup in user that sender's email
    Classify any stringified body's you want
    Error Condition handling
    Test Classes
    Testing, Testing, testing

How I tested:
    0. Turn on debugging for API user and Myself
    a. Sent Envelope from Template
    b. Signed the first three recipients 
    c. Code updated the dseRecipientConnectUpdate__c​ record (a36) that was the autoresponse blocking user aka just changed record by editing but no real change, then save.

    d. It would then fire trigger again (as mentioned you will need to change the send on behalf of user to automatically for final code to be sending user, but you can make it your email you send envelope by) and it will read recipients, get the contract id recipient and tab, add new recipient and tab with value, delete old reciepents (tag recipient and blocking)
<?xml version="1.0" encoding="UTF-8"?>
<CustomObject xmlns="http://soap.sforce.com/2006/04/metadata">
    <!--actionoverrides removed for sake of SO answer size/>
    <compactLayoutAssignment>SYSTEM</compactLayoutAssignment>
    <deploymentStatus>Deployed</deploymentStatus>
    <description>DocuSign Recipient Connect Update</description>
    <enableActivities>true</enableActivities>
    <enableFeeds>false</enableFeeds>
    <enableHistory>true</enableHistory>
    <enableReports>true</enableReports>
    <fields>
        <fullName>RecipStatus__c</fullName>
        <externalId>false</externalId>
        <label>RecipStatus</label>
        <length>50</length>
        <required>false</required>
        <trackHistory>false</trackHistory>
        <trackTrending>false</trackTrending>
        <type>Text</type>
        <unique>false</unique>
    </fields>
    <fields>
        <fullName>RecipientEmail__c</fullName>
        <description>Recipient Email</description>
        <externalId>false</externalId>
        <label>RecipientEmail</label>
        <required>false</required>
        <trackHistory>false</trackHistory>
        <trackTrending>false</trackTrending>
        <type>Email</type>
        <unique>false</unique>
    </fields>
    <fields>
        <fullName>RecipientID__c</fullName>
        <externalId>false</externalId>
        <label>RecipientID</label>
        <length>50</length>
        <required>false</required>
        <trackHistory>false</trackHistory>
        <trackTrending>false</trackTrending>
        <type>Text</type>
        <unique>false</unique>
    </fields>
    <fields>
        <fullName>dsEnvelopeID__c</fullName>
        <description>dsfs__DocuSign_Envelope_ID__c</description>
        <externalId>false</externalId>
        <label>dsEnvelopeID</label>
        <length>56</length>
        <required>false</required>
        <trackHistory>false</trackHistory>
        <trackTrending>false</trackTrending>
        <type>Text</type>
        <unique>false</unique>
    </fields>
    <label>dseRecipientConnectUpdate</label>
    <listViews>
        <fullName>All</fullName>
        <filterScope>Everything</filterScope>
        <label>All</label>
    </listViews>
    <nameField>
        <displayFormat>dseRCU-{0000000000}</displayFormat>
        <label>dseRecipientConnectUpdate Name</label>
        <trackHistory>false</trackHistory>
        <type>AutoNumber</type>
    </nameField>
    <pluralLabel>dseRecipientConnectUpdates</pluralLabel>
    <recordTypeTrackHistory>false</recordTypeTrackHistory>
    <recordTypes>
        <fullName>dseRecipientConnectUpdate</fullName>
        <active>true</active>
        <description>dseRecipientConnectUpdate</description>
        <label>dseRecipientConnectUpdate</label>
    </recordTypes>
    <searchLayouts/>
    <sharingModel>ReadWrite</sharingModel>
</CustomObject>
trigger dseRCU_AfterUpdate on dseRecipientConnectUpdate__c (after update) {
    try
    {

        if (CheckRecursive.runOnce())
        {   

            List<dseRecipientConnectUpdate__c> myConnectUpdates = [Select d.dsEnvelopeID__c, d.RecipientID__c, d.RecipientEmail__c, d.RecipStatus__c, d.Id From dseRecipientConnectUpdate__c d WHERE Id IN:Trigger.newMap.keySet()];

            for(dseRecipientConnectUpdate__c myConnectCompleted :myConnectUpdates)
            {
                system.debug(myConnectCompleted.Id);

                if(myConnectCompleted.RecipStatus__c.indexOf('AutoResponded') != -1)
                {
                    system.debug(myConnectCompleted.RecipStatus__c);
                        //Looking for bounce back user via status AutoResponded  and  @accelrys.com emails/recipients
                        if(myConnectCompleted.RecipientEmail__c.indexOf('invalidemail@baddomain.com') != -1)
                        {
                          //do modification to envelope here
                          dseController.updateEnvelope(myConnectCompleted.dsEnvelopeID__c, myConnectCompleted.RecipientID__c);


                        }
                }
            }
        }
    }
    catch(Exception ex)
    {
        system.debug(ex);
    }
    finally
    {

    }  
}
public with sharing class dseController {

    public dseController()
    {

    }

    public dseController(ApexPages.StandardController controller)
    {

    } 

    @future (callout=true)
    public static void updateEnvelope( string envelopeID, string recipientID )
    {
    RecipientResponse RecipientResponseDeserialized = new RecipientResponse();
    RecipientTabResponse RecipientTabResponseDeserialized = new RecipientTabResponse();
    string rResponse = '{}';
    string recipientGuidwithContractTab;
    string recipientGuidForBlockingRecipient;
    string rTabResponse = '{}';
    string rSetRecipientResponse = '{}';
    string rSetTabForRecipientResponse = '{}';
    string rTabRecipientDeleteResponse = '{}';
    string rBlockingRecipientDeleteResponse = '{}';


    try
    {
//Call to get envelope recipients
rResponse = getEnvelopeRecipients(envelopeID);
system.debug(rResponse);

RecipientResponseDeserialized = parseRecipentResponse(rResponse);
system.debug(RecipientResponseDeserialized);

recipientGuidwithContractTab = getRecipientwithContractTab(RecipientResponseDeserialized);
system.debug(recipientGuidwithContractTab);

//Call to get recipient tab
rTabResponse = getRecipientTab(envelopeID, recipientGuidwithContractTab);
system.debug(rTabResponse);

RecipientTabResponseDeserialized = parseRecipientTabResponse(rTabResponse);
system.debug(RecipientTabResponseDeserialized);

//Call to add recipient with new id
rSetRecipientResponse = setRecipientForNewTab(envelopeID,RecipientResponseDeserialized);
system.debug(rSetRecipientResponse);

//Call to add tab to new recipient with new id

rSetTabForRecipientResponse = setNewTabforNewRecipient(envelopeID,RecipientTabResponseDeserialized);
system.debug(rSetTabForRecipientResponse);

//Call to delete old clone recipient
rTabRecipientDeleteResponse = deleteRecipientTab(envelopeID, recipientGuidwithContractTab);
system.debug(rTabRecipientDeleteResponse);

//Call to delete blocking user
recipientGuidForBlockingRecipient = getBlockingRecipient(RecipientResponseDeserialized);
rBlockingRecipientDeleteResponse = deleteBlockingRecipient(envelopeID, recipientGuidForBlockingRecipient);
system.debug(rBlockingRecipientDeleteResponse);
    }
catch(Exception ex)
        {
            system.debug(ex);

        }
        finally
        {

        }    

    }

    public static string getRecipientwithContractTab(RecipientResponse rResponse)
    {
    string rContractTabID = 'Not Found';

    try{

    List<Signer> mySigners = rResponse.signers;
    for(Signer mySigner : mySigners)
    {
    if(mySigner.roleName == 'ContractIDApprover')
    {
    rContractTabID = mySigner.recipientIdGuid;
    }

    }

    }
catch(Exception ex)
        {
            system.debug(ex);

        }
        finally
        {

        } 

        return rContractTabID;

    }

    public static string getBlockingRecipient(RecipientResponse rResponse)
    {
    string rContractTabID = 'Not Found';

    try{

    List<Signer> mySigners = rResponse.signers;
    for(Signer mySigner : mySigners)
    {
    if(mySigner.roleName == 'BlockingUser')
    {
    rContractTabID = mySigner.recipientIdGuid;
    }

    }

    }
catch(Exception ex)
        {
            system.debug(ex);

        }
        finally
        {

        } 

        return rContractTabID;

    }


    public static string getEnvelopeRecipients(string envelopeID)
    {
    string response = '{}';
    string DSEndpoint = 'https://demo.docusign.net/restapi/v2/';
    string DSUserId = 'yourdsUserid';
    string DSPassword = 'yourdspassword';
    string DSAccountID = 'yourdsaccountID';
    string DSIntegratorKey = 'yourdsintegratorkey';


    try
{

//FORCES that the DocuSign member has to be in the DocuSign account DSFS is configured for
List<dsfs__DocuSignAccountConfiguration__c> dsAccountConfig = [Select d.dsfs__UseSendOnBehalfOf__c, d.dsfs__DocuSignBaseURL__c, d.dsfs__DSProSFUsername__c, d.dsfs__DSProSFPassword__c, d.dsfs__AccountId__c From dsfs__DocuSignAccountConfiguration__c d limit 1];

for(dsfs__DocuSignAccountConfiguration__c myConfig : dsAccountConfig)
{

DSEndpoint = myConfig.dsfs__DocuSignBaseURL__c + 'restapi/v2/';
DSUserId = myConfig.dsfs__DSProSFUsername__c;
DSPassword = myConfig.dsfs__DSProSFPassword__c;

}

HttpRequest request = new HttpRequest();
request.setEndpoint(DSEndpoint + 'accounts/'+DSAccountID+'/envelopes/'+envelopeID+'/recipients');
request.setMethod('GET');
request.setHeader('Content-Type', 'application/json');
request.setHeader('X-DocuSign-Authentication', '<DocuSignCredentials><Username>'+DSUserId+'</Username><Password>'+DSPassword+'</Password><IntegratorKey>'+DSIntegratorKey+'</IntegratorKey></DocuSignCredentials>');
request.setHeader('Accept', 'application/json');
request.setTimeout(120000);

system.debug(request.getHeader('X-DocuSign-Authentication'));


HttpResponse myResponse = (new Http()).send(request);

system.debug(myResponse.getBody());

if(myResponse.getStatusCode().format()=='200')
{  
response = myResponse.getBody();
system.debug(response);

}

}
catch(Exception ex)
        {
            system.debug(ex);

        }
        finally
        {

        }

        return response;
    }

    public static string getRecipientTab(string envelopeID, string recipientGuid)
    {
    string response = '{}';
    string DSEndpoint = 'https://demo.docusign.net/restapi/v2/';
    string DSUserId = 'yourdsUserid';
    string DSPassword = 'yourdspassword';
    string DSAccountID = 'yourdsaccountID';
    string DSIntegratorKey = 'yourdsintegratorkey';


    try
{

//FORCES that the DocuSign member has to be in the DocuSign account DSFS is configured for
List<dsfs__DocuSignAccountConfiguration__c> dsAccountConfig = [Select d.dsfs__UseSendOnBehalfOf__c, d.dsfs__DocuSignBaseURL__c, d.dsfs__DSProSFUsername__c, d.dsfs__DSProSFPassword__c, d.dsfs__AccountId__c From dsfs__DocuSignAccountConfiguration__c d limit 1];

for(dsfs__DocuSignAccountConfiguration__c myConfig : dsAccountConfig)
{

DSEndpoint = myConfig.dsfs__DocuSignBaseURL__c + 'restapi/v2/';
DSUserId = myConfig.dsfs__DSProSFUsername__c;
DSPassword = myConfig.dsfs__DSProSFPassword__c;

}

HttpRequest request = new HttpRequest();
request.setEndpoint(DSEndpoint + 'accounts/'+DSAccountID+'/envelopes/'+envelopeID+'/recipients/'+recipientGuid+'/tabs/');
request.setMethod('GET');
request.setHeader('Content-Type', 'application/json');
request.setHeader('X-DocuSign-Authentication', '<DocuSignCredentials><Username>'+DSUserId+'</Username><Password>'+DSPassword+'</Password><SendOnBehalfOf>david.grigsby@docusign.com</SendOnBehalfOf><IntegratorKey>'+DSIntegratorKey+'</IntegratorKey></DocuSignCredentials>');
request.setHeader('Accept', 'application/json');
request.setTimeout(120000);

system.debug(request.getHeader('X-DocuSign-Authentication'));


HttpResponse myResponse = (new Http()).send(request);

system.debug(myResponse.getBody());

if(myResponse.getStatusCode().format()=='200')
{  
response = myResponse.getBody();
system.debug(response);

}

}
catch(Exception ex)
        {
            system.debug(ex);

        }
        finally
        {

        }

        return response;
    }

    public static string setRecipientForNewTab(string envelopeID, RecipientResponse rResponse)
    {
    string response = '{}';
    string DSEndpoint = 'https://demo.docusign.net/restapi/v2/';
    string DSUserId = 'yourdsUserid';
    string DSPassword = 'yourdspassword';
    string DSAccountID = 'yourdsaccountID';
    string DSIntegratorKey = 'yourdsintegratorkey';


    try
{

//FORCES that the DocuSign member has to be in the DocuSign account DSFS is configured for
List<dsfs__DocuSignAccountConfiguration__c> dsAccountConfig = [Select d.dsfs__UseSendOnBehalfOf__c, d.dsfs__DocuSignBaseURL__c, d.dsfs__DSProSFUsername__c, d.dsfs__DSProSFPassword__c, d.dsfs__AccountId__c From dsfs__DocuSignAccountConfiguration__c d limit 1];

for(dsfs__DocuSignAccountConfiguration__c myConfig : dsAccountConfig)
{

DSEndpoint = myConfig.dsfs__DocuSignBaseURL__c + 'restapi/v2/';
DSUserId = myConfig.dsfs__DSProSFUsername__c;
DSPassword = myConfig.dsfs__DSProSFPassword__c;

}

Signer mySignerToAdd = new Signer();

List<Signer> mySigners = rResponse.signers;
    for(Signer mySigner : mySigners)
    {
    if(mySigner.roleName == 'ContractIDApprover')
    {
    mySignerToAdd = mySigner;
    }

    }


    String myBody;
    myBody = '{"signers": [{"signInEachLocation": "false","name": "'+mySignerToAdd.name +'Added 1","email": "'+mySignerToAdd.email+'","recipientId": "7","requireIdLookup": "false","routingOrder": "19","roleName": "'+mySignerToAdd.roleName+'1"}]}';

HttpRequest request = new HttpRequest();
request.setEndpoint(DSEndpoint + 'accounts/'+DSAccountID+'/envelopes/'+envelopeID+'/recipients/');
request.setMethod('POST');
request.setHeader('Content-Type', 'application/json');
request.setHeader('X-DocuSign-Authentication', '<DocuSignCredentials><Username>'+DSUserId+'</Username><Password>'+DSPassword+'</Password><SendOnBehalfOf>david.grigsby@docusign.com</SendOnBehalfOf><IntegratorKey>'+DSIntegratorKey+'</IntegratorKey></DocuSignCredentials>');
request.setHeader('Accept', 'application/json');
request.setTimeout(120000);
request.setBody(myBody);

system.debug(request.getHeader('X-DocuSign-Authentication'));


HttpResponse myResponse = (new Http()).send(request);

system.debug(myResponse.getBody());

if(myResponse.getStatusCode().format()=='201')
{  
response = myResponse.getBody();
system.debug(response);

}

}
catch(Exception ex)
        {
            system.debug(ex);

        }
        finally
        {

        }

        return response;
    }

     public static string setNewTabforNewRecipient(string envelopeID, RecipientTabResponse rTabResponse)
    {
    string response = '{}';
    string DSEndpoint = 'https://demo.docusign.net/restapi/v2/';
    string DSUserId = 'yourdsUserid';
    string DSPassword = 'yourdspassword';
    string DSAccountID = 'yourdsaccountID';
    string DSIntegratorKey = 'yourdsintegratorkey';


    try
{

//FORCES that the DocuSign member has to be in the DocuSign account DSFS is configured for
List<dsfs__DocuSignAccountConfiguration__c> dsAccountConfig = [Select d.dsfs__UseSendOnBehalfOf__c, d.dsfs__DocuSignBaseURL__c, d.dsfs__DSProSFUsername__c, d.dsfs__DSProSFPassword__c, d.dsfs__AccountId__c From dsfs__DocuSignAccountConfiguration__c d limit 1];

for(dsfs__DocuSignAccountConfiguration__c myConfig : dsAccountConfig)
{

DSEndpoint = myConfig.dsfs__DocuSignBaseURL__c + 'restapi/v2/';
DSUserId = myConfig.dsfs__DSProSFUsername__c;
DSPassword = myConfig.dsfs__DSProSFPassword__c;

}

TextTabs myTextTabToAdd = new TextTabs();

List<TextTabs> myTextTabs = rTabResponse.textTabs;
    for(TextTabs myTextTab : myTextTabs)
    {
    if(myTextTab.tabLabel == 'ContractID')
    {
    myTextTabToAdd = myTextTab;
    }

    }


    String myBody;
    myBody = '{"textTabs": [{"height": '+myTextTabToAdd.height+',"shared": "'+myTextTabToAdd.shared+'","requireInitialOnSharedChange": "'+myTextTabToAdd.requireInitialOnSharedChange+'","name": "'+myTextTabToAdd.name+'1","value": "ContractID12345","width": '+myTextTabToAdd.width+',"required": "'+myTextTabToAdd.required+'","locked": "'+myTextTabToAdd.locked+'","concealValueOnDocument": "'+myTextTabToAdd.concealValueOnDocument+'","disableAutoSize": "'+myTextTabToAdd.disableAutoSize+'","tabLabel": "'+myTextTabToAdd.tabLabel+'","documentId": "'+myTextTabToAdd.documentId+'","recipientId": "7","pageNumber": "'+myTextTabToAdd.pageNumber+'","xPosition": "'+myTextTabToAdd.xPosition+'","yPosition": "'+myTextTabToAdd.yPosition+'"}]}';

HttpRequest request = new HttpRequest();
request.setEndpoint(DSEndpoint + 'accounts/'+DSAccountID+'/envelopes/'+envelopeID+'/recipients/7/tabs');
request.setMethod('POST');
request.setHeader('Content-Type', 'application/json');
request.setHeader('X-DocuSign-Authentication', '<DocuSignCredentials><Username>'+DSUserId+'</Username><Password>'+DSPassword+'</Password><SendOnBehalfOf>david.grigsby@docusign.com</SendOnBehalfOf><IntegratorKey>'+DSIntegratorKey+'</IntegratorKey></DocuSignCredentials>');
request.setHeader('Accept', 'application/json');
request.setTimeout(120000);
request.setBody(myBody);

system.debug(request.getHeader('X-DocuSign-Authentication'));


HttpResponse myResponse = (new Http()).send(request);

system.debug(myResponse.getBody());

if(myResponse.getStatusCode().format()=='201')
{  
response = myResponse.getBody();
system.debug(response);

}

}
catch(Exception ex)
        {
            system.debug(ex);

        }
        finally
        {

        }

        return response;
    }

    public static string deleteRecipientTab(string envelopeID, string recipientGuid)
    {
    string response = '{}';
    string DSEndpoint = 'https://demo.docusign.net/restapi/v2/';
    string DSUserId = 'yourdsUserid';
    string DSPassword = 'yourdspassword';
    string DSAccountID = 'yourdsaccountID';
    string DSIntegratorKey = 'yourdsintegratorkey';


    try
{

//FORCES that the DocuSign member has to be in the DocuSign account DSFS is configured for
List<dsfs__DocuSignAccountConfiguration__c> dsAccountConfig = [Select d.dsfs__UseSendOnBehalfOf__c, d.dsfs__DocuSignBaseURL__c, d.dsfs__DSProSFUsername__c, d.dsfs__DSProSFPassword__c, d.dsfs__AccountId__c From dsfs__DocuSignAccountConfiguration__c d limit 1];

for(dsfs__DocuSignAccountConfiguration__c myConfig : dsAccountConfig)
{

DSEndpoint = myConfig.dsfs__DocuSignBaseURL__c + 'restapi/v2/';
DSUserId = myConfig.dsfs__DSProSFUsername__c;
DSPassword = myConfig.dsfs__DSProSFPassword__c;

}

HttpRequest request = new HttpRequest();
request.setEndpoint(DSEndpoint + 'accounts/'+DSAccountID+'/envelopes/'+envelopeID+'/recipients/'+recipientGuid);
request.setMethod('DELETE');
request.setHeader('Content-Type', 'application/json');
request.setHeader('X-DocuSign-Authentication', '<DocuSignCredentials><Username>'+DSUserId+'</Username><Password>'+DSPassword+'</Password><SendOnBehalfOf>youremail@yourdomain.com</SendOnBehalfOf><IntegratorKey>'+DSIntegratorKey+'</IntegratorKey></DocuSignCredentials>');
request.setHeader('Accept', 'application/json');
request.setTimeout(120000);

system.debug(request.getHeader('X-DocuSign-Authentication'));


HttpResponse myResponse = (new Http()).send(request);

system.debug(myResponse.getBody());

if(myResponse.getStatusCode().format()=='200')
{  
response = myResponse.getBody();
system.debug(response);

}

}
catch(Exception ex)
        {
            system.debug(ex);

        }
        finally
        {

        }

        return response;
    } 

        public static string deleteBlockingRecipient(string envelopeID, string recipientGuid)
    {
    string response = '{}';
    string DSEndpoint = 'https://demo.docusign.net/restapi/v2/';
    string DSUserId = 'yourdsUserid';
    string DSPassword = 'yourdspassword';
    string DSAccountID = 'yourdsaccountID';
    string DSIntegratorKey = 'yourdsintegratorkey';


    try
{

//FORCES that the DocuSign member has to be in the DocuSign account DSFS is configured for
List<dsfs__DocuSignAccountConfiguration__c> dsAccountConfig = [Select d.dsfs__UseSendOnBehalfOf__c, d.dsfs__DocuSignBaseURL__c, d.dsfs__DSProSFUsername__c, d.dsfs__DSProSFPassword__c, d.dsfs__AccountId__c From dsfs__DocuSignAccountConfiguration__c d limit 1];

for(dsfs__DocuSignAccountConfiguration__c myConfig : dsAccountConfig)
{

DSEndpoint = myConfig.dsfs__DocuSignBaseURL__c + 'restapi/v2/';
DSUserId = myConfig.dsfs__DSProSFUsername__c;
DSPassword = myConfig.dsfs__DSProSFPassword__c;

}

HttpRequest request = new HttpRequest();
request.setEndpoint(DSEndpoint + 'accounts/'+DSAccountID+'/envelopes/'+envelopeID+'/recipients/'+recipientGuid);
request.setMethod('DELETE');
request.setHeader('Content-Type', 'application/json');
request.setHeader('X-DocuSign-Authentication', '<DocuSignCredentials><Username>'+DSUserId+'</Username><Password>'+DSPassword+'</Password><SendOnBehalfOf>youremail@yourdomain.com</SendOnBehalfOf><IntegratorKey>'+DSIntegratorKey+'</IntegratorKey></DocuSignCredentials>');
request.setHeader('Accept', 'application/json');
request.setTimeout(120000);

system.debug(request.getHeader('X-DocuSign-Authentication'));


HttpResponse myResponse = (new Http()).send(request);

system.debug(myResponse.getBody());

if(myResponse.getStatusCode().format()=='200')
{  
response = myResponse.getBody();
system.debug(response);

}

}
catch(Exception ex)
        {
            system.debug(ex);

        }
        finally
        {

        }

        return response;
    }    

public static RecipientResponse parseRecipentResponse(String json) {
return (RecipientResponse) System.JSON.deserialize(json, RecipientResponse.class);
}

public static RecipientTabResponse parseRecipientTabResponse(String json) {
return (RecipientTabResponse) System.JSON.deserialize(json, RecipientTabResponse.class);
}
    public class Signer
    {
    public string name;
    public string email;
    public string recipientId;
    public string recipientIdGuid;
    public string requireIdLookup;
    public string userId;
    public string routingOrder;
    public string roleName;
    public string status;
    public string signedDateTime;
    public string deliveredDateTime;
    public string templateLocked;
    public string templateRequired;

    }

    public class RecipientResponse
    {
    public List<Signer> signers;
    public List<Signer> agents;
    public List<Signer> editors;
    public List<Signer> intermediaries;
    public List<Signer> carbonCopies;
    public List<Signer> certifiedDeliveries;
    public List<Signer> inPersonSigners;
    public String recipientCount;
    public String currentRoutingOrder;


    }

public class TextTabs {
public Integer height;
public String validationPattern;
public String validationMessage;
public String shared;
public String requireInitialOnSharedChange;
public String name;
public String value;
public Integer width;
public String required;
public String locked;
public String concealValueOnDocument;
public String disableAutoSize;
public String tabLabel;
public String documentId;
public String recipientId;
public String pageNumber;
public String xPosition;
public String yPosition;
public String tabId;
}

public class RecipientTabResponse 
{
public List<TextTabs> textTabs;



}



}


Share : facebook icon twitter icon
SalesForce, How do I update a field on one object from using data from another obj?

SalesForce, How do I update a field on one object from using data from another obj?


By : dgaissert
Date : March 29 2020, 07:55 AM
hop of those help? This can be accomplished by a workflow or an Apex Trigger.
To use a workflow, go to Setup - Create - Workflow & Approvals - Workflow Rules.
How to wrap text for a data field tag in Docusign

How to wrap text for a data field tag in Docusign


By : user3134844
Date : March 29 2020, 07:55 AM
like below fixes the issue We just need to declare height and width parameters in the docusign api call when creating a custom data field/text tab. For reference, use this link
https://community.docusign.com/t5/Sending-Options-and-Features/Text-Wrap/td-p/6017
Docusign Rest API: Not able to associate docusign with salesforce record

Docusign Rest API: Not able to associate docusign with salesforce record


By : Rehab
Date : March 29 2020, 07:55 AM
I think the issue was by ths following , I was able to resolve this by providing different value for name property in request json. "Name":"##SFOpportunity"
C# DocuSign API: How to prefill form field data

C# DocuSign API: How to prefill form field data


By : user3386046
Date : March 29 2020, 07:55 AM
This might help you I am trying to figure out a way to pre-fill form field data in a docusign form via the docusign api. Currently, I can successfully create my envelope via the following (with no prefilled data): , Your TemplateRole has Tabs object, this is how you add a new one.
code :
var tabs = new Tabs();
var textTab1 = new Text();
textTab1.Value = "test";
tabs.TextTabs = new List<Text>();
tabs.TextTabs.Add(textTab1);
trole1.Tabs = tabs;
Salesforce Data into Python (simple-Salesforce or salesforce-bulk)

Salesforce Data into Python (simple-Salesforce or salesforce-bulk)


By : Bogdan Brezuica
Date : March 29 2020, 07:55 AM
Any of those help I'm trying to load Salesforce data into a Python dataframe, so we can do all of our manipulations there. simple_salesforce worked with the caveat that we reached the 2,000 limit: , Change the line
Related Posts Related Posts :
  • Looking for simplest option to render Razor cshtml pages in a console application without any web server
  • Evaluating variables at a specific time in Modelica
  • When I run the Application, only "web" engine is running in GlassFish. "webservices" is not started
  • How To Set MIME Type Of Google Drive File
  • Remove Missing Values in Weka
  • Reloading a UICollectionView using reloadData method returns immediately before reloading data
  • carrot2 - can I cluster documents from a folder?
  • StreamSocket has no Close Implementation in C#
  • Rails, Foundation 4, Respond.js not working properly in IE8
  • How can i create imagesurface from cairo xlib's Graphics Context using cairo and x11 Api's?
  • CKEditor "overflow: scroll" on parent causes toolbar to freeze at initial position
  • Differences between components and controls in ENYO
  • Photoshop making isometric?
  • Does Intel IPP 8.0 support in-place operations?
  • What is Object dictionary in CANOpen?
  • Example of orbBasic Indexed User Variables
  • convert to ABSOLUTE in logback
  • How to conditionally download file using p:fileDownload
  • Error on pod install
  • Set HTTP GET Parameters in Finagle
  • different attack that uses sql injection
  • How can I change my xampp username not as 'root'
  • AMQP Content header payload structure
  • Apache POI formula evaluation not working for Excel IF
  • How can I trace RESTEasy's dispatch?
  • Map Freezes on iOS 7 with Google Maps SDK 1.4
  • Comparing lists, is the subset list within the first list
  • Non-ascii character highlight in Sublime Text 2
  • Installing Magit in Aquamacs
  • Receiving error - System.Net.Mail.SmtpException: 4.3.2 try again later
  • Coreaudio render callback in monotouch
  • The command 'yarn --v' also initiates 'yarn install' and installs packages automatically. Why is this happening?
  • save multiple matches in a list (grep or awk)
  • Can a number register be used in a groff request?
  • Mapping FAQ with RASA for large dataset (2000+)
  • Fragment not receiving LiveData updates after remove + add
  • FitText.js makes text bigger rather than smaller
  • ARM - Implementing stack with load/store multiple register values
  • How to check if a ChromeCast Session is already in progress
  • ngForm inside a Carousel Slide in UI Bootstrap not working
  • Clearing attributes in Tritium
  • "vagrant up" failing: Vagrant VM failed to remain in the running state
  • ftsearch returning empty docs
  • What are the advantages of setting "hive.exec.parallel" to false in Hive ?
  • Creating a root certificate in FiddlerCore
  • How to access app.config in a blueprint?
  • DB2 RECORDSET table name converted to uppercase
  • Resizing the superview according to the subviews
  • IExpress - Disable Compression
  • Getting InvalidProtocolBufferException while running oozie job
  • What are the differences between Play run and start?
  • How can I share props in ReasonReact?
  • Task.Delay is skipped
  • Parsley.js Password Confirm doesn‘t work
  • How to get all registred 'browser:resource' in Plone
  • Overriding page_list controller inside a package in Concrete5.6.1.2
  • Robolectric 2.x - dependent jars are downloading while running the tests
  • Setting Flyout to Main Frame Navigation(Windows 8.1 app store)
  • Build project - Nuget Error
  • How to recover admin password for SonarQube
  • shadow
    Privacy Policy - Terms - Contact Us © ourworld-yourmove.org