void CreateOpportunityProcess(LoginResult Session, Opportunity opportunity) { try { Dictionary <int, string> errMessage = new Dictionary <int, string>(); Logger.Info("------------Started getting opportunities from DM------------"); //1. Get opportunities from DM var opportunities = opportunity.GetOpportunities(); if (opportunities != null) { if (opportunities.Count > 0) { Logger.Info("Total number of opportunities found are: " + opportunities.Select(row => row.OrderID).Distinct().Count().ToString()); Logger.Info("------------Finished getting opportunities from DM------------"); var otisExceptions = FindOTISExceptions(opportunities, Session, opportunity); var missingRecords = FindMissingSFReferences(opportunities, Session, opportunity); if (missingRecords.Count > 0) { if (otisExceptions.Count > 0) { missingRecords = missingRecords.Concat(otisExceptions).ToList <Entity.MissingRecordEntity>(); } PostMissingRecords(missingRecords, opportunities, Session, opportunity); } else if (otisExceptions.Count > 0) { PostMissingRecords(otisExceptions, opportunities, Session, opportunity); } else { Logger.Info("No missing record(s) found."); Logger.Info("------------Finished checking missing records------------"); } //Opportunities are filetred through DM and Salesforce validation check. Its important to check the count before creating the opportunities CreateOpportunity(opportunities, Session, opportunity); } else { Logger.Info("No opportunities found from DM."); Logger.Info("------------Finished getting opportunities from DM------------"); } } else { Logger.Info("No opportunities found from DM."); Logger.Info("------------Finished getting opportunities from DM------------"); } } catch (Exception ex) { throw ex; } }