public override void ExecuteOption(OptionReport report)
        {
            string urlLoginName = _databaseUpdateMailrelayFromContact.urlLoginName;
            int    pageSize     = _databaseUpdateMailrelayFromContact.pageSize;
            Guid?  contactId    = _databaseUpdateMailrelayFromContact.contactId;

            DatabaseUrlLogin      login = DatabaseUrlLogin.GetUrlLogin(Connection, urlLoginName);
            DynamicsCrmConnection dynamicsCrmConnection = DynamicsCrmConnection.GetConnection(login.Url, login.Username, login.Password);

            PagingInformation pagingInformation = new PagingInformation();

            List <MailrelayInformation> mailrelayInformations = new List <MailrelayInformation>();

            UpdateReport <int> intReport = new UpdateReport <int>();

            while (pagingInformation.FirstRun || pagingInformation.MoreRecords)
            {
                mailrelayInformations = MailrelayInformation.GetMailrelayFromContact(dynamicsCrmConnection, Config.GetResourcePath, pagingInformation, pageSize, contactId);
                mailrelayInformations.ForEach(information => UpdateIfNeeded(dynamicsCrmConnection, information, intReport));
            }

            Log.Write(Connection, intReport.AsLogText("UpdateMailrelayFromContact"), typeof(UpdateMailrelayFromContact), DataLayer.MongoData.Config.LogLevelEnum.OptionReport);

            report.Success = true;
            return;
        }
Ejemplo n.º 2
0
        public void SetUp()
        {
            Connection.CleanDatabase();

            if (Config.Exists(Connection) == false)
            {
                Config config = new Config()
                {
                    EmailPassword = "******",
                    Email         = "testEmail",
                    EmailSmtpPort = 0,
                    EmailSmtpHost = "testHost",
                };

                config.Insert(Connection);
            }

            UrlLogin urlLogin = UrlLogin.GetUrlLogin(Connection, "test");

            DynamicsCrmConnection = DynamicsCrmConnection.GetConnection(urlLogin.Url, urlLogin.Username, urlLogin.Password);

            _mailrelayConnectionTester   = new MailrelayConnectionTester();
            _dynamicsCrmConnectionTester = new DynamicsCrmConnectionTester();
            _random = new Random();
        }
        public override void ExecuteOption(OptionReport report)
        {
            string urlLoginName = _databaseExportContactToMailrelay.urlLoginName;

            Guid?crmListId = _databaseExportContactToMailrelay.listId;

            DatabaseUrlLogin      login = DatabaseUrlLogin.GetUrlLogin(Connection, urlLoginName);
            DynamicsCrmConnection dynamicsCrmConnection = DynamicsCrmConnection.GetConnection(login.Url, login.Username, login.Password);

            PagingInformation pagingInformation = new PagingInformation();

            while (pagingInformation.FirstRun || pagingInformation.MoreRecords)
            {
                MarketingList marketingList = MarketingList.GetListForMailrelayUpdate(dynamicsCrmConnection, pagingInformation, crmListId);

                if (marketingList != null)
                {
                    UpdateReport <Guid> result = ExportMailrelayContactFromList(dynamicsCrmConnection, marketingList);
                    Log.Write(Connection, result.AsLogText($"ExportContactToMailrelay {marketingList.new_mailrelaygroupid.Value}"), typeof(ExportContactToMailrelay), DataLayer.MongoData.Config.LogLevelEnum.OptionReport);
                }
            }

            report.Success = true;

            return;
        }
Ejemplo n.º 4
0
        public void SetUp()
        {
            MongoConnection connection = MongoConnection.GetConnection("test");
            UrlLogin        login      = UrlLogin.GetUrlLogin(connection, "test");

            _connection = DynamicsCrmConnection.GetConnection(login.Url, login.Username, login.Password);
        }
