0

I am trying to integrate with the DocuSign Connect service. I've setup a WCF service to handle this, but so far have had no luck receiving the DocuSignEnvelopeInformation object properly.

I believe it is related to the issue that Mark Bailey posted about back in December: Why is my WCF web service presenting this object in a different namespace with different field names?. However as you will see in my code, I have already marked the DocuSignConnectUpdate method with [XmlSerializerFormat] in the interface. Is there something else I'm missing?

My Interface:

<ServiceContract(Namespace:="http://www.docusign.net/API/3.0")>
Public Interface IDSConnectService
    <OperationContract()>
    <XmlSerializerFormat()>
    Function DocuSignConnectUpdate(ByVal DocuSignEnvelopeInformation As DocuSignEnvelopeInformation)As String
End Interface

My Class:

<AspNetCompatibilityRequirements(RequirementsMode:=AspNetCompatibilityRequirementsMode.Allowed)>
<ServiceBehavior(AddressFilterMode:=AddressFilterMode.Any, Namespace:="http://www.docusign.net/API/3.0")>
Public Class DSConnectService
    Implements IDSConnectService

Public Function DocuSignConnectUpdate(ByVal DocuSignEnvelopeInformation As DocuSignEnvelopeInformation) As String Implements IDSConnectService.DocuSignConnectUpdate

    If Not DocuSignEnvelopeInformation Is Nothing Then
        ...........
        Return DocuSignEnvelopeInformation.EnvelopeStatus.EnvelopeID 
    Else
        Return "No Envelope Information Received"
    End If
End Function

The DocuSignConnectUpdate always returns "No Envelope Information Received" when publishing EnvelopeInformation through the DocuSign Connect Service (but works fine for my local test client).

My web.config settings:

......
<system.serviceModel>
<services>
  <service name="MyService.DSConnectService" behaviorConfiguration="MyBehavior" >
    <endpoint address=""
              binding="basicHttpBinding"
              contract="MyService.IDSConnectService"/>
    <endpoint address="mex"
              binding="mexHttpBinding"
              contract="IMetadataExchange" />
  </service>
</services>
<behaviors>
  <endpointBehaviors>
    <behavior name="xmlEndpointBehavior">
      <webHttp helpEnabled="true" />
    </behavior>
  </endpointBehaviors>
  <serviceBehaviors>
    <behavior name="MyBehavior">
      <serviceMetadata httpGetEnabled="true" />
      <serviceDebug includeExceptionDetailInFaults="false" />
    </behavior>
  </serviceBehaviors>
</behaviors>
<bindings>
  <basicHttpBinding>
    <binding name="" closeTimeout="00:01:00" openTimeout="00:01:00"
      receiveTimeout="00:10:00" sendTimeout="00:01:00" allowCookies="false"
      bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
      maxBufferPoolSize="2147483647" maxBufferSize="2147483647" maxReceivedMessageSize="2147483647"
      textEncoding="utf-8" transferMode="Buffered" useDefaultWebProxy="true"
      messageEncoding="Text">
      <readerQuotas maxDepth="2000000" maxStringContentLength="2147483647"
        maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
    </binding>
  </basicHttpBinding>
</bindings>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" aspNetCompatibilityEnabled="true" />
</system.serviceModel>
<system.webServer>
  <modules runAllManagedModulesForAllRequests="true"/>
</system.webServer>

EDIT: Here is an example of the XML that is being sent by DocuSign and my test client (I copied the xml from the Connect logs and used it in my client request).

