Axapta
Enable batch e-mail alerts from code
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>