Ejemplo n.º 5
0
        private UpdateReport <int> AddOrRemoveMembersFromMailrelayGroup(DynamicsCrmConnection dynamicsCrmConnection, MarketingList marketingList, int groupId)
        {
            List <KeyValueEntity <Guid, int?> > crmIdsAndSubscriberIds = marketingList.CrmIdsAndSubscriberIds;

            List <getSubscribersReply> subscribersToRemoveFromMailrelay = new List <getSubscribersReply>();

            Subscriber subscriber = new Subscriber(_mailrelayConnection);

            getSubscribers getSubscribersFunction = new getSubscribers()
            {
                groups = new List <int>()
                {
                    groupId
                },
            };

            IEnumerable <getSubscribersReply> subscribersInMailrelay = subscriber.GetMailrelaySubscribers(getSubscribersFunction, 100);

            foreach (getSubscribersReply currentInMailrelay in subscribersInMailrelay)
            {
                int removed = crmIdsAndSubscriberIds.RemoveAll(idInCrm => currentInMailrelay.id == idInCrm.value.ToString());

                if (removed == 0)
                {
                    subscribersToRemoveFromMailrelay.Add(currentInMailrelay);
                }
            }

            UpdateReport <int> report = new UpdateReport <int>();

            RemoveFromMailrelayGroup(report, subscribersToRemoveFromMailrelay, subscriber, groupId);
            AddToMailrelayGroup(dynamicsCrmConnection, report, subscriber, crmIdsAndSubscriberIds, groupId);

            return(report);
        }
Ejemplo n.º 6
0
        private UpdateReport <int> UpdateMailrelayGroupFromList(DynamicsCrmConnection dynamicsCrmConnection, MarketingList marketingList)
        {
            int?id = marketingList.new_mailrelaygroupid;

            if (id.HasValue == false)
            {
                id = Subscriber.CreateGroup(_mailrelayConnection, $"crm_{marketingList.listname}", "crm kontrolleret gruppe");

                marketingList.new_mailrelaygroupid = id;

                marketingList.UpdateMailrelaygroupid(dynamicsCrmConnection);
            }

            bool needsUpdate = marketingList.RecalculateMarketingListCheck();

            if (needsUpdate == false)
            {
                return(new UpdateReport <int>());
            }

            UpdateReport <int> report = AddOrRemoveMembersFromMailrelayGroup(dynamicsCrmConnection, marketingList, id.Value);

            marketingList.UpdateMailrelaycheck(dynamicsCrmConnection);

            return(report);
        }
Ejemplo n.º 7
0
        public override void ExecuteOption(OptionReport report)
        {
            string           urlLoginName           = _databaseCreateImportFromStub.urlLoginName;
            DatabaseSchedule ImportFromStubSchedule = _databaseCreateImportFromStub.ImportFromStubSchedule;

            DatabaseUrlLogin      login = DatabaseUrlLogin.GetUrlLogin(Connection, urlLoginName);
            DynamicsCrmConnection dynamicsCrmConnection = DynamicsCrmConnection.GetConnection(login.Url, login.Username, login.Password);

            List <Campaign> campaigns = Campaign.ReadCampaignsToImportStubDataTo(dynamicsCrmConnection);

            foreach (Campaign campaign in campaigns)
            {
                DatabaseWebCampaign webCampaign = ReadOrCreateWebCampaign(campaign);

                bool importExists = DatabaseImportFromStub.ReadByWebCampaign(Connection, webCampaign).Any();
                if (importExists == false)
                {
                    DatabaseImportFromStub.Create(Connection, webCampaign._id, urlLoginName, campaign.name, ImportFromStubSchedule);
                }
            }

            report.Success = true;

            return;
        }
Ejemplo n.º 8
0
 public void TestFixtureSetUp()
 {
     _mongoConnection       = MongoConnection.GetConnection("test");
     _urlLogin              = UrlLogin.GetUrlLogin(_mongoConnection, "test");
     _dynamicsCrmConnection = DynamicsCrmConnection.GetConnection(_urlLogin.Url, _urlLogin.Username, _urlLogin.Password);
     _config = Config.GetConfig(_mongoConnection);
     _mailrelayConnection = new MailrelayConnection(_config.MailrelayUrl, _config.MailrelayApiKey);
 }
        private MailrelayInformation GetInformationFromFetchXml(DynamicsCrmConnection dynamicsCrmConnection, DatabaseWebCampaign webCampaign, string email)
        {
            Guid campaignId = webCampaign.FormId;

            MailrelayInformation information = MailrelayInformation.GetMailrelayFromLead(dynamicsCrmConnection, Config.GetResourcePath, email, campaignId);

            return(information);
        }
