protected void StartImport()
        {
            var dataSyncItem = GetDataSyncItem();

            var               dataSyncManager = new DataSyncManager();
            LevelLogger       logger          = Manager.CreateLogger(dataSyncItem);
            OutputHandlerBase exporter        = Manager.CreateOutputHandler(dataSyncItem, logger);

            logger.AddKey(Utility.Constants.DataSyncItemId, dataSyncItem.ID.ToString());
            logger.AddData(Utility.Constants.DataSyncItem, dataSyncItem);
            var map = dataSyncManager.InstantiateDataMap(dataSyncItem, ref logger);

            if (map != null)
            {
                if (!String.IsNullOrEmpty(DataValue))
                {
                    map.Data = DataValue;
                }
                var options = new JobOptions("FromFileDataSyncWizard", "Job category name", Context.Site.Name, new FromFileDataSyncWizard(), "Run", new object[] { map, map.Logger, exporter });
                var job     = JobManager.Start(options);
                job.Options.CustomData = map.Logger;
                JobHandle = job.Handle.ToString();
                SheerResponse.Timer("CheckStatus", 5);
            }
            else
            {
                Active = "LastPage";
                BackButton.Disabled = true;
                if (logger.HasErrorsOrInfos())
                {
                    if (exporter != null)
                    {
                        ResultText.Value = exporter.Export();
                    }
                    else
                    {
                        ResultText.Value = "The Exporter class was null. Therefor the log was not written out.";
                    }
                }
            }
        }
        public void RunJob(Item[] itemArray, CommandItem commandItem, ScheduleItem scheduledItem)
        {
            try
            {
                if (scheduledItem != null)
                {
                    var itemIds = scheduledItem[ItemsFieldName];
                    if (!String.IsNullOrEmpty(itemIds))
                    {
                        var dataSourceCache = new Dictionary <string, string>();
                        var idList          = itemIds.Split('|');
                        if (idList.Any())
                        {
                            foreach (var id in idList)
                            {
                                if (ID.IsID(id))
                                {
                                    var dataSyncItem = scheduledItem.Database.GetItem(new ID(id));
                                    try
                                    {
                                        if (dataSyncItem != null)
                                        {
                                            var         startedAt = DateTime.Now;
                                            LevelLogger logger    = Manager.CreateLogger(dataSyncItem);
                                            logger.AddKey(Utility.Constants.DataSyncItemId, dataSyncItem.ID.ToString());
                                            logger.AddData(Utility.Constants.DataSyncItem, dataSyncItem);
                                            logger.AddData(Logger.Log.Constants.Identifier, dataSyncItem.Name);
                                            var dataSyncManager = new DataSyncManager();
                                            var dataSyncObject  = dataSyncManager.InstantiateDataMap(dataSyncItem, ref logger) as XmlDataMap;
                                            if (dataSyncObject != null)
                                            {
                                                dataSyncObject.DataSourceCache = dataSourceCache;
                                                dataSyncObject.Process();
                                            }
                                            var finishededAt = DateTime.Now;
                                            logger.AddData(Logger.Log.Constants.StartTime, startedAt);
                                            logger.AddData(Logger.Log.Constants.EndTime, finishededAt);
                                            var exporter = Manager.CreateOutputHandler(dataSyncItem, logger);
                                            var logText  = exporter.Export();
                                            if (exporter != null)
                                            {
                                                if (logger != null)
                                                {
                                                    try
                                                    {
                                                        MailManager.SendLogReport(ref logger, exporter);
                                                    }
                                                    catch (Exception exception)
                                                    {
                                                        Diagnostics.Log.Error(
                                                            "Failed in sending out the mail. Please see the exception message for more details. Exception:" +
                                                            exception.Message + "\r\n\r\n" + logText, typeof(DataSyncTask));
                                                    }
                                                    if (logger.HasErrors())
                                                    {
                                                        Diagnostics.Log.Error(logText, typeof(DataSyncTask));
                                                    }
                                                    else
                                                    {
                                                        Diagnostics.Log.Debug(logText, typeof(DataSyncTask));
                                                    }
                                                }
                                                else
                                                {
                                                    Diagnostics.Log.Error("The Log object was null. This should not happen." + "\r\n\r\n" + logText, typeof(DataSyncTask));
                                                }
                                            }
                                            else
                                            {
                                                Diagnostics.Log.Error("The Exporter class was null. Therefor the log was not written out.\r\n\r\n" + logText, typeof(DataSyncTask));
                                            }
                                        }
                                        else
                                        {
                                            Diagnostics.Log.Error("The Task item had Items defined in Items[] that was null. This should not happen.", typeof(DataSyncTask));
                                        }
                                    }
                                    catch (Exception exception)
                                    {
                                        var itemId = dataSyncItem != null?dataSyncItem.ID.ToString() : string.Empty;

                                        Diagnostics.Log.Error(
                                            Identifier +
                                            String.Format(
                                                " - An exception occured in the execution of the task in the foreach (Item dataSyncItem in itemArray) of the DataSync item: {0}. This datasync job wasn't completed. Exception: {1}",
                                                itemId, exception.Message), typeof(DataSyncTask));
                                    }
                                }
                                else
                                {
                                    Diagnostics.Log.Error(
                                        Identifier +
                                        " - The provided value wasn't a correct Sitecore id. Please add at least one id to 'Items' field of the ScheduledItem. You can also use | to seperate ids. Therefor nothing was done.",
                                        typeof(DataSyncTask));
                                }
                            }
                        }
                        else
                        {
                            Diagnostics.Log.Error(
                                Identifier +
                                " - There wasn't defined any DataSync items to run. Please add at least one id to 'Items' field of the ScheduledItem. You can also use | to seperate ids. Therefor nothing was done.",
                                typeof(DataSyncTask));
                        }
                    }
                    else
                    {
                        Diagnostics.Log.Error(
                            Identifier + " - There wasn't defined any DataSync items to run. Therefor nothing was done.",
                            typeof(DataSyncTask));
                    }
                }
                else
                {
                    Diagnostics.Log.Error(
                        Identifier + " - The ScheduledItem was null. Therefor nothing was done.",
                        typeof(DataSyncTask));
                }
            }
            catch (Exception exception)
            {
                Diagnostics.Log.Error(Identifier + " - An exception occured in the execution of the task.", exception);
            }
        }