Michael_S_Smith

Notifications and signer status

0 votes

This is what we are seeing - please let us know if it is expected.

The Document signed event is only sent when a signer has signed all his blocks on a document. Signing only one of multiple blocks does not generate the event. If the signer has started signing but not completed a document, OneSpan is reporting his status as SIGNING_PENDING.

Now when we try to update the signers information we get the error that we cannot update because signing is in process. Is there any way to know that a signer has started signing but has not completely signed a document? It seems that OneSpan ahs some status on this signer that is hidden from us.


Reply to: Notifications and signer status

0 votes

Hi Michael,

 

For "Document Signed" event, I believe it's expected that the callback notification will ONLY be sent out when a signer has finished all signature blocks in a document, which is consistent to the front end Javascript Notifier.

If your goal is to tell if a signer has started to sign, not sure if you have been aware of this - In API modelling, there are two types of date “accepted” and “signed” for a signature, where you can find at documents > approvals > accepted / signed. The “accepted” means the timestamp when the signer signed this particular signature, while “signed” refers to the time when signer confirmed all signatures on this document.

Hence the logic could be, for all signatures belonging to a signer in a document:
-if any signature has "signed" date, the document has been signed. 

-if all signatures don't have "signed" date, but any signature in a document has "accepted" date, the document has been partially signed by this signer

-if no signatures have "signed" or "accepted" date, the signer hasn't started to sign.

See below example in Java SDK:

    public void execute() {

        EslClient eslClient = new EslClient(API_KEY, API_URL);
        String packageId = "RTqmolHONm43tcpYUqJWe917EXE=";
        String roleId = "603f8c26-f384-4c5d-b236-4c2e0df0fec3";
        String documentId = "7e04b5551121dd234876f11426ca1ca0d9415c22cdd04be5";
        
        SigningStatus signingStatus = SigningStatus.NOT_STARTED;
        com.silanis.esl.api.model.Package apiPackage = eslClient.getPackageService().getApiPackage(packageId);
        for (com.silanis.esl.api.model.Document document : apiPackage.getDocuments()) {
            if(documentId.equals(document.getId())) {
                for (com.silanis.esl.api.model.Approval approval : document.getApprovals()) {
                    if(roleId.equals(approval.getRole())) {
                        Date signed = approval.getSigned();
                        Date accepted = approval.getAccepted();
                        if(signed != null) {
                            signingStatus = SigningStatus.COMPLETED;
                            break;
                        }else if(accepted != null) {
                            signingStatus = SigningStatus.PARTIAL_COMPLETED;
                            break;
                        }
                    }
                }
            }
        }
        System.out.println(signingStatus.name());
    }

    
    public enum SigningStatus {
        COMPLETED,
        PARTIAL_COMPLETED,
        NOT_STARTED
    }
    

 

Duo

Duo Liang OneSpan Evangelism and Partner Integrations Developer


Reply to:

0 votes

From monitoring signing status's perspective, using the newly introduced "Document Viewed" event should be sufficient for the real time updating. And if your goal is to pre-validate if a signer can update his/her information or to update transaction status in bulk, then the code I provided above might be helpful.

 

Duo

Duo Liang OneSpan Evangelism and Partner Integrations Developer


Hello! Looks like you're enjoying the discussion, but haven't signed up for an account.

When you create an account, we remember exactly what you've read, so you always come right back where you left off