Ejemplo n.º 10
0
 protected void SetDynamicsCrmConnectionIfEmpty(string urlLoginName)
 {
     if (_dynamicsCrmConnection == null)
     {
         DatabaseUrlLogin login = DatabaseUrlLogin.GetUrlLogin(Connection, urlLoginName);
         _dynamicsCrmConnection = DynamicsCrmConnection.GetConnection(login.Url, login.Username, login.Password);
     }
 }
Ejemplo n.º 11
0
        protected void SetDynamicsCrmConnectionIfEmpty()
        {
            if (_dynamicsCrmConnection == null)
            {
                string dynamicsCrmUrl      = Config.DynamicsCrmUrl;
                string dynamicsCrmUsername = Config.DynamicsCrmUsername;
                string dynamicsCrmPassword = Config.DynamicsCrmPassword;

                _dynamicsCrmConnection = DynamicsCrmConnection.GetConnection(dynamicsCrmUrl, dynamicsCrmUsername, dynamicsCrmPassword);
            }
        }
Ejemplo n.º 12
0
        private void AddToMailrelayGroup(DynamicsCrmConnection dynamicsCrmConnection, UpdateReport <int> report, Subscriber subscriber, List <KeyValueEntity <Guid, int?> > crmIdsAndSubscriberIds, int groupInCrm)
        {
            foreach (KeyValueEntity <Guid, int?> idPair in crmIdsAndSubscriberIds)
            {
                MailrelayInformation mailrelayInformation = MailrelayInformation.GetMailrelayFromContact(dynamicsCrmConnection, Config.GetResourcePath, new PagingInformation(), 1, idPair.key).Single();

                UpdateResultEnum result = subscriber.UpdateIfNeeded(idPair.value.Value, mailrelayInformation.fullname, mailrelayInformation.emailaddress1, mailrelayInformation.GetCustomFields(), groupInCrm);

                report.CollectUpdate(result, idPair.value.Value);
            }
        }
Ejemplo n.º 13
0
        public override void ExecuteOption(OptionReport report)
        {
            string urlLoginName            = _databaseMaterialeBehovAssignment.urlLoginName;
            int    updateProgressFrequency = _databaseMaterialeBehovAssignment.updateProgressFrequency;

            DatabaseUrlLogin      login = DatabaseUrlLogin.GetUrlLogin(Connection, urlLoginName);
            DynamicsCrmConnection dynamicsCrmConnection = DynamicsCrmConnection.GetConnection(login.Url, login.Username, login.Password);

            Materiale materiale = Materiale.ReadCalculationNeed(dynamicsCrmConnection, Config.GetResourcePath);

            if (materiale == null)
            {
                report.Success = true;
                return;
            }

            materiale.FindBehovDefinitioner(Config.GetResourcePath);

            int total = CountTotalAccountsToUpdate(dynamicsCrmConnection, materiale);
            int staleMaterialeBehovCount = materiale.CountStaleMaterialeBehov(Config.GetResourcePath);

            total += staleMaterialeBehovCount;

            materiale.new_beregningsstatus = 0;
            materiale.Update();

            materiale.RemoveStaleMaterialeBehov(Config.GetResourcePath, currentProgress => updateProgress(materiale, currentProgress, total), updateProgressFrequency);

            int progress = staleMaterialeBehovCount;
            int materialeAddedCurrent = -1;

            MaterialeProcessState state = new MaterialeProcessState();

            state.pagingInformation  = new PagingInformation();
            state.owningbusinessunit = materiale.owningbusinessunitGuid.Value;

            while (materialeAddedCurrent != 0)
            {
                materiale.AddMissingMateriale(state, Config.GetResourcePath);
                materialeAddedCurrent = state.AccountsProcessed;
                progress += materialeAddedCurrent;
                updateProgress(materiale, progress, total);
            }
            materialeAddedCurrent = -1;

            materiale.behovsberegning      = Materiale.behovsberegningEnum.Afsluttet;
            materiale.new_beregningsstatus = null;
            materiale.Update();

            report.Success = true;
            return;
        }
