A newer version of this page is available. Switch to the current version.

ISchedulerStorageBase.CreateOutlookImporter() Method

Creates an object which allows you to control how data is imported from MS Outlook's Calendar.

Namespace: DevExpress.XtraScheduler

Assembly: DevExpress.XtraScheduler.v19.2.Core.dll


AppointmentImporter CreateOutlookImporter()


Type Description

An object which can import data from MS Outlook's Calendar.


Although you can import data from Outlook's Calendar via the ISchedulerStorageBase.ImportFromOutlook method, use the CreateOutlookImporter method to control how appointments are retrieved from MS Outlook's Calendar. Call this method to create an AppointmentImporter object, and subscribe to its events to control import operations.


For data synchronization use the AppointmentSynchronizer class descendant instead. It is created by ISchedulerStorageBase.CreateOutlookImportSynchronizer method. Refer to Synchronization with Microsoft Outlook article for more information.


This code illustrates how to use the OutlookImport class to manage the process of importing appointments from MS Outlook. Use the SchedulerDataStorage.CreateOutlookImporter method to create the importer, subscribe to its AppointmentImporter.AppointmentImporting, AppointmentImporter.AppointmentImported and AppointmentExchanger.OnException events and call the AppointmentImporter.Import method.

private void ImportUsingCriteria() {
    OutlookImport importer = schedulerControl1.Storage.CreateOutlookImporter() as OutlookImport;
    if (importer != null) {
        importer.AppointmentImporting += importer_AppointmentImporting;
        importer.AppointmentImported += importer_AppointmentImported;
        importer.OnException += importer_OnException;
        importer.CalendarFolderName = OutlookExchangeHelper.GetOutlookCalendarFolders().FirstOrDefault().FullPath;
        using (MemoryStream stream = new MemoryStream()) {
void importer_AppointmentImporting(object sender, AppointmentImportingEventArgs e) {
    OutlookAppointmentImportingEventArgs args = e as OutlookAppointmentImportingEventArgs;
    AddToLog(String.Format("Importing Subj:{0}, started at {1:F} ...", args.OutlookAppointment.Subject, args.OutlookAppointment.Start));
    if (args.OutlookAppointment.BusyStatus == DevExpress.XtraScheduler.Outlook.Interop.OlBusyStatus.olWorkingElsewhere) {
        e.Cancel = true;
        AddToLog("Cancelled because of its busy type (working elsewhere).");
void importer_AppointmentImported(object sender, AppointmentImportedEventArgs e) {
    OutlookAppointmentImportedEventArgs args = e as OutlookAppointmentImportedEventArgs;
    AddToLog(String.Format("Successfully imported Subj:{0}, started at {1:F}!", args.OutlookAppointment.Subject, args.OutlookAppointment.Start)); 

void importer_OnException(object sender, ExchangeExceptionEventArgs e) {
    string errText = e.OriginalException.Message;
    OutlookImport importer = (OutlookImport)sender;
    e.Handled = true;
    //throw e.OriginalException;
See Also