Mustafa.
Zurück zu allen Projekten

Urla Shoes — Contact-Nationalisierung via Async-Callout

Apex-Async-Callout-Pattern: Bei Contact-Insert ruft ein Queueable-Job die Nationalize.io-API auf und schreibt den wahrscheinlichsten Ländercode zurück auf den Datensatz.

Jahr
2024
Rolle
Salesforce Developer
Technologien
Apex TriggerTrigger HandlerQueueable ApexDatabase.AllowsCalloutsHTTP CalloutHttpCalloutMockRemote Site Setting

Das Problem

Salesforce-Trigger können keine direkten HTTP-Callouts machen, aber das Business wollte Contact-Datensätze zum Zeitpunkt der Erstellung anreichern. Eine naive Lösung über synchrone Flow-Aktion würde unter Last brechen.

Der Ansatz

After-Insert-Trigger → ContactTriggerHandler sammelt die neuen Contact-IDs und enqueued einen einzelnen Queueable-Job mit Database.AllowsCallouts. Der Job ruft api.nationalize.io mit dem FirstName auf, parsed die JSON-Antwort, wählt das Land mit der höchsten Wahrscheinlichkeit und aktualisiert Nationalized_Country__c. Bulk-safe by design — ein Queueable verarbeitet bis zu 200 Kontakte pro Trigger-Invocation.

Das Ergebnis

Volle Testabdeckung mit HttpCalloutMock über sechs Szenarien: Erfolg, leere Antwort, HTTP-500-Fehler, fehlender FirstName, Bulk-Insert von 10 Kontakten und ein direkter Unit-Test des JSON-Parsers. Eine saubere Referenzimplementierung für jeden Apex-Trigger, der eine externe API erreichen muss.