Ejemplo n.º 14
0
        public override void ExecuteOption(OptionReport report)
        {
            string urlLoginName = _databaseImportFromStub.urlLoginName;

            DatabaseUrlLogin      login = DatabaseUrlLogin.GetUrlLogin(Connection, urlLoginName);
            DynamicsCrmConnection dynamicsCrmConnection = DynamicsCrmConnection.GetConnection(login.Url, login.Username, login.Password);

            DatabaseWebCampaign webCampaign = DatabaseWebCampaign.ReadByIdBytesSingleOrDefault(Connection, _databaseImportFromStub.WebCampaignIdValue());

            DatabaseWebCampaign.CollectTypeEnum collectType;
            DatabaseStub stub;

            if (webCampaign == null)
            {
                collectType = DatabaseWebCampaign.CollectTypeEnum.Lead;
                stub        = DatabaseStub.ReadFirst(Connection);
            }
            else
            {
                collectType = webCampaign.CollectType;
                stub        = DatabaseStub.ReadFirst(Connection, webCampaign);
            }

            if (stub == null)
            {
                report.Success = true;
                return;
            }

            try
            {
                ImportStub(dynamicsCrmConnection, stub, webCampaign, collectType);
                stub.Delete(Connection);
                report.Success = true;
                return;
            }
            catch (Exception exception)
            {
                Log.Write(Connection, exception.Message, typeof(ImportFromStub), exception.StackTrace, DataLayer.MongoData.Config.LogLevelEnum.OptionError);
                stub.ImportAttempt++;
                stub.Update(Connection);
                report.Success = false;
                return;
            }
        }
        private void UpdateIfNeeded(DynamicsCrmConnection dynamicsCrmConnection, MailrelayInformation information, UpdateReport <int> report)
        {
            bool needsUpdate = information.RecalculateContactCheck();
            int  id          = information.new_mailrelaysubscriberid.Value;

            if (needsUpdate == false)
            {
                report.CollectUpdate(UpdateResultEnum.AlreadyUpToDate, id);
                return;
            }

            information.UpdateContactMailrelaycheck(dynamicsCrmConnection);

            Subscriber       subscriber = new Subscriber(_mailrelayConnection);
            UpdateResultEnum result     = subscriber.UpdateIfNeeded(id, information.fullname, information.emailaddress1, information.GetCustomFields());

            report.CollectUpdate(result, id);
        }
Ejemplo n.º 16
0
        private int CountTotalAccountsToUpdate(DynamicsCrmConnection dynamicsCrmConnection, Materiale materiale)
        {
            int total = 0;

            if (materiale.BehovDefinitioner.Any(definition => definition.behovtype == MaterialeBehovDefinition.behovtypeEnum.ForventetAntalIndsamlere2016))
            {
                total += Account.CountForventetAntalIndsamlere2016(dynamicsCrmConnection, Config.GetResourcePath);
            }

            if (materiale.BehovDefinitioner.Any(definition => definition.behovtype == MaterialeBehovDefinition.behovtypeEnum.Indsamlingshjaelper))
            {
                total += Account.CountIndsamlingshjaelper(dynamicsCrmConnection, Config.GetResourcePath);
            }

            if (materiale.BehovDefinitioner.Any(definition => definition.behovtype == MaterialeBehovDefinition.behovtypeEnum.Indsamlingssted))
            {
                total += Account.CountIndsamlingssteder(dynamicsCrmConnection, Config.GetResourcePath);
            }

            return(total);
        }
Ejemplo n.º 17
0
        private UpdateResultEnum AddToMailrelay(DynamicsCrmConnection dynamicsCrmConnection, MailrelayInformation mailrelayInformation, int groupId)
        {
            if (mailrelayInformation.new_mailrelaysubscriberid != null)
            {
                return(UpdateResultEnum.AlreadyUpToDate);
            }

            Subscriber subscriber = new Subscriber(_mailrelayConnection);

            try
            {
                getSubscribersReply reply = subscriber.GetMailrelaySubscribers(mailrelayInformation.emailaddress1);

                if (reply == null)
                {
                    mailrelayInformation.new_mailrelaysubscriberid = subscriber.AddNewSubscriber(mailrelayInformation.fullname, mailrelayInformation.emailaddress1, new List <int>()
                    {
                        groupId
                    }, mailrelayInformation.GetCustomFields());
                }
                else
                {
                    reply.groups.Add(groupId.ToString());

                    subscriber.UpdateFromReply(reply);

                    mailrelayInformation.new_mailrelaysubscriberid = int.Parse(reply.id);
                }
            }
            catch (Exception exception)
            {
                Log.Write(Connection, exception.Message, typeof(ExportContactToMailrelay), exception.StackTrace, DataLayer.MongoData.Config.LogLevelEnum.OptionError);
                return(UpdateResultEnum.Failed);
            }

            mailrelayInformation.UpdateContactMailrelaySubscriberid(dynamicsCrmConnection);

            return(UpdateResultEnum.Updated);
        }
