internal static ADGroup CreateUniqueChildUSG(IRecipientSession session, ADObjectId dom, ADObjectId containerId, string groupNameOrig, string groupDescription, OrganizationId orgId)
 {
     return(InitializeExchangeUniversalGroups.CreateUniqueChildSG(session, dom, containerId, groupNameOrig, groupDescription, GroupTypeFlags.Universal | GroupTypeFlags.SecurityEnabled, orgId));
 }
        internal static ADGroup CreateUniqueChildSG(IRecipientSession session, ADObjectId dom, ADObjectId containerId, string groupNameOrig, string groupDescription, GroupTypeFlags groupType, OrganizationId orgId)
        {
            string groupSam = InitializeExchangeUniversalGroups.FindUniqueSamAccountName(session, dom, groupNameOrig);

            return(InitializeExchangeUniversalGroups.CreateUniqueChildSG(session, dom, containerId, groupNameOrig, groupDescription, groupSam, groupType, orgId));
        }
        private ADGroup CreateGroup(ADOrganizationalUnit usgContainer, string groupName, int groupId, Guid wkGuid, string groupDescription, GroupTypeFlags groupType, bool createAsRoleGroup)
        {
            ADRecipient  adrecipient  = base.ResolveExchangeGroupGuid <ADRecipient>(wkGuid);
            DNWithBinary dnwithBinary = null;

            if (adrecipient != null)
            {
                base.LogReadObject(adrecipient);
                if (adrecipient.RecipientType != RecipientType.Group)
                {
                    base.WriteError(new InvalidWKObjectTargetException(wkGuid.ToString(), "CN=Microsoft Exchange,CN=Services," + this.configurationSession.ConfigurationNamingContext.DistinguishedName, adrecipient.Id.DistinguishedName, groupType.ToString()), ErrorCategory.NotSpecified, null);
                }
                ADGroup adgroup = adrecipient as ADGroup;
                base.LogReadObject(adgroup);
                if ((adgroup.GroupType & groupType) != groupType)
                {
                    base.WriteError(new InvalidWKObjectTargetException(wkGuid.ToString(), "CN=Microsoft Exchange,CN=Services," + this.configurationSession.ConfigurationNamingContext.DistinguishedName, adgroup.Id.DistinguishedName, groupType.ToString()), ErrorCategory.NotSpecified, null);
                }
                if (createAsRoleGroup && adgroup.RecipientTypeDetails != RecipientTypeDetails.RoleGroup)
                {
                    base.WriteError(new InvalidWKObjectTargetException(wkGuid.ToString(), "CN=Microsoft Exchange,CN=Services," + this.configurationSession.ConfigurationNamingContext.DistinguishedName, adgroup.Id.DistinguishedName, RecipientTypeDetails.RoleGroup.ToString()), ErrorCategory.NotSpecified, null);
                }
                base.WriteVerbose(Strings.InfoGroupAlreadyPresent(adgroup.Id.DistinguishedName));
                dnwithBinary = DirectoryCommon.FindWellKnownObjectEntry(this.exchangeConfigContainer.OtherWellKnownObjects, wkGuid);
                if (dnwithBinary == null)
                {
                    dnwithBinary = this.CreateWKGuid(this.exchangeConfigContainer, adgroup.Id, wkGuid);
                }
                if (createAsRoleGroup)
                {
                    InitializeExchangeUniversalGroups.UpgradeRoleGroupLocalization(adgroup, groupId, groupDescription, this.rootDomainRecipientSession);
                }
                return(adgroup);
            }
            ADContainer adcontainer = this.exchangeConfigContainer;

            dnwithBinary = DirectoryCommon.FindWellKnownObjectEntry(adcontainer.OtherWellKnownObjects, wkGuid);
            if (dnwithBinary == null)
            {
                adcontainer  = this.configContainer;
                dnwithBinary = DirectoryCommon.FindWellKnownObjectEntry(adcontainer.OtherWellKnownObjects, wkGuid);
            }
            if (dnwithBinary != null)
            {
                base.WriteError(new InvalidWKObjectException(dnwithBinary.ToString(), adcontainer.DistinguishedName), ErrorCategory.NotSpecified, null);
            }
            ADGroup adgroup2 = null;

            try
            {
                if (createAsRoleGroup)
                {
                    adgroup2 = InitializeExchangeUniversalGroups.CreateUniqueRoleGroup(this.rootDomainRecipientSession, this.rootDomain.Id, usgContainer.Id, groupName, groupId, groupDescription, OrganizationId.ForestWideOrgId);
                }
                else
                {
                    adgroup2 = InitializeExchangeUniversalGroups.CreateUniqueChildSG(this.rootDomainRecipientSession, this.rootDomain.Id, usgContainer.Id, groupName, groupDescription, groupType, OrganizationId.ForestWideOrgId);
                }
                dnwithBinary = this.CreateWKGuid(this.exchangeConfigContainer, adgroup2.Id, wkGuid);
            }
            finally
            {
                if (adgroup2 == null && dnwithBinary != null)
                {
                    this.exchangeConfigContainer.OtherWellKnownObjects.Remove(dnwithBinary);
                    this.domainConfigurationSession.Save(this.exchangeConfigContainer);
                    base.LogWriteObject(this.exchangeConfigContainer);
                }
                else if (adgroup2 != null && dnwithBinary == null)
                {
                    this.rootDomainRecipientSession.Delete(adgroup2);
                    base.LogWriteObject(adgroup2);
                    adgroup2 = null;
                }
            }
            return(adgroup2);
        }