Notifications and signer status
Monday, July 19, 2021 at 08:12pmThis 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
Tuesday, July 20, 2021 at 09:34amHi 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
Reply to: Hi Michael, For …
Tuesday, July 20, 2021 at 10:51amOk I see. But there is no notification for this.We are considering using the 'document viewed' event and just considering if the person has begun to view documents they have 'started signing'. May be good enough for us. Thanks
Reply to: Ok I see. But there is no…
Tuesday, July 20, 2021 at 10:57amFrom 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