<?xml version="1.0" encoding="UTF-8"?>
<DocuSignEnvelopeInformation xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.docusign.net/API/3.0">
  <EnvelopeStatus>
    <RecipientStatuses>
      <RecipientStatus>
        <Type>Signer</Type>
        <Email>role99@email.com</Email>
        <UserName>Producer Name</UserName>
        <RoutingOrder>1</RoutingOrder>
        <Sent>2014-09-04T09:51:52.107</Sent>
        <Delivered>2014-09-04T09:55:26.62</Delivered>
        <Signed>2014-09-04T09:55:26.62</Signed>
        <DeclineReason xsi:nil="true"/>
        <Status>Completed</Status>
        <RecipientIPAddress>255.255.255.255</RecipientIPAddress>
        <ClientUserId>99</ClientUserId>
        <CustomFields/>
        <AccountStatus>Active</AccountStatus>
        <RecipientId>276567ad-763a-45e5-a5b2-38572dfa6bb8</RecipientId>
      </RecipientStatus>
    </RecipientStatuses>
    <TimeGenerated>2014-09-04T09:55:46.5725646</TimeGenerated>
    <EnvelopeID>01f83c1a-135f-438f-87cc-57ce74aba050</EnvelopeID>
    <Subject>Russell Test Signing your Application</Subject>
    <UserName>Russell Test</UserName>
    <Email>my@email.com</Email>
    <Status>Completed</Status>
    <Created>2014-09-04T09:51:51.793</Created>
    <Sent>2014-09-04T09:51:52.153</Sent>
    <Delivered>2014-09-04T09:55:26.683</Delivered>
    <Signed>2014-09-04T09:55:26.683</Signed>
    <Completed>2014-09-04T09:55:26.683</Completed>
    <ACStatus>Original</ACStatus>
    <ACStatusDate>2014-09-04T09:51:51.793</ACStatusDate>
    <ACHolder>Russell Test</ACHolder>
    <ACHolderEmail>my@email.com</ACHolderEmail>
    <ACHolderLocation>DocuSign</ACHolderLocation>
    <SigningLocation>Online</SigningLocation>
    <SenderIPAddress>255.255.255.255 </SenderIPAddress>
    <EnvelopePDFHash/>
    <CustomFields>
    </CustomFields>
    <AutoNavigation>true</AutoNavigation>
    <EnvelopeIdStamping>true</EnvelopeIdStamping>
    <AuthoritativeCopy>false</AuthoritativeCopy>
    <DocumentStatuses>
      <DocumentStatus>
        <ID>1</ID>
        <Name>TestForm1</Name>
        <TemplateName/>
        <Sequence>1</Sequence>
      </DocumentStatus>
      <DocumentStatus>
        <ID>2</ID>
        <Name>TestForm2</Name>
        <TemplateName/>
        <Sequence>2</Sequence>
      </DocumentStatus>
      <DocumentStatus>
        <ID>3</ID>
        <Name>TestForm3</Name>
        <TemplateName/>
        <Sequence>3</Sequence>
      </DocumentStatus>
      <DocumentStatus>
        <ID>4</ID>
        <Name>Signed-on-Paper_276567ad-763a-45e5-a5b2-38572dfa6bb8</Name>
        <TemplateName/>
        <Sequence>4</Sequence>
      </DocumentStatus>
    </DocumentStatuses>
  </EnvelopeStatus>
</DocuSignEnvelopeInformation>

Any suggestions?

Community
  • 1
  • 1
Russell
  • 1
  • 1
  • What's the difference in your XML and DocuSign's XML that is being pushed? Can you post both of them to view? – Andrew Sep 03 '14 at 20:36
  • @AndrewWilson There is no difference in the XML. The XML that I used for my test client was taken from the DocuSign Connect Logs. So it should be the same (XML Appended). – Russell Sep 04 '14 at 14:28
  • please post your Input that you're getting into .net for both of them. If they were the same, they would both work. (not from the Connect logs) – Andrew Sep 05 '14 at 19:30
  • @Russell Any luck with this? I'm stuck on the same thing! – RizJa Nov 10 '15 at 20:04

1 Answers1

0

Try the following decorators, where your_descriptor can be something generic for all your services or more specific.

http://your_domain/your_descriptor")> Public Interface IDSConnectService

[OperationContract(Action = "http://your_domain/your_descriptor/DocuSignConnectUpdate",
    ReplyAction = "http://your_domain/your_descriptor/DocuSignConnectUpdateResponse"
    )]
Function DocuSignConnectUpdate(ByVal DocuSignEnvelopeInformation As DocuSignEnvelopeInformation)As String

(no decorators or use the namespace above) Public Class DSConnectService Implements IDSConnectService