integration of Appian workflow with DocuSign

Hi All,

We want to integrate Appian workflow with Docu Sign. Is there any plugin exists for that? Our Use case is that we want to email the document to client for sign & they can just sign digitally in email & it can send us signed document back to the workflow & workflow will continue after that.

OriginalPostID-243579

  Discussion posts and replies are publicly visible

  • No problem. Could you actually try this one more time with the below expression? I double-checked my old rule. Recipients is not a list under envelope and tabs is not a list under signers. I made those single fields instead.

    a!toJson(
    {
    status: "sent",
    emailSubject: "Request a signature via email example",
    documents: {
    {
    documentId: "1",
    name: "Test_sign_PDF_Template.pdf",
    documentBase64: "#31754#"
    }
    },
    recipients: {
    signers: {
    {
    name: "Rishu Bansal",
    email: "r.rishubansal@gmail.com",
    recipientId: "1",
    tabs: {
    signHereTabs: {
    {
    xPosition: "25",
    yPosition: "50",
    documentId: "1",
    pageNumber: "3"
    }
    }
    }
    }
    }
    }
    }
    )
  • Tyler- Interestingly, I creates CDT & tried to work through that my CDT expression looked like:

    [status=sent, emailSubject=Request a signature via email example, documents=[documentId=1, name=Test_sign_PDF_Template.pdf, documentBase64=31754], recipients=[signers=[name=Rishu Bansal, email=r.rishubansal@gmail.com, recipientId=1, tabs=[Signer_tab_SignHereTab=[xPosition=25, yPosition=50, documentId=1, pageNumber=3]]]]]

    But I still got the same error:

    { "errorCode": "INVALID_REQUEST_BODY", "message": "The request body is missing or improperly formatted. Cannot deserialize the current JSON array (e.g. [1,2,3]) into type 'API_REST.Models.v2.recipients' because the type requires a JSON object (e.g. {\\"name\\":\\"value\\"}) to deserialize correctly.\\r\
    To fix this error either change the JSON to a JSON object (e.g. {\\"name\\":\\"value\\"}) or change the deserialized type to an array or a type that implements a collection interface (e.g. ICollection, IList) like List<T> that can be deserialized from a JSON array. JsonArrayAttribute can also be added to the type to force it to deserialize from a JSON array.\\r\
    Path 'recipients', line 1, position 1718938."}

    Any Idea?
  • Your above mentioned expression worked Tyler. Thank you so much.
  • Hey Tyler, can you please check my another post where I am facing issue while querying status but getting error?
    forum.appian.com/.../http query issue for docusign

    Thanks
  • HI I have the same requirement. I am getting the 400 error. Can you please point out if I am missing here something. Please find my code below:
    load(
    local!authHeader:"X-DocuSign-Authentication",
    local!credentials:{"Username":"<useremail>","Password":"<userPassword>","IntegratorKey":"<IntegratorKeyGenerated>"},
    local!signers:{"email":"recepientMail","name":"<recepientName>","recipientId":1,"routingOrder":1},
    local!documents:{"documentId":419616 ,"name":"Affinity Physician Statement Form","documentBase64":convertdocumenttobase64(419616)},
    local!emailDetails:{"emailSubject":"TestEmail","emailBlurb":"ShowsHowTocreateEnvlope","recipients":{"signers":local!signers},"documents":local!documents,"status":"sent"},

    local!login:a!httpQuery(
    url:"demo.docusign.net/.../login_information",
    headers:{
    a!httpHeader(local!authHeader, a!toJson(local!credentials))
    }
    ).result.body,

    local!baseUrl:a!fromJson(local!login).loginAccounts.baseUrl,

    local!envelopeRequest:bind(
    get:
    a!httpQuery(
    url:local!baseUrl&"/envelopes",
    headers:{
    a!httpHeader("Accept","application/json"),
    a!httpHeader("Content-Type","application/json"),
    a!httpHeader(local!authHeader, a!toJson(local!credentials))
    /*a!httpHeader(local!authHeader,a!toJson(local!emailDetails))*/
    }

    ),
    set:
    a!httpWrite(
    url:_,
    method:"POST",
    headers:{
    a!httpHeader("Accept","application/json"),
    a!httpHeader("Content-Type","application/json"),
    a!httpHeader(local!authHeader, a!toJson(local!credentials))
    /*a!httpHeader(local!authHeader,a!toJson(local!emailDetails))*/
    },
    body:{a!toJson(local!emailDetails)}
    )
    )
    )
  • Hi Tyler,

    I am trying to send the request through CDT & getting error "{ "errorCode": "UNSPECIFIED_ERROR", "message": "Non-static method requires a target."}". Attached is the CDT, can you please guide where I am getting it wrong.

    <?xml version="1.0" encoding="utf-8" ?>
    <xsd:schema xmlns="urn:appian:example:assocations:one-to-many" elementFormDefault="qualified" targetNamespace="urn:appian:example:assocations:one-to-many" xmlns:xsd="www.w3.org/.../XMLSchema">
    <xsd:complexType name="envelop">
    <xsd:sequence>
    <xsd:element name="status" nillable="true" type="xsd:string"/>
    <xsd:element name="emailSubject" nillable="true" type="xsd:string"/>
    <xsd:element maxOccurs="unbounded" name="documents" type="documents" />
    <xsd:element maxOccurs="unbounded" name="recipients" type="recipients" />
    </xsd:sequence>
    </xsd:complexType>
    <xsd:complexType name="documents">
    <xsd:sequence>
    <xsd:element name="documentId" nillable="true" type="xsd:int"/>
    <xsd:element name="name" nillable="true" type="xsd:string"/>
    <xsd:element name="documentBase64" nillable="true" type="xsd:string"/>
    </xsd:sequence>
    </xsd:complexType>
    <xsd:complexType name="recipients">
    <xsd:sequence>
    <xsd:element maxOccurs="unbounded" name="signers" type="signers" />
    </xsd:sequence>
    </xsd:complexType>
    <xsd:complexType name="signers">
    <xsd:sequence>
    <xsd:element name="name" nillable="true" type="xsd:string"/>
    <xsd:element name="email" nillable="true" type="xsd:string"/>
    <xsd:element name="recipientId" nillable="true" type="xsd:int"/>
    <xsd:element maxOccurs="unbounded" name="tabs" type="tabs" />
    </xsd:sequence>
    </xsd:complexType>
    <xsd:complexType name="tabs">
    <xsd:sequence>
    <xsd:element maxOccurs="unbounded" name="signHereTabs" type="signHereTabs" />
    </xsd:sequence>
    </xsd:complexType>
    <xsd:complexType name="signHereTabs">
    <xsd:sequence>
    <xsd:element name="xPosition" nillable="true" type="xsd:int"/>
    <xsd:element name="yPosition" nillable="false" type="xsd:int"/>
    <xsd:element name="documentId" nillable="false" type="xsd:int"/>
    <xsd:element name="pageNumber" nillable="true" type="xsd:int"/>
    </xsd:sequence>
    </xsd:complexType>
    </xsd:schema>

    Thanks
    Rishu