Пример #1
0
        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);
        }
Пример #2
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;
        }
Пример #5
0
		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;

		}
Пример #6
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;
		}