Fix SignHost annuleringsmail
Documents
Fix: Annuleringsmail wordt niet verzonden bij afwijzing in Signhost
Fix: Annuleringsmail wordt niet verzonden bij afwijzing in Signhost
Datum: 2026-03-24
Klant: Van Wijnen
Bestanden: Cod99028.SignhostEventsVW.al (nieuw)
Symptomen
Wanneer een ondertekenaar in Signhost een ondertekenverzoek afwijst, wordt de annuleringsmail (sjabloon 127/128) niet verzonden naar de overige ondertekenaars. Als je vanuit BC de transactie handmatig annuleert werkt het wél.
Hoe het Signhost-proces werkt
Het ondertekenproces in BC verloopt via twee sporen:
Handmatige annulering vanuit BC (CancelSignhostTransaction in codeunit 11012637):
- Vraagt om een reden via de "Signhost Cancel Reason"-pagina
- Roept
SendCancelEMailToSigners2x aan (extern + intern) → verstuurt mailsjabloon 127/128 - Stuurt een DELETE naar de Signhost API om de transactie te annuleren
- Zet
Statusen/ofStatus (Internal)op Cancelled
Statusupdate vanuit Signhost (UpdateSignhostData in codeunit 11012637, getriggerd door codeunit 11020230):
- Haalt de transactiestatus op via de Signhost API
UpdateSignhostDocumentwerkt de documentstatus bij (wordt Cancelled als Signhost dat rapporteert)UpdateSignhostSignerswerkt de ondertekenaarvelden bij, waaronder"Rejected Date-Time"en"Rejected Date-Time (Internal)"- Verstuurt sign request e-mails (alleen als status niet Cancelled/Expired is)
Oorzaak
In de flow "Statusupdate vanuit Signhost" ontbreekt het versturen van annuleringsmails. Wanneer een ondertekenaar afwijst in Signhost:
UpdateSignhostSignersvult"Rejected Date-Time"of"Rejected Date-Time (Internal)"correctUpdateSignhostDocumentzet de documentstatus waarschijnlijk op Cancelled (afhankelijk van Signhost API response)- Maar
SendCancelEMailToSignerswordt nergens aangeroepen in deze flow
De procedure SendCancelEMailToSigners wordt alleen aangeroepen vanuit CancelSignhostTransaction (handmatige annulering). Er is geen pad dat deze procedure aanroept wanneer de afwijzing van Signhost binnenkomt.
De fix
Bestand: Cod99028.SignhostEventsVW.al (nieuw)
Een EventSubscriber op OnBeforeModifyEvent van de "Signhost Signer"-tabel die detecteert wanneer een rejected datum wordt gevuld.
Werking:
- Bij elke wijziging van een Signhost Signer wordt het oude record uit de database opgehaald (xRec is onbetrouwbaar bij wijzigingen vanuit code)
- Als
"Rejected Date-Time"of"Rejected Date-Time (Internal)"van leeg naar gevuld gaat → afwijzing gedetecteerd SendCancelEMailToSignerswordt 2x aangeroepen (extern + intern), dezelfde aanpak alsCancelSignhostTransaction- De documentstatus wordt bijgewerkt naar Cancelled
Design keuzes:
SingleInstance = truemet eenIsHandlingRejection-guard voorkomt recursie (SendCancelEMailToSigners doet intern ook Modify-aanroepen op Signhost Signers)- De Signhost API DELETE-aanroep wordt niet gedaan omdat Signhost zelf de transactie al heeft geannuleerd wanneer een ondertekenaar afwijst
- De documentstatus-update is een vangnet;
UpdateSignhostDocumentzet de status waarschijnlijk al op Cancelled op basis van de Signhost API response
Testen
Voorbereiding
Zorg dat codeunit 11020230 "Update Signhost Data" beschikbaar is via de taakwachtrij of handmatig uitvoerbaar.
Test 01: Afwijzing door externe ondertekenaar
- Maak een inkooporder aan
- Genereer een Word-sjabloon
- Wijs ondertekenaars toe (gebruik je eigen e-mailadres)
- Verzend het ondertekenverzoek
- Wijs het verzoek online af via Signhost
- Draai codeunit 11020230 "Update Signhost Data" (bijv. via taakwachtrij)
- Verwacht: Annuleringsmail (sjabloon 127 of 128) wordt ontvangen op je e-mailadres
- Controleer: Signhost Document status = Cancelled
- Controleer: "Cancel Message Sent Date-Time" is gevuld op de Signhost Signer records
Resultaat:
Test 02: Handmatige annulering werkt nog steeds
- Maak een nieuw ondertekenverzoek aan (zelfde stappen 1-4)
- Annuleer de transactie vanuit BC (handmatig)
- Verwacht: Annuleringsmail wordt verzonden (bestaande functionaliteit, mag niet kapot zijn)
- Verwacht: Status = Cancelled
Resultaat:
Test 03: Geen dubbele mails bij al-geannuleerde transactie
- Gebruik het verzoek uit Test 01 (al geannuleerd)
- Draai codeunit 11020230 nogmaals
- Verwacht: Geen nieuwe annuleringsmail (transactie is al Cancelled, UpdateSignhostData skipt)
Resultaat:
Status
IN PROGRESS
Mail klant SignHost annuleringsmail
Hallo,
We hebben het probleem onderzocht waarbij de annuleringsmail niet wordt verzonden wanneer een ondertekenaar een ondertekenverzoek afwijst via Signhost.
De oorzaak was dat de koppeling tussen Signhost en BC alleen annuleringsmails verstuurde bij een handmatige annulering vanuit BC, maar niet wanneer een ondertekenaar het verzoek in Signhost zelf afwees. De status werd wel correct bijgewerkt, maar de mails aan de overige ondertekenaars werden niet verstuurd.
De fix zorgt ervoor dat wanneer de Signhost-statusupdate een afwijzing detecteert, automatisch de annuleringsmail (sjabloon 127/128) wordt verstuurd naar alle betrokken ondertekenaars. Dit is dezelfde mail die ook wordt verstuurd bij een handmatige annulering.
Jullie kunnen dit testen door:
- Een inkooporder aanmaken en een Word-sjabloon genereren
- Ondertekenaars toewijzen en het ondertekenverzoek verzenden
- Het verzoek online afwijzen via Signhost
- De statusupdate laten draaien (codeunit "Update Signhost Data")
- Controleren of de annuleringsmail is ontvangen
Als alles correct werkt, kunnen we de fix doorplaatsen naar productie.
Met vriendelijke groet, Jonathan
Time Entries
| Date | Hours | Description |
|---|---|---|
| 2026-03-24 | 2.5 |