@Override public Void call() { ZimbraLog.clearContext(); ZimbraLog.addMboxToContext(getMailboxId()); ZimbraLog.datasource.debug("Running scheduled import for DataSource %s", getDataSourceId()); Mailbox mbox = null; try { // Look up mailbox, account and data source mbox = MailboxManager.getInstance().getMailboxById(getMailboxId()); Account account = mbox.getAccount(); ZimbraLog.addAccountNameToContext(account.getName()); Provisioning prov = Provisioning.getInstance(); DataSource ds = prov.get(account, Key.DataSourceBy.id, getDataSourceId()); if (ds != null) { ZimbraLog.addDataSourceNameToContext(ds.getName()); if (!ds.isEnabled()) { ZimbraLog.datasource.info("DataSource is disabled. Cancelling future tasks."); DataSourceManager.cancelTask(mbox, getDataSourceId()); return null; } // Do the work DataSourceManager.importData(ds); } else { ZimbraLog.datasource.info( "DataSource %s was deleted. Cancelling future tasks.", getDataSourceId()); DataSourceManager.cancelTask(mbox, getDataSourceId()); } } catch (ServiceException e) { ZimbraLog.datasource.warn("Scheduled DataSource import failed.", e); return null; } ZimbraLog.clearContext(); return null; }