示例#1
0
 public AccountController(IConfiguration configuration, SharePointFileManager sharePointFileManager, IHttpContextAccessor httpContextAccessor, BCeIDBusinessQuery bceid, ILoggerFactory loggerFactory, IDynamicsClient dynamicsClient)
 {
     Configuration          = configuration;
     _bceid                 = bceid;
     _dynamicsClient        = dynamicsClient;
     _httpContextAccessor   = httpContextAccessor;
     _sharePointFileManager = sharePointFileManager;
     _logger                = loggerFactory.CreateLogger(typeof(AccountController));
 }
        public OrganisationsController(IConfiguration configuration, IHttpContextAccessor httpContextAccessor, BCeIDBusinessQuery bceid, ILoggerFactory loggerFactory)
        {
            Configuration = configuration;
            _bceid        = bceid;

            _httpContextAccessor = httpContextAccessor;
            //_sharePointFileManager = sharePointFileManager;
            _logger = loggerFactory.CreateLogger(typeof(OrganisationsController));
        }
 public AccountController(Interfaces.Microsoft.Dynamics.CRM.System context, IConfiguration configuration, IDistributedCache distributedCache, IHttpContextAccessor httpContextAccessor, BCeIDBusinessQuery bceid, ILoggerFactory loggerFactory, IDynamicsClient dynamicsClient)
 {
     Configuration             = configuration;
     this._system              = context;
     this._distributedCache    = null; //distributedCache;
     this._httpContextAccessor = httpContextAccessor;
     this._bceid          = bceid;
     this._dynamicsClient = dynamicsClient;
     _logger = loggerFactory.CreateLogger(typeof(AccountController));
 }
        public void Execute(IDynamicsClient _dynamicsClient, BCeIDBusinessQuery _bceidQuery)
        {
            // first find bad accounts
            string filter = "accountnumber eq '' or accountnumber eq null";

            try
            {
                var badAccounts = _dynamicsClient.Accounts.Get().Value;

                Console.Out.WriteLine($"Found {badAccounts.Count} accounts missing the BN9 Account Number.");
                Console.Out.WriteLine($"Account ID - Account Name - Account Siteminder ID - BN9");
                foreach (var badAccount in badAccounts)
                {
                    if (string.IsNullOrEmpty(badAccount._primarycontactidValue))
                    {
                        Console.Out.WriteLine($"{badAccount.Accountid} - {badAccount.Name} - {badAccount.AdoxioExternalid} - no primary contact.");
                    }
                    else
                    {
                        // get the primary contact external id.
                        var contact = _dynamicsClient.GetContactById(badAccount._primarycontactidValue).GetAwaiter().GetResult();

                        if (contact == null || string.IsNullOrEmpty(contact.AdoxioExternalid))
                        {
                            Console.Out.WriteLine($"{badAccount.Accountid} - {badAccount.Name} - {badAccount.AdoxioExternalid} - no primary contact user identifier.");
                        }
                        else
                        {
                            // get the BN9.
                            string bn9 = "";
                            try
                            {
                                var result = _bceidQuery.ProcessBusinessQuery(contact.AdoxioExternalid).GetAwaiter().GetResult();
                                bn9 = result.businessNumber;
                                Console.Out.WriteLine("** Found BN9");
                                Console.Out.WriteLine($"{badAccount.Accountid} - {badAccount.Name} - {badAccount.AdoxioExternalid} - {bn9} - {result.incorporationNumber}");
                            }
                            catch (Exception e)
                            {
                                Console.Out.WriteLine("ERROR during get BCEID");
                                Console.Out.WriteLine(e.Message);
                            }
                        }
                    }
                }
            }
            catch (Exception e)
            {
                Console.Out.WriteLine("Error getting bad accounts.");
                Console.Out.WriteLine(e.Message);
            }
        }
