In 5 stappen naar een email notificatie in Azure Data Factory
Azure Data Factory biedt zelf niet de mogelijkheid om e-mail notificaties te sturen. In deze blog laat ik zien hoe je in 5 stappen zelf een automatische e-mail notificatie ontwikkelt die het signaal geeft wanneer een pipeline gefaald is. Zo hoef je niet meer elke dag handmatig je laadprocessen te controleren. En voorkom je dat je met incorrecte data aan het werk bent als je het een dag vergeet.
Om zelf een automatische e-mail notificatie te ontwikkelen in Azure Data Factory volg je deze 5 stappen:
- Aanmaken van de Logic App
- Kiezen van de template in Logic App
- Ontwerpen van de Logic App
- Ontwikkelen van de e-mail functionaliteit in Azure Data Factory
- Toevoegen van de e-mail functionaliteit aan de gewenste pipeline


Meer informatie over Ruben
Ruben Harders
1. Aanmaken van de logic app
De allereerste stap in het ontwikkelen van een e-mail notificatie in Azure Data Factory is het aanmaken van een Logic App. Dit kun je als volgt doen in de Azure Portal onder nieuwe resources:
- Create a resource
- Zoek naar Logic App en klik op create
- Kies een naam, de subscription, resourcegroep* en de locatie
- Laat Log Analytics op uit staan
- Klik op create en je logic app wordt aangemaakt.
* In dit stappenplan wordt gebruik gemaakt van een bestaande resourcegroup. Je kan zelf een nieuwe aanmaken wanneer dit noodzakelijk is.

2. De template van de Logic App kiezen
Zodra de Logic App gedeployed is ga je naar de Logic App toe. Hier kun je in het menu via Edit of logic app designer gaan ontwikkelen. Je kunt daarbij kiezen uit verschillende templates. Voor het verzenden van e-mail notificaties maak ik gebruik van ‘When a HTTP request is received’.

3. Het ontwerpen van de Logic App
Wanneer je de template gekozen hebt selecteer je de POST method met de JSON code die hieronder te zien is. Deze is naar eigen voorkeur in te vullen. De volgende velden worden in de JSON code meegegeven (zie ook onderstaande afbeelding voor het voorbeeld):
- Het emailadres van de ontvanger
- Het onderwerp van de mail
- De naam van de Data Factory
- De naam van de Pipeline
- The activity die gefaald/geslaagd is
- De reden/ het bericht
{
"properties": {
"Activity": {
"type": "string"
},
"DataFactoryName": {
"type": "string"
},
"EmailTo": {
"type": "string"
},
"Message": {
"type": "string"
},
"PipelineName": {
"type": "string"
},
"Subject": {
"type": "string"
}
},
"type": "object"
}

In de volgende stap (klik op het plusje in het pijltje) wordt de e-mail functionaliteit opgezet. In dit voorbeeld maak ik gebruik van Office365, maar je kunt ook een andere e-mail provider kiezen. Om een connectie te maken moet je hier inloggen met het account waarmee de e-mail uiteindelijk verzonden moet worden.

Wanneer je ingelogd bent, zie je het volgende scherm:

Nu is het de bedoeling dat de e-mail functionaliteit dynamisch ingevuld gaat worden, gebaseerd op het in de vorige stap klaargezette JSON-Schema. Wanneer je een geadresseerde wilt toevoegen, dan kun je klikken op ‘see more’ (zie onderstaande afbeelding). Hier vind je dan alle beschikbare variabelen die je uiteindelijk in Azure Data Factory dynamisch kunt invullen.

Zie onderstaande afbeelding voor een volledig ingevulde e-mail.

Vul de e-mail naar eigen smaak in en klik hierna op save. De Logic App wordt nu opgeslagen. Intussen wordt op de achtergrond een URL aangemaakt die je later nodig hebt om naar de Logic App te verwijzen in je Data Factory. De URL kun je vinden in de stap ‘When a HTTP request is received’ (zie de afbeelding hieronder) die gemaakt is in de Logic App. Kopieer de URL en sla deze tijdelijk ergens op. Deze heb je later nodig.

De Logic App is gereed. Nu kunnen we verder met het ontwikkelen van de e-mail functionaliteit in je Azure Data Factory.
4. Het ontwikkelen van de e-mail functionaliteit in Azure Data Factory
- Maak een nieuwe pipeline aan en noem deze ‘send email on failure‘
- Voeg 3 parameters toe aan de pipeline:
- EmailTo
- Activity
- Message
De parameters hebben geen default waarde nodig.

Voeg een web activity toe aan je Pipeline en hernoem deze naar ‘send email on failure‘.

In de Settings tab voeg je de volgende punten toe (zie afbeelding):
- URL – Let op, hier heb je de URL nodig die je vanuit de Logic App bewaard hebt.
- Method
- Headers
- Body
Klik daarna op Publish all.

{
"EmailTo":"@{pipeline().parameters.EmailTo}",
"Subject":"An error has occured in the @{pipeline().Pipeline}-pipeline",
"DataFactoryName":"@{pipeline().DataFactory}",
"PipelineName":"@{pipeline().Pipeline}",
"Activity":"@{pipeline().parameters.Activity} is gefaald",
"Message":"@{pipeline().parameters.Message}"
}
5. Voeg de e-mail fuctionaliteit toe aan de gewenste pipeline.
Vanaf nu kan de Logic App getriggerd worden door Azure Data Factory. De pipeline moet nu eerst een connectie maken met de activities waar we een e-mail notificatie van willen ontvangen wanneer een laadactie faalt.
- Ga naar een pipeline waar je de e-mail notificatie wilt toevoegen. Voeg een Execute pipeline activity toe en geef de activity een passende naam.

- Voeg een failure stap toe bij de activity die een actie moet uitvoeren wanneer deze errors oplevert. Kies Failure en connect deze rode constraint met de ‘send mail on failure activity’.


In de Settings tabblad van de ‘send mail on failure’ vind je de volgende parameters die waarden nodig hebben om de mail te verzenden.
EmailTo = Het emailadres van de ontvanger(s). Deze kun je scheiden met een ‘;’
Activity = @pipeline().Pipeline
Message = @activity(‘Naam van de activity’).Error.Message

Klik op publish all en de e-mail notificatie is klaar voor gebruik!

Helaas is het niet mogelijk om meerdere activities te connecten naar de send mail on failure-pipeline. Dit komt doordat Azure Data Factory alleen de AND constraint gebruikt. De enige manier om dit toe te passen is om elke activity zijn eigen ‘send email on failure’-activity te geven. De ‘send email on failure’-activity kun je gemakkelijk kopiëren en hergebruiken binnen de pipeline. Hiervoor moet je wel de parameters voor elke activity wijzigen. Zie de afbeelding hieronder:

Ook kun je een succes mail toevoegen aan je pipeline. Dit gaat op dezelfde wijze als de failure notificatie, waarbij je andere waarden voor de parameters invult.
Heb je al deze stappen voltooid? Gefeliciteerd, je hebt je werk nu een stuk gemakkelijker gemaakt! In plaats van elke dag handmatig je laadprocessen te controleren in Azure Data Factory, krijg je nu automatische e-mail notificaties wanneer een pipeline faalt of juist is geslaagd.