private static int AddOrganizationDomain(int itemId, string domainName) { Log.WriteStart(string.Format("Importing domain {0}...", domainName)); // load organization Organization org = (Organization)PackageController.GetPackageItem(itemId); if (org == null) { return(-1); } // check package int packageCheck = SecurityContext.CheckPackage(org.PackageId, DemandPackage.IsActive); if (packageCheck < 0) { return(packageCheck); } DomainInfo domain = null; // check if the domain already exists int checkResult = ServerController.CheckDomain(domainName); if (checkResult == BusinessErrorCodes.ERROR_DOMAIN_ALREADY_EXISTS) { // domain exists // check if it belongs to the same space domain = ServerController.GetDomain(domainName); if (domain == null) { return(checkResult); } if (domain.PackageId != org.PackageId) { return(checkResult); } if (DataProvider.ExchangeOrganizationDomainExists(domain.DomainId)) { return(BusinessErrorCodes.ERROR_ORGANIZATION_DOMAIN_IS_IN_USE); } } else if (checkResult == BusinessErrorCodes.ERROR_RESTRICTED_DOMAIN) { return(checkResult); } // create domain if required if (domain == null) { domain = new DomainInfo(); domain.PackageId = org.PackageId; domain.DomainName = domainName; domain.IsPreviewDomain = false; domain.IsSubDomain = false; // add domain domain.DomainId = ServerController.AddDomain(domain); } // register domain DataProvider.AddExchangeOrganizationDomain(itemId, domain.DomainId, false); // register service item OrganizationDomain exchDomain = new OrganizationDomain(); exchDomain.Name = domainName; exchDomain.PackageId = org.PackageId; exchDomain.ServiceId = org.ServiceId; PackageController.AddPackageItem(exchDomain); Log.WriteEnd("Domain imported"); return(0); }
public static int CreateOrganization(int packageId, string organizationId, string organizationName) { int itemId; int errorCode; // place log record Log.WriteStart(string.Format("Importing organization {0}...", organizationName)); if (!CheckQuotas(packageId, out errorCode)) { return(errorCode); } string addressListsContainer = null; if (Global.IsExchange) { try { addressListsContainer = ADUtils.GetAddressListsContainer(); } catch (Exception ex) { Log.WriteError("Cannot load Exchange 2007 Address Lists Container", ex); return(EXCHANGE_CONTAINER_ERROR); } } Organization org = PopulateOrganization(packageId, organizationId, addressListsContainer); // Check if organization exitsts. if (OrganizationIdentifierExists(organizationId)) { return(BusinessErrorCodes.ERROR_ORG_ID_EXISTS); } int serviceId = PackageController.GetPackageServiceId(packageId, ResourceGroups.HostedOrganizations); //create temprory domain name; string domainName = CreateTemporyDomainName(serviceId, organizationId); Log.WriteInfo(string.Format("Importing temp domain {0}", domainName)); if (string.IsNullOrEmpty(domainName)) { return(BusinessErrorCodes.ERROR_ORGANIZATION_TEMP_DOMAIN_IS_NOT_SPECIFIED); } bool domainCreated; int domainId = CreateDomain(domainName, packageId, out domainCreated); //create domain if (domainId < 0) { return(domainId); } //add organization to package items itemId = AddOrganizationToPackageItems(org, serviceId, packageId, organizationName, organizationId, domainName); // register org ID DataProvider.AddExchangeOrganization(itemId, organizationId); // register domain DataProvider.AddExchangeOrganizationDomain(itemId, domainId, true); // register organization domain service item OrganizationDomain orgDomain = new OrganizationDomain(); orgDomain.Name = domainName; orgDomain.PackageId = packageId; orgDomain.ServiceId = serviceId; PackageController.AddPackageItem(orgDomain); Log.WriteEnd("Organization imported"); return(itemId); }
public static int AddOrganizationDomain(int itemId, string domainName) { // check account int accountCheck = SecurityContext.CheckAccount(DemandAccount.NotDemo | DemandAccount.IsActive); if (accountCheck < 0) return accountCheck; // check domains quota OrganizationStatistics orgStats = GetOrganizationStatistics(itemId); if (orgStats.AllocatedDomains > -1 && orgStats.CreatedDomains >= orgStats.AllocatedDomains) return BusinessErrorCodes.ERROR_EXCHANGE_DOMAINS_QUOTA_LIMIT; // place log record TaskManager.StartTask("ORGANIZATION", "ADD_DOMAIN", domainName); TaskManager.ItemId = itemId; try { // load organization Organization org = (Organization)PackageController.GetPackageItem(itemId); if (org == null) return -1; // check package int packageCheck = SecurityContext.CheckPackage(org.PackageId, DemandPackage.IsActive); if (packageCheck < 0) return packageCheck; DomainInfo domain = null; // check if the domain already exists int checkResult = ServerController.CheckDomain(domainName); if (checkResult == BusinessErrorCodes.ERROR_DOMAIN_ALREADY_EXISTS) { // domain exists // check if it belongs to the same space domain = ServerController.GetDomain(domainName); if (domain == null) return checkResult; if (domain.PackageId != org.PackageId) return checkResult; if (DataProvider.ExchangeOrganizationDomainExists(domain.DomainId)) return BusinessErrorCodes.ERROR_ORGANIZATION_DOMAIN_IS_IN_USE; } else if (checkResult == BusinessErrorCodes.ERROR_RESTRICTED_DOMAIN) { return checkResult; } // create domain if required if (domain == null) { domain = new DomainInfo(); domain.PackageId = org.PackageId; domain.DomainName = domainName; domain.IsInstantAlias = false; domain.IsSubDomain = false; int domainId = ServerController.AddDomain(domain); if (domainId < 0) return domainId; // add domain domain.DomainId = domainId; } // register domain DataProvider.AddExchangeOrganizationDomain(itemId, domain.DomainId, false); // register service item OrganizationDomain exchDomain = new OrganizationDomain(); exchDomain.Name = domainName; exchDomain.PackageId = org.PackageId; exchDomain.ServiceId = org.ServiceId; PackageController.AddPackageItem(exchDomain); Organizations orgProxy = GetOrganizationProxy(org.ServiceId); orgProxy.CreateOrganizationDomain(org.DistinguishedName, domainName); if (!string.IsNullOrEmpty(org.GlobalAddressList)) { ExchangeServerController.AddAuthoritativeDomain(itemId, domain.DomainId); } if (org.IsOCSOrganization) { OCSController.AddDomain(domain.DomainName, itemId); } return 0; } catch (Exception ex) { throw TaskManager.WriteError(ex); } finally { TaskManager.CompleteTask(); } }
public static int CreateOrganization(int packageId, string organizationId, string organizationName) { int itemId; int errorCode; if (!CheckQuotas(packageId, out errorCode)) return errorCode; // place log record TaskManager.StartTask("ORGANIZATION", "CREATE_ORG", organizationName); TaskManager.TaskParameters["Organization ID"] = organizationId; try { // Check if organization exitsts. if (OrganizationIdentifierExists(organizationId)) return BusinessErrorCodes.ERROR_ORG_ID_EXISTS; // Create Organization Unit int serviceId = PackageController.GetPackageServiceId(packageId, ResourceGroups.HostedOrganizations); Organizations orgProxy = GetOrganizationProxy(serviceId); Organization org = null; if (!orgProxy.OrganizationExists(organizationId)) { org = orgProxy.CreateOrganization(organizationId); } else return BusinessErrorCodes.ERROR_ORG_ID_EXISTS; //create temporary domain name; string domainName = CreateTemporyDomainName(serviceId, organizationId); if (string.IsNullOrEmpty(domainName)) { RollbackOrganization(packageId, organizationId); return BusinessErrorCodes.ERROR_ORGANIZATION_TEMP_DOMAIN_IS_NOT_SPECIFIED; } bool domainCreated; int domainId = CreateDomain(domainName, packageId, out domainCreated); //create domain if (domainId < 0) { RollbackOrganization(packageId, organizationId); return domainId; } PackageContext cntx = PackageController.GetPackageContext(packageId); if (cntx.Quotas[Quotas.HOSTED_SHAREPOINT_STORAGE_SIZE] != null) org.MaxSharePointStorage = cntx.Quotas[Quotas.HOSTED_SHAREPOINT_STORAGE_SIZE].QuotaAllocatedValue; if (cntx.Quotas[Quotas.HOSTED_SHAREPOINT_STORAGE_SIZE] != null) org.WarningSharePointStorage = cntx.Quotas[Quotas.HOSTED_SHAREPOINT_STORAGE_SIZE].QuotaAllocatedValue; //add organization to package items itemId = AddOrganizationToPackageItems(org, serviceId, packageId, organizationName, organizationId, domainName); // register org ID DataProvider.AddExchangeOrganization(itemId, organizationId); // register domain DataProvider.AddExchangeOrganizationDomain(itemId, domainId, true); // register organization domain service item OrganizationDomain orgDomain = new OrganizationDomain { Name = domainName, PackageId = packageId, ServiceId = serviceId }; PackageController.AddPackageItem(orgDomain); } catch (Exception ex) { //rollback organization try { RollbackOrganization(packageId, organizationId); } catch (Exception rollbackException) { TaskManager.WriteError(rollbackException); } throw TaskManager.WriteError(ex); } finally { TaskManager.CompleteTask(); } return itemId; }
private static int AddOrganizationDomain(int itemId, string domainName) { Log.WriteStart(string.Format("Importing domain {0}...", domainName)); // load organization Organization org = (Organization)PackageController.GetPackageItem(itemId); if (org == null) return -1; // check package int packageCheck = SecurityContext.CheckPackage(org.PackageId, DemandPackage.IsActive); if (packageCheck < 0) return packageCheck; DomainInfo domain = null; // check if the domain already exists int checkResult = ServerController.CheckDomain(domainName); if (checkResult == BusinessErrorCodes.ERROR_DOMAIN_ALREADY_EXISTS) { // domain exists // check if it belongs to the same space domain = ServerController.GetDomain(domainName); if (domain == null) return checkResult; if (domain.PackageId != org.PackageId) return checkResult; if (DataProvider.ExchangeOrganizationDomainExists(domain.DomainId)) return BusinessErrorCodes.ERROR_ORGANIZATION_DOMAIN_IS_IN_USE; } else if (checkResult == BusinessErrorCodes.ERROR_RESTRICTED_DOMAIN) { return checkResult; } // create domain if required if (domain == null) { domain = new DomainInfo(); domain.PackageId = org.PackageId; domain.DomainName = domainName; domain.IsInstantAlias = false; domain.IsSubDomain = false; // add domain domain.DomainId = ServerController.AddDomain(domain); } // register domain DataProvider.AddExchangeOrganizationDomain(itemId, domain.DomainId, false); // register service item OrganizationDomain exchDomain = new OrganizationDomain(); exchDomain.Name = domainName; exchDomain.PackageId = org.PackageId; exchDomain.ServiceId = org.ServiceId; PackageController.AddPackageItem(exchDomain); Log.WriteEnd("Domain imported"); return 0; }
public static int CreateOrganization(int packageId, string organizationId, string organizationName) { int itemId; int errorCode; // place log record Log.WriteStart(string.Format("Importing organization {0}...", organizationName)); if (!CheckQuotas(packageId, out errorCode)) return errorCode; string addressListsContainer = null; try { addressListsContainer = ADUtils.GetAddressListsContainer(); } catch (Exception ex) { Log.WriteError("Cannot load Exchange 2007 Address Lists Container", ex); return EXCHANGE_CONTAINER_ERROR; } Organization org = PopulateOrganization(packageId, organizationId, addressListsContainer); // Check if organization exitsts. if (OrganizationIdentifierExists(organizationId)) return BusinessErrorCodes.ERROR_ORG_ID_EXISTS; int serviceId = PackageController.GetPackageServiceId(packageId, ResourceGroups.HostedOrganizations); //create temprory domain name; string domainName = CreateTemporyDomainName(serviceId, organizationId); Log.WriteInfo(string.Format("Importing temp domain {0}", domainName)); if (string.IsNullOrEmpty(domainName)) return BusinessErrorCodes.ERROR_ORGANIZATION_TEMP_DOMAIN_IS_NOT_SPECIFIED; bool domainCreated; int domainId = CreateDomain(domainName, packageId, out domainCreated); //create domain if (domainId < 0) return domainId; //add organization to package items itemId = AddOrganizationToPackageItems(org, serviceId, packageId, organizationName, organizationId, domainName); // register org ID DataProvider.AddExchangeOrganization(itemId, organizationId); // register domain DataProvider.AddExchangeOrganizationDomain(itemId, domainId, true); // register organization domain service item OrganizationDomain orgDomain = new OrganizationDomain(); orgDomain.Name = domainName; orgDomain.PackageId = packageId; orgDomain.ServiceId = serviceId; PackageController.AddPackageItem(orgDomain); Log.WriteEnd("Organization imported"); return itemId; }