示例#5
0
 public AccountsController(IConfiguration configuration,
                           IHttpContextAccessor httpContextAccessor,
                           IOrgBookClient orgBookClient,
                           BCeIDBusinessQuery bceid,
                           ILoggerFactory loggerFactory,
                           IDynamicsClient dynamicsClient)
 {
     _configuration       = configuration;
     _bceid               = bceid;
     _dynamicsClient      = dynamicsClient;
     _orgBookclient       = orgBookClient;
     _httpContextAccessor = httpContextAccessor;
     _logger              = loggerFactory.CreateLogger(typeof(AccountsController));
 }
示例#6
0
        // the one parameter is the BCeID guid for an individual.
        static void Main(string[] args)
        {
            bool   isBackfill    = false;
            bool   isSingleQuery = false;
            string singleQuery   = null;


            if (args.Length > 0)
            {
                string arg = args[0];
                if (!string.IsNullOrEmpty(arg))
                {
                    if (arg.ToLower().Equals("backfill"))
                    {
                        isBackfill = true;
                        Console.Out.WriteLine("Backfill enabled.");
                    }
                    else
                    {
                        isSingleQuery = true;
                        singleQuery   = arg;
                        Console.Out.WriteLine("Single query enabled.");
                    }
                }
            }

            // get the environment settings.
            string bceidServiceSvcid  = Environment.GetEnvironmentVariable("BCEID_SERVICE_SVCID");
            string bceidServiceUser   = Environment.GetEnvironmentVariable("BCEID_SERVICE_USER");
            string bceidServicePasswd = Environment.GetEnvironmentVariable("BCEID_SERVICE_PASSWD");
            string bceidServiceUrl    = Environment.GetEnvironmentVariable("BCEID_SERVICE_URL");

            string dynamicsOdataUri       = Environment.GetEnvironmentVariable("DYNAMICS_ODATA_URI");
            string ssgUsername            = Environment.GetEnvironmentVariable("SSG_USERNAME");
            string ssgPassword            = Environment.GetEnvironmentVariable("SSG_PASSWORD");
            string dynamicsNativeOdataUri = Environment.GetEnvironmentVariable("DYNAMICS_NATIVE_ODATA_URI");

            BCeIDBusinessQuery bCeIDBusinessQuery = new BCeIDBusinessQuery(bceidServiceSvcid, bceidServiceUser, bceidServicePasswd, bceidServiceUrl);

            var serviceClientCredentials = new BasicAuthenticationCredentials()
            {
                UserName = ssgUsername,
                Password = ssgPassword
            };

            var _dynamicsClient = new DynamicsClient(new Uri(dynamicsOdataUri), serviceClientCredentials);

            if (isBackfill)
            {
                var contacts = _dynamicsClient.Contacts.Get().Value;

                foreach (MicrosoftDynamicsCRMcontact contact in contacts)
                {
                    if (string.IsNullOrEmpty(contact.Emailaddress1))
                    {
                        string externalId = contact.AdoxioExternalid;
                        if (!string.IsNullOrEmpty(externalId))
                        {
                            var caller = bCeIDBusinessQuery.ProcessBusinessQuery(externalId);
                            caller.Wait();
                            Gov.Lclb.Cllb.Interfaces.BCeIDBusiness bceidBusiness = caller.Result;

                            if (bceidBusiness != null)
                            {
                                MicrosoftDynamicsCRMcontact patchRecord = new MicrosoftDynamicsCRMcontact();
                                if (string.IsNullOrEmpty(contact.Firstname))
                                {
                                    patchRecord.Firstname = bceidBusiness.individualFirstname;
                                }
                                if (string.IsNullOrEmpty(contact.Lastname))
                                {
                                    patchRecord.Lastname = bceidBusiness.individualSurname;
                                }
                                if (string.IsNullOrEmpty(contact.Middlename))
                                {
                                    patchRecord.Middlename = bceidBusiness.individualMiddlename;
                                }
                                if (string.IsNullOrEmpty(contact.Emailaddress1))
                                {
                                    patchRecord.Emailaddress1 = bceidBusiness.contactEmail;
                                }
                                if (string.IsNullOrEmpty(contact.Telephone1))
                                {
                                    patchRecord.Telephone1 = bceidBusiness.contactPhone;
                                }

                                // update the contact.
                                try
                                {
                                    _dynamicsClient.Contacts.Update(contact.Contactid, patchRecord);
                                    Console.Out.WriteLine("Updated contact " + contact.Firstname + " " + contact.Lastname);
                                }
                                catch (OdataerrorException odee)
                                {
                                    Console.Out.WriteLine("Error patching contact");
                                    Console.Out.WriteLine("Request:");
                                    Console.Out.WriteLine(odee.Request.Content);
                                    Console.Out.WriteLine("Response:");
                                    Console.Out.WriteLine(odee.Response.Content);
                                }
                            }
                        }
                    }
                }

                IList <MicrosoftDynamicsCRMaccount> accounts = null;
                // now get a list of all the related accounts.
                try
                {
                    accounts = _dynamicsClient.Accounts.Get().Value;
                }
                catch (OdataerrorException odee)
                {
                    Console.Out.WriteLine("Error getting accounts");
                    Console.Out.WriteLine("Request:");
                    Console.Out.WriteLine(odee.Request.Content);
                    Console.Out.WriteLine("Response:");
                    Console.Out.WriteLine(odee.Response.Content);
                }

                if (accounts != null)
                {
                    foreach (var account in accounts)
                    {
                        // get the contact.
                        string contactid = account._primarycontactidValue;
                        // only process accounts with missing email address.
                        if (!string.IsNullOrEmpty(contactid) && string.IsNullOrEmpty(account.Emailaddress1))
                        {
                            var    contact = _dynamicsClient.Contacts.GetByKey(contactid);
                            string guid    = contact.AdoxioExternalid;

                            if (!string.IsNullOrEmpty(guid))
                            {
                                var caller = bCeIDBusinessQuery.ProcessBusinessQuery(guid);
                                caller.Wait();
                                Gov.Lclb.Cllb.Interfaces.BCeIDBusiness bceidBusiness = caller.Result;

                                if (bceidBusiness != null)
                                {
                                    MicrosoftDynamicsCRMaccount accountPatchRecord = new MicrosoftDynamicsCRMaccount();
                                    if (string.IsNullOrEmpty(account.Emailaddress1))
                                    {
                                        accountPatchRecord.Emailaddress1 = bceidBusiness.contactEmail;
                                    }
                                    if (string.IsNullOrEmpty(account.Telephone1))
                                    {
                                        accountPatchRecord.Telephone1 = bceidBusiness.contactEmail;
                                    }
                                    if (string.IsNullOrEmpty(account.Address1City))
                                    {
                                        accountPatchRecord.Address1City = bceidBusiness.addressCity;
                                    }
                                    if (string.IsNullOrEmpty(account.Address1Postalcode))
                                    {
                                        accountPatchRecord.Address1Postalcode = bceidBusiness.addressPostal;
                                    }
                                    if (string.IsNullOrEmpty(account.Address1Line1))
                                    {
                                        accountPatchRecord.Address1Line1 = bceidBusiness.addressLine1;
                                    }
                                    if (string.IsNullOrEmpty(account.Address1Line2))
                                    {
                                        accountPatchRecord.Address1Line2 = bceidBusiness.addressLine2;
                                    }
                                    try
                                    {
                                        _dynamicsClient.Accounts.Update(account.Accountid, accountPatchRecord);

                                        Console.Out.WriteLine("Updated account " + account.Name);
                                    }
                                    catch (OdataerrorException odee)
                                    {
                                        Console.Out.WriteLine("Error patching account");
                                        Console.Out.WriteLine("Request:");
                                        Console.Out.WriteLine(odee.Request.Content);
                                        Console.Out.WriteLine("Response:");
                                        Console.Out.WriteLine(odee.Response.Content);
                                    }
                                }
                            }
                        }
                    }
                }
            }
            else if (isSingleQuery)
            {
                Console.Out.WriteLine("\"BCEID GUID\",\"Given name\",\"Surname\",\"Email\",\"Phone\",\"Business Number\"");

                // query BCeID
                if (!string.IsNullOrEmpty(singleQuery))
                {
                    var caller = bCeIDBusinessQuery.ProcessBusinessQuery(singleQuery);
                    caller.Wait();
                    var result = caller.Result;
                    if (result != null)
                    {
                        Console.Out.WriteLine("\"" + singleQuery + "\",\"" + result.individualFirstname + "\",\"" + result.individualSurname + "\",\"" + result.contactEmail + "\",\"" + result.contactPhone + "\",\"" + result.businessNumber + "\"");
                    }
                }
            }

            else     // get all contacts.
            {
                // first parse the contacts file.
                List <string> stringList = new List <string>();

                // read from file.

                /*
                 * string jsonString = File.ReadAllText("filename");
                 *
                 *  var jsonData = JsonConvert.DeserializeObject<GetOKResponseModelModelModelModelModelModelModelModel>(jsonString);
                 *  var contacts = jsonData.Value;
                 */

                // Get contacts from dynamics.

                var contacts = _dynamicsClient.Contacts.Get().Value;

                foreach (var contact in contacts)
                {
                    stringList.Add(contact.AdoxioExternalid);
                }

                Console.Out.WriteLine("\"BCEID GUID\",\"Given name\",\"Surname\",\"Email\",\"Phone\",\"Business Number\"");

                foreach (string guid in stringList)
                {
                    // query BCeID
                    if (!string.IsNullOrEmpty(guid))
                    {
                        var caller = bCeIDBusinessQuery.ProcessBusinessQuery(guid);
                        caller.Wait();
                        var result = caller.Result;
                        if (result != null)
                        {
                            Console.Out.WriteLine("\"" + guid + "\",\"" + result.individualFirstname + "\",\"" + result.individualSurname + "\",\"" + result.contactEmail + "\",\"" + result.contactPhone + "\",\"" + result.businessNumber + "\"");
                        }
                    }
                }
            }
        }