Ejemplo n.º 18
0
        private UpdateReport <Guid> ExportMailrelayContactFromList(DynamicsCrmConnection dynamicsCrmConnection, MarketingList marketingList)
        {
            if (marketingList.new_mailrelaygroupid.HasValue == false)
            {
                marketingList.new_mailrelaygroupid = Subscriber.CreateGroup(_mailrelayConnection, $"crm_{marketingList.listname}", "crm kontrolleret gruppe");

                marketingList.UpdateMailrelaygroupid(dynamicsCrmConnection);
            }

            IEnumerable <Guid> contactIdsToUpdate = marketingList.ContentIdsForNonMailrelaySubscribers;

            UpdateReport <Guid> updateReport = new UpdateReport <Guid>();

            foreach (Guid contactId in contactIdsToUpdate)
            {
                MailrelayInformation mailrelayInformation = MailrelayInformation.GetInformationNotInMailrelayFromContact(dynamicsCrmConnection, Config.GetResourcePath, contactId);

                UpdateResultEnum result = AddToMailrelay(dynamicsCrmConnection, mailrelayInformation, marketingList.new_mailrelaygroupid.Value);

                updateReport.CollectUpdate(result, contactId);
            }

            return(null);
        }
Ejemplo n.º 19
0
        public override void ExecuteOption(OptionReport report)
        {
            string urlLoginName = _databaseExposeData.urlLoginName;
            string fetchXmlPath = _databaseExposeData.fetchXmlPath;
            string exposePath   = _databaseExposeData.exposePath;
            string exposeName   = _databaseExposeData.exposeName;

            DatabaseUrlLogin      login = DatabaseUrlLogin.GetUrlLogin(Connection, urlLoginName);
            DynamicsCrmConnection dynamicsCrmConnection = DynamicsCrmConnection.GetConnection(login.Url, login.Username, login.Password);

            string fullFetchXmlPath = Config.GetResourcePath(fetchXmlPath);
            string fullExposePath   = Config.GetResourcePath(exposePath);

            List <dynamic> dataList = DynamicFetch.ReadFromFetchXml(dynamicsCrmConnection, fullFetchXmlPath, new PagingInformation());

            JsonSerializerSettings settings = new JsonSerializerSettings()
            {
                NullValueHandling    = NullValueHandling.Ignore,
                StringEscapeHandling = StringEscapeHandling.EscapeNonAscii,
            };

            string json = JsonConvert.SerializeObject(dataList, Formatting.None, settings);

            json = json.Replace("\\r\\n", "\\n");

            if (Directory.Exists(fullExposePath) == false)
            {
                Directory.CreateDirectory(fullExposePath);
            }

            File.WriteAllText(fullExposePath + "/" + exposeName, json, Encoding.UTF8);

            report.Success = true;

            return;
        }
