TC-5915 Van Wijnen

Fix SignHost annuleringsmail

Total hours: 2.5

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):

  1. Vraagt om een reden via de "Signhost Cancel Reason"-pagina
  2. Roept SendCancelEMailToSigners 2x aan (extern + intern) → verstuurt mailsjabloon 127/128
  3. Stuurt een DELETE naar de Signhost API om de transactie te annuleren
  4. Zet Status en/of Status (Internal) op Cancelled

Statusupdate vanuit Signhost (UpdateSignhostData in codeunit 11012637, getriggerd door codeunit 11020230):

  1. Haalt de transactiestatus op via de Signhost API
  2. UpdateSignhostDocument werkt de documentstatus bij (wordt Cancelled als Signhost dat rapporteert)
  3. UpdateSignhostSigners werkt de ondertekenaarvelden bij, waaronder "Rejected Date-Time" en "Rejected Date-Time (Internal)"
  4. 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:

  • UpdateSignhostSigners vult "Rejected Date-Time" of "Rejected Date-Time (Internal)" correct
  • UpdateSignhostDocument zet de documentstatus waarschijnlijk op Cancelled (afhankelijk van Signhost API response)
  • Maar SendCancelEMailToSigners wordt 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:

  1. Bij elke wijziging van een Signhost Signer wordt het oude record uit de database opgehaald (xRec is onbetrouwbaar bij wijzigingen vanuit code)
  2. Als "Rejected Date-Time" of "Rejected Date-Time (Internal)" van leeg naar gevuld gaat → afwijzing gedetecteerd
  3. SendCancelEMailToSigners wordt 2x aangeroepen (extern + intern), dezelfde aanpak als CancelSignhostTransaction
  4. De documentstatus wordt bijgewerkt naar Cancelled

Design keuzes:

  • SingleInstance = true met een IsHandlingRejection-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; UpdateSignhostDocument zet 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

  1. Maak een inkooporder aan
  2. Genereer een Word-sjabloon
  3. Wijs ondertekenaars toe (gebruik je eigen e-mailadres)
  4. Verzend het ondertekenverzoek
  5. Wijs het verzoek online af via Signhost
  6. Draai codeunit 11020230 "Update Signhost Data" (bijv. via taakwachtrij)
  7. Verwacht: Annuleringsmail (sjabloon 127 of 128) wordt ontvangen op je e-mailadres
  8. Controleer: Signhost Document status = Cancelled
  9. Controleer: "Cancel Message Sent Date-Time" is gevuld op de Signhost Signer records

Resultaat:

Test 02: Handmatige annulering werkt nog steeds

  1. Maak een nieuw ondertekenverzoek aan (zelfde stappen 1-4)
  2. Annuleer de transactie vanuit BC (handmatig)
  3. Verwacht: Annuleringsmail wordt verzonden (bestaande functionaliteit, mag niet kapot zijn)
  4. Verwacht: Status = Cancelled

Resultaat:

Test 03: Geen dubbele mails bij al-geannuleerde transactie

  1. Gebruik het verzoek uit Test 01 (al geannuleerd)
  2. Draai codeunit 11020230 nogmaals
  3. 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:

  1. Een inkooporder aanmaken en een Word-sjabloon genereren
  2. Ondertekenaars toewijzen en het ondertekenverzoek verzenden
  3. Het verzoek online afwijzen via Signhost
  4. De statusupdate laten draaien (codeunit "Update Signhost Data")
  5. Controleren of de annuleringsmail is ontvangen

Als alles correct werkt, kunnen we de fix doorplaatsen naar productie.

Met vriendelijke groet, Jonathan

Time Entries

DateHoursDescription
2026-03-242.5

Activity

2026-04-01 11:18:48 status changed from "in_progress" to "testing"
2026-04-01 11:18:37 2.5h logged for 2026-03-24
2026-04-01 11:18:11 status changed from "done" to "in_progress"
2026-04-01 11:05:40 Document "analysis" added
2026-04-01 11:05:40 Document "client_email" added
2026-04-01 11:04:43 Ticket "Fix SignHost annuleringsmail" created