示例#7
0
        // the one parameter is the BCeID guid for an individual.
        static void Main(string[] args)
        {
            bool isObfuscate = false;

            bool isClean            = false;
            bool isApplicationClean = false;

            bool isImport = false;

            bool isMove = false;

            bool isDetectBadAccountData = false;

            bool isFixBadAccountData = false;

            bool isFixSharePointNaming = false;
            bool doRename = false;



            // start by getting secrets.
            var builder = new ConfigurationBuilder()
                          .AddEnvironmentVariables()
                          .AddUserSecrets <Program>();
            var Configuration = builder.Build();

            string basepath = Directory.GetParent(Directory.GetCurrentDirectory()).ToString();

            basepath  = Directory.GetParent(basepath).ToString();
            basepath  = Directory.GetParent(basepath).ToString();
            basepath  = Directory.GetParent(basepath).ToString();
            basepath  = Directory.GetParent(basepath).ToString();
            basepath  = Directory.GetParent(basepath).ToString();
            basepath  = Directory.GetParent(basepath).ToString();
            basepath += "\\data";
            string rawbase    = basepath + "\\raw";
            string exportbase = basepath + "\\export";

            if (args.Length > 0)
            {
                string arg = args[0];
                if (!string.IsNullOrEmpty(arg))
                {
                    if (arg.ToLower().Equals("obfuscate"))
                    {
                        isObfuscate = true;
                        Console.Out.WriteLine("Data obfuscation enabled");
                    }
                    else if (arg.ToLower().Equals("import"))
                    {
                        isImport = true;
                        Console.Out.WriteLine("Data import enabled");
                    }
                    else if (arg.ToLower().Equals("detect-bad-account-data"))
                    {
                        isDetectBadAccountData = true;
                        Console.Out.WriteLine("detect-bad-account-data enabled");
                    }
                    else if (arg.ToLower().Equals("fix-bad-account-data"))
                    {
                        isFixBadAccountData = true;
                        Console.Out.WriteLine("fix-bad-account-data enabled");
                    }
                    else if (arg.ToLower().Equals("fix-sharepoint-naming"))
                    {
                        isFixSharePointNaming = true;
                        Console.Out.WriteLine("fix-sharepoint-naming enabled");

                        if (args.Length > 1)
                        {
                            string secondArg = args[1];
                            if (secondArg.ToLower().Equals("rename"))
                            {
                                Console.Out.WriteLine("rename enabled");
                                doRename = true;
                            }
                            else
                            {
                                Console.Out.WriteLine(
                                    "Dry run only - rename not enabled.  Add parameter 'rename' to enable.");
                            }
                        }
                    }

                    else
                    {
                        Console.Out.WriteLine("USAGE - enter the obfuscate parameter to obfuscate data");
                    }
                }
            }


            if (isObfuscate)
            {
                var obfuscator = new Obfuscator(
                    ContactMap,
                    AccountMap,
                    WorkerMap,
                    AliasMap,
                    InvoiceMap,
                    LicenceMap,
                    ApplicationMap,
                    EstablishmentMap,
                    LegalEntityMap,
                    LocalgovindigenousnationMap
                    );

                string filename = $"{rawbase}\\accounts.json";
                List <MicrosoftDynamicsCRMaccount> accounts = JsonConvert.DeserializeObject <List <MicrosoftDynamicsCRMaccount> >(File.ReadAllText(filename));

                filename = $"{rawbase}\\contacts.json";
                List <MicrosoftDynamicsCRMcontact> contacts = JsonConvert.DeserializeObject <List <MicrosoftDynamicsCRMcontact> >(File.ReadAllText(filename));

                filename = $"{rawbase}\\adoxio_aliases.json";
                List <MicrosoftDynamicsCRMadoxioAlias> adoxio_aliases = JsonConvert.DeserializeObject <List <MicrosoftDynamicsCRMadoxioAlias> >(File.ReadAllText(filename));

                filename = $"{rawbase}\\adoxio_applications.json";
                List <MicrosoftDynamicsCRMadoxioApplication> adoxio_applications = JsonConvert.DeserializeObject <List <MicrosoftDynamicsCRMadoxioApplication> >(File.ReadAllText(filename));

                filename = $"{rawbase}\\adoxio_establishments.json";
                List <MicrosoftDynamicsCRMadoxioEstablishment> adoxio_establishments = JsonConvert.DeserializeObject <List <MicrosoftDynamicsCRMadoxioEstablishment> >(File.ReadAllText(filename));

                filename = $"{rawbase}\\adoxio_legalentities.json";
                List <MicrosoftDynamicsCRMadoxioLegalentity> adoxio_legalEntities = JsonConvert.DeserializeObject <List <MicrosoftDynamicsCRMadoxioLegalentity> >(File.ReadAllText(filename));

                filename = $"{rawbase}\\adoxio_licences.json";
                List <MicrosoftDynamicsCRMadoxioLicences> adoxio_licences = JsonConvert.DeserializeObject <List <MicrosoftDynamicsCRMadoxioLicences> >(File.ReadAllText(filename));

                filename = $"{rawbase}\\adoxio_workers.json";
                List <MicrosoftDynamicsCRMadoxioWorker> adoxio_workers = JsonConvert.DeserializeObject <List <MicrosoftDynamicsCRMadoxioWorker> >(File.ReadAllText(filename));

                filename = $"{rawbase}\\invoices.json";
                List <MicrosoftDynamicsCRMinvoice> invoices = JsonConvert.DeserializeObject <List <MicrosoftDynamicsCRMinvoice> >(File.ReadAllText(filename));

                // obfuscate the data.

                var o_accounts = obfuscator.ObfuscateAccounts(accounts);
                var o_contacts = obfuscator.ObfuscateContacts(contacts);
                var o_aliases  = obfuscator.ObfuscateAliases(adoxio_aliases);

                var o_invoices = obfuscator.ObfuscateInvoices(invoices);

                var o_establishments = obfuscator.ObfuscateEstablishments(adoxio_establishments);

                var o_applications = obfuscator.ObfuscateApplications(adoxio_applications);

                var o_workers = obfuscator.ObfuscateWorkers(adoxio_workers);

                var o_licences = obfuscator.ObfuscateLicences(adoxio_licences);

                var o_legalentities = obfuscator.ObfuscateLegalEntities(adoxio_legalEntities);

                // now save the data
                filename = $"{exportbase}\\accounts.json";
                File.WriteAllText(filename, JsonConvert.SerializeObject(o_accounts));
                filename = $"{exportbase}\\contacts.json";
                File.WriteAllText(filename, JsonConvert.SerializeObject(o_contacts));

                filename = $"{exportbase}\\adoxio_aliases.json";
                File.WriteAllText(filename, JsonConvert.SerializeObject(o_aliases));
                filename = $"{exportbase}\\adoxio_applications.json";
                File.WriteAllText(filename, JsonConvert.SerializeObject(o_applications));

                filename = $"{exportbase}\\adoxio_establishments.json";
                File.WriteAllText(filename, JsonConvert.SerializeObject(o_establishments));

                filename = $"{exportbase}\\adoxio_legalentities.json";
                File.WriteAllText(filename, JsonConvert.SerializeObject(o_legalentities));

                filename = $"{exportbase}\\adoxio_licences.json";
                File.WriteAllText(filename, JsonConvert.SerializeObject(o_licences));

                filename = $"{exportbase}\\adoxio_workers.json";
                File.WriteAllText(filename, JsonConvert.SerializeObject(o_workers));

                filename = $"{exportbase}\\invoices.json";
                File.WriteAllText(filename, JsonConvert.SerializeObject(o_invoices));


                /*
                 * // remove all BusinessContacts.
                 * var businessContacts = _dynamicsClient.Businesscontacts.Get().Value;
                 *
                 * foreach (var businessContact in businessContacts)
                 * {
                 *  try
                 *  {
                 *      _dynamicsClient.Businesscontacts.Delete(businessContact.BcgovBusinesscontactid);
                 *      Console.Out.WriteLine("Deleted BusinessContact " + businessContact.BcgovBusinesscontactid);
                 *  }
                 *  catch (HttpOperationException odee)
                 *  {
                 *      Console.Out.WriteLine("Error deleting business contact");
                 *      Console.Out.WriteLine("Request:");
                 *      Console.Out.WriteLine(odee.Request.Content);
                 *      Console.Out.WriteLine("Response:");
                 *      Console.Out.WriteLine(odee.Response.Content);
                 *  }
                 * }
                 */
            }

            if (isClean)
            {
                var     conn    = GetDynamicsConnection(Configuration);
                Cleaner cleaner = new Cleaner();
                cleaner.Clean(conn);
            }

            if (isApplicationClean)
            {
                var conn = GetDynamicsConnection(Configuration);
                ApplicationCleaner cleaner = new ApplicationCleaner();
                cleaner.Clean(conn);
            }



            if (isImport)
            {
                var importer = new Importer(
                    ContactMap,
                    AccountMap,
                    WorkerMap,
                    AliasMap,
                    InvoiceMap,
                    LicenceMap,
                    ApplicationMap,
                    EstablishmentMap,
                    LegalEntityMap,
                    LocalgovindigenousnationMap
                    );

                var conn = GetDynamicsConnection(Configuration);

                // read the exported data.
                string filename = $"{exportbase}\\accounts.json";
                List <MicrosoftDynamicsCRMaccount> accounts = JsonConvert.DeserializeObject <List <MicrosoftDynamicsCRMaccount> >(File.ReadAllText(filename));

                filename = $"{exportbase}\\contacts.json";
                List <MicrosoftDynamicsCRMcontact> contacts = JsonConvert.DeserializeObject <List <MicrosoftDynamicsCRMcontact> >(File.ReadAllText(filename));

                filename = $"{exportbase}\\adoxio_aliases.json";
                List <MicrosoftDynamicsCRMadoxioAlias> aliases = JsonConvert.DeserializeObject <List <MicrosoftDynamicsCRMadoxioAlias> >(File.ReadAllText(filename));

                filename = $"{exportbase}\\adoxio_applications.json";
                List <MicrosoftDynamicsCRMadoxioApplication> applications = JsonConvert.DeserializeObject <List <MicrosoftDynamicsCRMadoxioApplication> >(File.ReadAllText(filename));

                filename = $"{exportbase}\\adoxio_establishments.json";
                List <MicrosoftDynamicsCRMadoxioEstablishment> establishments = JsonConvert.DeserializeObject <List <MicrosoftDynamicsCRMadoxioEstablishment> >(File.ReadAllText(filename));

                filename = $"{exportbase}\\adoxio_legalentities.json";
                List <MicrosoftDynamicsCRMadoxioLegalentity> legalEntities = JsonConvert.DeserializeObject <List <MicrosoftDynamicsCRMadoxioLegalentity> >(File.ReadAllText(filename));

                filename = $"{exportbase}\\adoxio_licences.json";
                List <MicrosoftDynamicsCRMadoxioLicences> licences = JsonConvert.DeserializeObject <List <MicrosoftDynamicsCRMadoxioLicences> >(File.ReadAllText(filename));

                filename = $"{exportbase}\\adoxio_workers.json";
                List <MicrosoftDynamicsCRMadoxioWorker> workers = JsonConvert.DeserializeObject <List <MicrosoftDynamicsCRMadoxioWorker> >(File.ReadAllText(filename));

                filename = $"{exportbase}\\invoices.json";
                List <MicrosoftDynamicsCRMinvoice> invoices = JsonConvert.DeserializeObject <List <MicrosoftDynamicsCRMinvoice> >(File.ReadAllText(filename));

                filename = $"{exportbase}\\adoxio_localgovindigenousnations.json";
                List <MicrosoftDynamicsCRMadoxioLocalgovindigenousnation> lgin = JsonConvert.DeserializeObject <List <MicrosoftDynamicsCRMadoxioLocalgovindigenousnation> >(File.ReadAllText(filename));

                // the order of import is important.

                Console.Out.WriteLine("Importing Accounts");

                importer.ImportAccounts(conn, accounts);

                Console.Out.WriteLine("Importing Contacts");

                importer.ImportContacts(conn, contacts);

                Console.Out.WriteLine("Importing Workers");

                importer.ImportWorkers(conn, workers);

                Console.Out.WriteLine("Importing Aliases");

                importer.ImportAliases(conn, aliases);

                Console.Out.WriteLine("Importing LG IN data");

                importer.ImportLocalGovIndigenousNations(conn, lgin);

                Console.Out.WriteLine("Importing Legal Entities");

                importer.ImportLegalEntities(conn, legalEntities);

                Console.Out.WriteLine("Importing Establishments");

                importer.ImportEstablishments(conn, establishments);

                Console.Out.WriteLine("Importing Invoices");

                importer.ImportInvoices(conn, invoices);

                Console.Out.WriteLine("Importing Licences");

                importer.ImportLicences(conn, licences);

                Console.Out.WriteLine("Importing Applications");

                importer.ImportApplications(conn, applications);
            }

            if (isMove)
            {
                var   conn  = GetDynamicsConnection(Configuration);
                Mover mover = new Mover();
                mover.Move(conn);
            }

            if (isDetectBadAccountData)
            {
                var conn = GetDynamicsConnection(Configuration);
                DetectBadAccountData detector = new DetectBadAccountData();
                detector.Execute(conn);
            }

            if (isFixBadAccountData)
            {
                string bceidUrl    = Configuration["BCEID_SERVICE_URL"];
                string bceidSvcId  = Configuration["BCEID_SERVICE_SVCID"];
                string bceidUserid = Configuration["BCEID_SERVICE_USER"];
                string bceidPasswd = Configuration["BCEID_SERVICE_PASSWD"];

                var bCeIDBusinessQuery = new BCeIDBusinessQuery(bceidSvcId, bceidUserid, bceidPasswd, bceidUrl);


                var conn = GetDynamicsConnection(Configuration);
                FixBadAccountData fixer = new FixBadAccountData();
                fixer.Execute(conn, bCeIDBusinessQuery);
            }


            if (isFixSharePointNaming)
            {
                FixSharePointNaming fix = new FixSharePointNaming();
                fix.Execute(Configuration, doRename);
            }
        }