public void ImportDataFromJSON()
        {
            var importedOrganizations = JsonConvert.DeserializeObject <List <SourceOrganizationEntity> >(File.ReadAllText(CreateOrganizationsJsonTask.OrganizationsGeneratedFile), new JsonSerializerSettings()
            {
                NullValueHandling = NullValueHandling.Ignore
            });
            string langCode = LanguageCode.fi.ToString();

            var nameTypeName = NameTypeEnum.Name.ToString();

            using (var serviceScope = _serviceProvider.GetRequiredService <IServiceScopeFactory>().CreateScope())
            {
                var scopedCtxMgr = serviceScope.ServiceProvider.GetService <IContextManager>();

                scopedCtxMgr.ExecuteWriter(unitOfWork =>
                {
                    var defaultLanguage = unitOfWork.CreateRepository <ILanguageRepository>().All().Where(x => x.Code == langCode).First();
                    var defaultNameType = unitOfWork.CreateRepository <INameTypeRepository>().All().Where(x => x.Code == nameTypeName).FirstOrDefault();
                    var publushingStatusNamePublished = PublishingStatus.Published.ToString();
                    var defaultAreaInformationType    = AreaInformationTypeEnum.WholeCountry.ToString();

                    var organizationRepository                = unitOfWork.CreateRepository <IOrganizationVersionedRepository>();
                    var businessRepository                    = unitOfWork.CreateRepository <IBusinessRepository>();
                    var organizationTypeRepository            = unitOfWork.CreateRepository <IOrganizationTypeRepository>();
                    var organizationNameRepository            = unitOfWork.CreateRepository <IOrganizationNameRepository>();
                    var organizationDisplayNameTypeRepository = unitOfWork.CreateRepository <IOrganizationDisplayNameTypeRepository>();
                    var publishingStatusTypeRepository        = unitOfWork.CreateRepository <IPublishingStatusTypeRepository>();
                    var areaInformationTypeRepository         = unitOfWork.CreateRepository <IAreaInformationTypeRepository>();

                    var publishingStatusPublished = publishingStatusTypeRepository.All().Where(x => x.Code == publushingStatusNamePublished).FirstOrDefault();
                    var areaInformationType       = areaInformationTypeRepository.All().Where(x => x.Code == defaultAreaInformationType).FirstOrDefault();

                    foreach (var importedOrganization in importedOrganizations)
                    {
                        Console.Write("#");

                        // Create Organization and Business
                        var business = new Business()
                        {
                            Id        = Guid.NewGuid(),
                            Created   = DateTime.UtcNow,
                            CreatedBy = CreateOrganizationsJsonTask.DefaultCreatedBy,
                            Name      = importedOrganization.Name,
                            //PublishingStatus = publishingStatusPublished,
                            Code = importedOrganization.BusinessId
                        };

                        var organizationTypeName     = importedOrganization.OrganizationType.Trim().Replace(" ", string.Empty);
                        var organizationTypeNameEnum = GetOrganizationType(organizationTypeName).Value;
                        var organizationType         = organizationTypeRepository.All().Where(x => x.Code == organizationTypeNameEnum.ToString()).FirstOrDefault();

                        var organization = new OrganizationVersioned()
                        {
                            Id               = Guid.NewGuid(),
                            Type             = organizationType,
                            Created          = DateTime.UtcNow,
                            CreatedBy        = CreateOrganizationsJsonTask.DefaultCreatedBy,
                            Business         = business,
                            PublishingStatus = publishingStatusPublished,
                            //DisplayNameType = defaultNameType,
                            AreaInformationType = areaInformationType,
                        };

                        var organizationName = new OrganizationName()
                        {
                            Created               = DateTime.UtcNow,
                            CreatedBy             = CreateOrganizationsJsonTask.DefaultCreatedBy,
                            Localization          = defaultLanguage,
                            Name                  = importedOrganization.Name,
                            OrganizationVersioned = organization,
                            Type                  = defaultNameType
                        };

                        var organizationDisplayNameType = new OrganizationDisplayNameType()
                        {
                            Created               = DateTime.UtcNow,
                            CreatedBy             = CreateOrganizationsJsonTask.DefaultCreatedBy,
                            Localization          = defaultLanguage,
                            OrganizationVersioned = organization,
                            DisplayNameType       = defaultNameType
                        };

                        businessRepository.Add(business);
                        organizationRepository.Add(organization);
                        organizationNameRepository.Add(organizationName);
                        organizationDisplayNameTypeRepository.Add(organizationDisplayNameType);
                    }
                    unitOfWork.Save(SaveMode.NonTrackedDataMigration);
                });
            }
        }
        /// <summary>
        /// Creates organizations and businesses for municipalities.
        /// </summary>
        public void Create()
        {
            // Get start data for OrganizationName and BusinessId
            var resourceManager         = new ResourceManager();
            var municipalitiesStartData = resourceManager.GetDesrializedJsonResource <List <VmJsonMunicipality> >(JsonResources.MunicipalityOrganizations);

            using (var serviceScope = _serviceProvider.GetRequiredService <IServiceScopeFactory>().CreateScope())
            {
                var scopedCtxMgr = serviceScope.ServiceProvider.GetService <IContextManager>();

                var organizationTypeMunicipalityName = OrganizationTypeEnum.Municipality.ToString();
                var defaultPublishingStatusName      = PublishingStatus.Published.ToString();
                var defaultAreaInformationTypeName   = AreaInformationTypeEnum.WholeCountry.ToString();
                var nameTypeName = NameTypeEnum.Name.ToString();

                scopedCtxMgr.ExecuteWriter(unitOfWork =>
                {
                    var municipalityRepository                = unitOfWork.CreateRepository <IMunicipalityRepository>();
                    var organizationRepository                = unitOfWork.CreateRepository <IOrganizationVersionedRepository>();
                    var organizationTypeRepository            = unitOfWork.CreateRepository <IOrganizationTypeRepository>();
                    var publishingStatusTypeRepository        = unitOfWork.CreateRepository <IPublishingStatusTypeRepository>();
                    var businessRepository                    = unitOfWork.CreateRepository <IBusinessRepository>();
                    var nameTypeRepository                    = unitOfWork.CreateRepository <INameTypeRepository>();
                    var areaInformationTypeRepository         = unitOfWork.CreateRepository <IAreaInformationTypeRepository>();
                    var organizationTypeId                    = organizationTypeRepository.All().Where(x => x.Code == organizationTypeMunicipalityName).Select(x => x.Id).FirstOrDefault();
                    var organizationNameRepository            = unitOfWork.CreateRepository <IOrganizationNameRepository>();
                    var organizationDisplayNameTypeRepository = unitOfWork.CreateRepository <IOrganizationDisplayNameTypeRepository>();
                    var defaultPublishingStatusType           = publishingStatusTypeRepository.All().FirstOrDefault(x => x.Code == defaultPublishingStatusName);
                    var nameType                     = nameTypeRepository.All().First(x => x.Code == nameTypeName).Id;
                    var languageRepository           = unitOfWork.CreateRepository <ILanguageRepository>();
                    var languages                    = languageRepository.All().ToList(); // no another language versions needed?
                    var languageId                   = languages.First(i => i.Code.ToLower() == LanguageCode.fi.ToString().ToLower()).Id;
                    var defaultAreaInformationTypeId = areaInformationTypeRepository.All().Where(x => x.Code == defaultAreaInformationTypeName).Select(x => x.Id).FirstOrDefault();

                    // Read all municipalities
                    // exclude Helsinki (091) and Mikkeli (491) from results
                    var municipalitiesTemp = unitOfWork.ApplyIncludes(municipalityRepository.All(), i => i.Include(j => j.MunicipalityNames));
                    var municipalities     = municipalitiesTemp.Where(x => x.Code != "491" && x.Code != "091").ToList();

                    foreach (var municipality in municipalities)
                    {
                        Console.Write("#");

                        // Check if the Organization (type == municipality) exists
                        if (!organizationRepository.All().Any(o => o.Municipality.Id == municipality.Id && o.TypeId == organizationTypeId))
                        {
                            var organizationStartData = municipalitiesStartData.FirstOrDefault(s => s.MunicipalityCode == municipality.Code);
                            if (string.IsNullOrEmpty(organizationStartData?.OrganizationName) || string.IsNullOrEmpty(organizationStartData?.BusinessId))
                            {
                                Console.WriteLine($"Municipality '{municipality.Code}' has missing data, creating of Organization skipped!");
                                continue;
                            }
                            var municipalityName = municipality.MunicipalityNames.FirstOrDefault(x => x.LocalizationId == languageId)?.Name;

                            if (!string.IsNullOrEmpty(municipalityName))
                            {
                                // Create Organization and Business
                                var business = new Business()
                                {
                                    Id        = Guid.NewGuid(),
                                    Created   = DateTime.UtcNow,
                                    CreatedBy = CreateMunicipalityOrganizationsTask.DefaultCreatedBy,
                                    Name      = municipalityName,
                                    //Description = municipality.Description,
                                    //PublishingStatus = defaultPublishingStatusType,
                                    Code = organizationStartData.BusinessId
                                };
                                businessRepository.Add(business);
                            }
                            else
                            {
                                Console.WriteLine($"Municipality '{municipality.Code}' has no name in language FI, creating of Organization Business skipped!");
                            }
                            var organization = new OrganizationVersioned()
                            {
                                Id                    = Guid.NewGuid(),
                                Municipality          = municipality,
                                TypeId                = organizationTypeId,
                                AreaInformationTypeId = defaultAreaInformationTypeId,
                                Created               = DateTime.UtcNow,
                                CreatedBy             = CreateMunicipalityOrganizationsTask.DefaultCreatedBy,
                                //Business = business,
                                PublishingStatus = defaultPublishingStatusType,
                                //DisplayNameTypeId = nameType,
                                UnificRoot = new Organization()
                                {
                                    Id = Guid.NewGuid()
                                }
                            };

                            var organizationName = new OrganizationName()
                            {
                                Created               = DateTime.UtcNow,
                                CreatedBy             = CreateMunicipalityOrganizationsTask.DefaultCreatedBy,
                                LocalizationId        = languageId,
                                Name                  = organizationStartData.OrganizationName,
                                OrganizationVersioned = organization,
                                TypeId                = nameType
                            };

                            var organizationDisplayNameType = new OrganizationDisplayNameType()
                            {
                                Created               = DateTime.UtcNow,
                                CreatedBy             = CreateMunicipalityOrganizationsTask.DefaultCreatedBy,
                                LocalizationId        = languageId,
                                OrganizationVersioned = organization,
                                DisplayNameTypeId     = nameType
                            };

                            organizationDisplayNameTypeRepository.Add(organizationDisplayNameType);
                            organizationNameRepository.Add(organizationName);
                            organizationRepository.Add(organization);
                        }
                    }
                    unitOfWork.Save(SaveMode.NonTrackedDataMigration);
                });
            }
        }