The setup of notifications for batch jobs are quite simple if you know where to look. To enable batch e-mail alerts from code all you need to do is create new records under \\Tables\BatchJobAlerts with the right flags for an AX user, who has their e-mail address set in the User Options correctly.
The following X++ Job is self-explanatory on how to enable batch e-mail alerts from code in case of Cancellation or an Error:
static void WIK_enableBatchJobAlerts(Args _args) { #Batch Map alertsMap; Map alertsEntity; BatchJob batchJob; BatchJobAlerts batchJobAlerts; while select batchJob where (batchJob.Status == BatchStatus::Executing || batchJob.Status == BatchStatus::Waiting) // Optional filtering for dedicated batch service account only && batchJob.createdBy == 'axbatchuserid' notexists join batchJobAlerts where batchJobAlerts.BatchJobId == batchJob.RecId // Include all batch jobs where e-mail alert is disabled for our account && batchJobAlerts.UserId == batchJob.createdBy && batchJobAlerts.Email == NoYes::Yes { // This can be called any number of times to alert multiple users even with different settings alertsMap = BatchJobAlerts::addAlertsToMap( batchJob.createdBy, // Whom to alert NoYes::No, // Ended NoYes::Yes, // Error NoYes::Yes, // Canceled NoYes::No, // Popup NoYes::Yes // E-mail ); BatchJobAlerts::saveAlerts(batchJob.RecId, alertsMap); alertsEntity = alertsMap.lookup(batchJob.createdBy); info(strFmt('Enabling alert (Ended=%1 Error=%2 Canceled=%3 Popup=%4 E-mail=%5) for user <%6> and batch <%7>', enum2Symbol(enumNum(NoYes), alertsEntity.lookup(#batchJobEnded)), enum2Symbol(enumNum(NoYes), alertsEntity.lookup(#batchJobError)), enum2Symbol(enumNum(NoYes), alertsEntity.lookup(#batchJobCanceled)), enum2Symbol(enumNum(NoYes), alertsEntity.lookup(#popup)), enum2Symbol(enumNum(NoYes), alertsEntity.lookup(#email)), batchJob.createdBy, batchJob.Caption )); } }
The output will be something like this:
Enabling alert (Ended=No Error=Yes Canceled=Yes Popup=No E-mail=Yes) for user <sa.axbat> and batch <ADMIN – Due date alerts – every 15m>