Ejemplo n.º 20
0
        private void ImportStub(DynamicsCrmConnection dynamicsCrmConnection, DatabaseStub stub, DatabaseWebCampaign webCampaign, DatabaseWebCampaign.CollectTypeEnum collectType)
        {
            List <string> keyFields;

            if (webCampaign == null)
            {
                keyFields = new List <string>();
            }
            else
            {
                keyFields = webCampaign.KeyFields;
            }

            List <DatabaseStubElement> contentList = Utilities.LinqExtension.DistinctBy(stub.Contents, content => content.Key).ToList();

            contentList = contentList.Where(content => content.Key != null).ToList();

            Dictionary <string, string> allContent = contentList.ToDictionary(content => content.Key, content => content.Value);

            Dictionary <string, string> keyContent = allContent.Where(content => keyFields.Contains(content.Key)).ToDictionary(content => content.Key, content => content.Value);

            Contact contact = null;

            int?numberOfMatchingContacts = null;

            if (keyContent.Any())
            {
                List <Contact> matchingContacts = Contact.ReadFromFetchXml(dynamicsCrmConnection, new List <string> {
                    "contactid", "ownerid"
                }, keyContent);
                numberOfMatchingContacts = matchingContacts.Count;

                if (numberOfMatchingContacts == 1)
                {
                    contact = matchingContacts.Single();
                }
            }

            Lead lead = Lead.Create(dynamicsCrmConnection, allContent);

            Guid?owner = null;

            if (webCampaign != null)
            {
                lead.campaign = webCampaign.FormId;
                owner         = webCampaign.FormOwner;
            }

            if (contact != null && owner.HasValue == false)
            {
                if (owner.HasValue == false)
                {
                    owner = contact.owner;
                }
            }

            switch (collectType)
            {
            case DatabaseWebCampaign.CollectTypeEnum.LeadOgContactHvisContactIkkeFindes:
                if (contact == null && numberOfMatchingContacts == 0)
                {
                    contact = Contact.Create(dynamicsCrmConnection, allContent);
                    contact.InsertWithoutRead();
                    if (owner.HasValue)
                    {
                        contact.owner = owner;
                        contact.Assign();
                    }
                }
                break;
            }

            lead.subject = _databaseImportFromStub.Name;

            if (contact != null)
            {
                lead.parentcontact = contact.Id;
            }

            lead.InsertWithoutRead();

            if (owner.HasValue)
            {
                lead.owner = owner;
                lead.Assign();
            }

            if (webCampaign != null && webCampaign.mailrelaygroupid.HasValue)
            {
                AddMailrelaySubscriberFromLead.CreateIfValid(Connection, lead.Id, $"Auto subscribe from {_databaseImportFromStub.Name}", _databaseImportFromStub.urlLoginName, lead.emailaddress1, webCampaign);
            }
        }
        public override void ExecuteOption(OptionReport report)
        {
            string urlLoginName = _databaseAddMailrelaySubscriberFromLead.urlLoginName;
            string email        = _databaseAddMailrelaySubscriberFromLead.email;
            Guid   leadId       = _databaseAddMailrelaySubscriberFromLead.leadId;

            DatabaseUrlLogin      login = DatabaseUrlLogin.GetUrlLogin(Connection, urlLoginName);
            DynamicsCrmConnection dynamicsCrmConnection = DynamicsCrmConnection.GetConnection(login.Url, login.Username, login.Password);

            DatabaseWebCampaign webCampaign = DatabaseWebCampaign.ReadByIdBytesSingleOrDefault(Connection, _databaseAddMailrelaySubscriberFromLead.WebCampaignIdValue());

            if (webCampaign == null)
            {
                Log.Write(Connection, $"Could not find campaign for {_databaseAddMailrelaySubscriberFromLead.Name}", typeof(AddMailrelaySubscriberFromLead), DataLayer.MongoData.Config.LogLevelEnum.OptionError);
                report.Success = false;
                return;
            }

            MailrelayInformation information = GetInformationFromFetchXml(dynamicsCrmConnection, webCampaign, email);

            if (information == null)
            {
                Log.Write(Connection, $"Information for lead {leadId} on {email} could not be found", typeof(AddMailrelaySubscriberFromLead), DataLayer.MongoData.Config.LogLevelEnum.OptionMessage);
                report.Success = true;
                return;
            }

            if (information.campaign_new_mailrelaygroupid.HasValue == false)
            {
                Log.Write(Connection, $"Subscriber not added, campaign {webCampaign.FormId} has no group", typeof(AddMailrelaySubscriberFromLead), DataLayer.MongoData.Config.LogLevelEnum.OptionMessage);
                report.Success = true;
                return;
            }

            getSubscribersReply ExistingSubscriber = GetExistingSubscribers(email);

            int subscriberId;

            if (ExistingSubscriber == null)
            {
                addSubscriber add = GetSubscriberFromFetchXml(information, email);

                subscriberId = SendSubscriberToMailrelay(add);
            }
            else
            {
                subscriberId = int.Parse(ExistingSubscriber.id);
                UdpateExistingSubscriberIfNeeded(information, ExistingSubscriber, email, subscriberId);
            }

            try
            {
                Lead.UpdateSubscriberId(dynamicsCrmConnection, leadId, subscriberId);
            }
            catch (Exception exception)
            {
                Log.Write(Connection, exception.Message, typeof(AddMailrelaySubscriberFromLead), exception.StackTrace, DataLayer.MongoData.Config.LogLevelEnum.OptionError);
            }

            report.Success = true;
        }