templatessoapsalesforcedocusignapisoapfault

SOAP Fault when Using DocuSign API with Salesforce for Creating Envelope with Templates


I am using Salesforce with DocuSign to try and create an envelope via templates.

    DocuSignAPI.EnvelopeTemplates templates = soapService.requestTemplates(accountId, false);
    String templateId = templates.EnvelopeTemplateDefinition[0].TemplateID;

    DocuSignAPI.EnvelopeTemplate template = soapService.requestTemplate(templateId, false);

    DocuSignAPI.EnvelopeInformation envelopeInformation = new DocuSignAPI.EnvelopeInformation();
    envelopeInformation.Subject = 'XXXXXXXXXXX';
    envelopeInformation.AccountId = accountId;
    envelopeInformation.EmailBlurb = 'XXXXXXXXXXXXX';

    DocuSignAPI.TemplateReference templateReference = new DocuSignAPI.TemplateReference();
    templateReference.RoleAssignments = new DocuSignAPI.ArrayOfTemplateReferenceRoleAssignment();
    templateReference.Template = template.EnvelopeTemplateDefinition.TemplateID;
    templateReference.TemplateLocation = 'Server';

    DocuSignAPI.Recipient recipient = new DocuSignAPI.Recipient();
    recipient.ID = currentRecipientIndex + 1;
    recipient.Type_x = 'Signer';
    recipient.Email = 'XXXXXXXXXXXXXXXX';
    recipient.UserName = 'XXXXXXXXXXXXXXXXX';
    recipient.RoutingOrder = 1;

    DocuSignAPI.ArrayOfRecipient1 recipients = new DocuSignAPI.ArrayOfRecipient1();
    recipients.Recipient = new DocuSignAPI.Recipient[1];
    recipients.Recipient.add(recipient);

    DocuSignAPI.TemplateReferenceRoleAssignment trra = new DocuSignAPI.TemplateReferenceRoleAssignment();
    trra.RoleName='Stake holder';
    trra.RecipientID = recipient.ID;

    templateReference.RoleAssignments.RoleAssignment = new DocuSignAPI.TemplateReferenceRoleAssignment[1];
    templateReference.RoleAssignments.RoleAssignment.add(trra);

    DocuSignAPI.ArrayOfTemplateReference arrayOfTemplateReference = new DocuSignAPI.ArrayOfTemplateReference();
    arrayOfTemplateReference.TemplateReference = new DocuSignAPI.TemplateReference[1];
    arrayOfTemplateReference.TemplateReference.add(templateReference);

    DocuSignAPI.EnvelopeStatus status = soapService.createEnvelopeFromTemplates(arrayOfTemplateReference, recipients, envelopeInformation, true);

However, upon running the code, I get the following error:

Web service callout failed: WebService returned a SOAP Fault: Unspecified_Error faultcode=soap:Server faultactor=https://demo.docusign.net/api/3.0/dsapi.asmx

And this references the DocuSignAPI where the WebServiceCallout is invoked. Given the ambiguity of the error, I would appreciate any thoughts on what could be causing this.


Solution

  • As an update to this post, I was able to find the error. The indexing for Apex starts at 0 not 1 (unlike MatLab which is what caused my confusion). Because I was starting at index 1, the XML request was passing 'null' values at the 0th index, causing the error. Starting at 0, removed the null values from the XML and the request went through.