// Token: 0x06001AA4 RID: 6820 RVA: 0x0006F970 File Offset: 0x0006DB70 public void Expand(ADRawEntry recipientToExpand, ADRecipientExpansion.HandleRecipientDelegate handleRecipient, ADRecipientExpansion.HandleFailureDelegate handleFailure) { if (recipientToExpand == null) { throw new ArgumentNullException("recipientToExpand"); } ExTraceGlobals.ADExpansionTracer.TraceDebug((long)this.GetHashCode(), "Requested to expand recipient: {0}", new object[] { recipientToExpand[ADObjectSchema.Id] }); Stack <ADRecipientExpansion.ExpandableEntry> stack = new Stack <ADRecipientExpansion.ExpandableEntry>(); if (!this.ProcessChild(recipientToExpand, null, handleRecipient, handleFailure, stack)) { return; } while (stack.Count > 0) { ADRecipientExpansion.ExpandableEntry expandableEntry = stack.Pop(); ExTraceGlobals.ADExpansionTracer.TraceDebug((long)this.GetHashCode(), "Expanding recipient: {0}", new object[] { expandableEntry.Entry[ADObjectSchema.Id] }); if (!this.ExpandEntry(expandableEntry, handleRecipient, handleFailure, stack)) { ExTraceGlobals.ADExpansionTracer.TraceDebug((long)this.GetHashCode(), "Expansion terminated by delegate"); return; } } ExTraceGlobals.ADExpansionTracer.TraceDebug((long)this.GetHashCode(), "Expansion completed"); }
public IAutodMiniRecipient GetNextUserFromSortedList(SmtpAddress emailAddress) { IRecipientSession recipientSession = DirectorySessionFactory.Default.CreateRootOrgRecipientSession(true, ConsistencyMode.IgnoreInvalid, ADSessionSettings.FromRootOrgScopeSet(), 66, "GetNextUserFromSortedList", "f:\\15.00.1497\\sources\\dev\\autodisc\\src\\AutoDiscoverV2\\TenantRepository.cs"); this.logger.AppendGenericInfo("GetOnPremUser", "Start Ad lookup"); QueryFilter filter = new AndFilter(new QueryFilter[] { new OrFilter(new QueryFilter[] { new ComparisonFilter(ComparisonOperator.Equal, ADRecipientSchema.RecipientTypeDetails, RecipientTypeDetails.UserMailbox), new ComparisonFilter(ComparisonOperator.Equal, ADRecipientSchema.RecipientTypeDetails, RecipientTypeDetails.MailUser) }), new ComparisonFilter(ComparisonOperator.GreaterThanOrEqual, ADUserSchema.UserPrincipalName, emailAddress.Address) }); ADRawEntry[] array = recipientSession.Find(null, QueryScope.SubTree, filter, null, 1, new PropertyDefinition[] { ADUserSchema.UserPrincipalName, ADRecipientSchema.ExternalEmailAddress }); if (array != null) { ADRawEntry adrawEntry = array.FirstOrDefault <ADRawEntry>(); if (adrawEntry != null) { return(new AutodMiniRecipient(adrawEntry)); } } return(null); }
// Token: 0x06001AB2 RID: 6834 RVA: 0x0006FFDC File Offset: 0x0006E1DC private bool ExpandContactChain(ADRecipientExpansion.ExpandableEntry contact, ADRecipientExpansion.HandleRecipientDelegate handleRecipient, ADRecipientExpansion.HandleFailureDelegate handleFailure, Stack <ADRecipientExpansion.ExpandableEntry> expansionStack) { ExTraceGlobals.ADExpansionTracer.TraceDebug((long)this.GetHashCode(), "Expanding possible contact chain for: {0}", new object[] { contact.Entry[ADObjectSchema.Id] }); ADRawEntry adrawEntry = this.session.FindByProxyAddress((ProxyAddress)contact.Entry[ADRecipientSchema.ExternalEmailAddress], this.allProperties); if (handleRecipient != null) { ExpansionType expansionType = (adrawEntry == null) ? ExpansionType.None : ExpansionType.ContactChain; ExpansionControl expansionControl = ADRecipientExpansion.InvokeRecipientDelegate(handleRecipient, contact.Entry, expansionType, contact.Parent); if (expansionControl != ExpansionControl.Continue) { return(expansionControl != ExpansionControl.Terminate); } } if (adrawEntry != null) { ExTraceGlobals.ADExpansionTracer.TraceDebug((long)this.GetHashCode(), "Found chained object: {0}", new object[] { adrawEntry[ADObjectSchema.Id] }); return(this.ProcessChild(adrawEntry, contact, handleRecipient, handleFailure, expansionStack)); } ExTraceGlobals.ADExpansionTracer.TraceDebug((long)this.GetHashCode(), "No contact chain found"); return(true); }
// Token: 0x06001367 RID: 4967 RVA: 0x00071468 File Offset: 0x0006F668 protected void RememberIfLinkHasValue(ADRawEntry adRawEntry) { bool flag = false; if ((((ADPropertyDefinition)this.linkProperty).Flags & ADPropertyDefinitionFlags.MultiValued) != ADPropertyDefinitionFlags.None) { MultiValuedProperty <ADObjectId> multiValuedProperty = (MultiValuedProperty <ADObjectId>)adRawEntry[this.linkProperty]; if (multiValuedProperty != null && multiValuedProperty.Count > 0) { flag = true; } } else { ADObjectId adobjectId = (ADObjectId)adRawEntry[this.linkProperty]; if (adobjectId != null) { flag = true; } } if (flag) { adRawEntry.SetIsReadOnly(false); adRawEntry[this.placeholderProperty] = true; adRawEntry[this.linkProperty] = null; } }
private ADRawEntry ChooseBetweenAmbiguousUsers(ADRawEntry[] entries, int lower, int upper) { if (lower >= upper) { throw new ArgumentException("lower bound is equal or greater than upper bound"); } if (lower + 1 == upper) { return(entries[lower]); } int num = (upper - lower) / 2; ADRawEntry adrawEntry = this.ChooseBetweenAmbiguousUsers(entries, lower, lower + num); ADRawEntry adrawEntry2 = this.ChooseBetweenAmbiguousUsers(entries, lower + num, upper); if (adrawEntry == null || adrawEntry2 == null) { return(null); } ADObjectId adobjectId = this.ChooseBetweenAmbiguousUsers(adrawEntry.Id, adrawEntry2.Id); if (adobjectId == null) { return(null); } if (ADObjectId.Equals(adrawEntry.Id, adobjectId)) { return(adrawEntry); } return(adrawEntry2); }
// Token: 0x06000587 RID: 1415 RVA: 0x0001EF50 File Offset: 0x0001D150 protected override AnchorMailbox ResolveAnchorMailbox() { IIdentity identity = base.HttpContext.User.Identity; string text; if (!RequestPathParser.IsRestGroupUserActionRequest(base.ClientRequest.Url.AbsolutePath) && RequestPathParser.TryGetTargetMailbox(base.ClientRequest.Url.PathAndQuery, ref text) && SmtpAddress.IsValidSmtpAddress(text)) { Guid guid; Guid guid2; if (RequestPathParser.TryParseExternalDirectoryId(text, ref guid, ref guid2)) { base.Logger.SafeSet(3, "TargetMailbox-ExternalDirectoryObjectId"); return(new ExternalDirectoryObjectIdAnchorMailbox(guid.ToString(), guid2, this)); } if (!RequestPathParser.TryParseSpoProxy(text, ref guid2)) { base.Logger.Set(3, "TargetMailbox-SMTP"); return(new SmtpAnchorMailbox(text, this)); } ADRawEntry adrawEntry = DirectoryHelper.ResolveMailboxByProxyAddress(base.LatencyTracker, base.Logger, guid2, text, "SPO"); if (adrawEntry != null) { base.Logger.SafeSet(3, "TargetMailbox-SpoProxy"); return(new ProxyAddressAnchorMailbox(adrawEntry, this)); } } return(base.ResolveAnchorMailbox()); }
public override CapabilityEvaluationResult Evaluate(ADRawEntry adObject) { if (adObject == null) { throw new ArgumentNullException("adObject"); } ExTraceGlobals.AccessCheckTracer.TraceDebug <string, string>((long)this.GetHashCode(), "Entering SimpleCapabilityIdentifierEvaluator.Evaluate('{0}') CapabilityToCheck '{1}'.", adObject.GetDistinguishedNameOrName(), base.Capability.ToString()); if (!adObject.propertyBag.Contains(SharedPropertyDefinitions.RawCapabilities)) { ExTraceGlobals.AccessCheckTracer.TraceDebug <string, string, string>((long)this.GetHashCode(), "SimpleCapabilityIdentifierEvaluator.Evaluate('{0}') return '{1}'. CapabilityToCheck '{2}' - object doesn't have the Capabilities property.", adObject.GetDistinguishedNameOrName(), CapabilityEvaluationResult.NotApplicable.ToString(), base.Capability.ToString()); return(CapabilityEvaluationResult.NotApplicable); } CapabilityEvaluationResult capabilityEvaluationResult; if (OpathFilterEvaluator.FilterMatches(this.filter, adObject)) { capabilityEvaluationResult = CapabilityEvaluationResult.Yes; } else { capabilityEvaluationResult = CapabilityEvaluationResult.No; } ExTraceGlobals.AccessCheckTracer.TraceDebug <string, string, string>((long)this.GetHashCode(), "SimpleCapabilityIdentifierEvaluator.Evaluate('{0}') return '{1}'. CapabilityToCheck '{2}'", adObject.GetDistinguishedNameOrName(), capabilityEvaluationResult.ToString(), base.Capability.ToString()); return(capabilityEvaluationResult); }
// Token: 0x06000433 RID: 1075 RVA: 0x000181F8 File Offset: 0x000163F8 private static ADRawEntry GetCallerAdEntry(IRequestContext requestContext) { if (!requestContext.HttpContext.Items.Contains(Constants.CallerADRawEntryKeyName)) { CommonAccessToken commonAccessToken = requestContext.HttpContext.Items["Item-CommonAccessToken"] as CommonAccessToken; if (commonAccessToken == null) { throw new InvalidOperationException("CAT token not present - cannot lookup LiveIdBasic user's AD entry."); } ADRawEntry value = null; LatencyTracker latencyTracker = (LatencyTracker)requestContext.HttpContext.Items[Constants.LatencyTrackerContextKeyName]; LiveIdBasicTokenAccessor accessor = LiveIdBasicTokenAccessor.Attach(commonAccessToken); if (accessor.TokenType == 2) { if (ExTraceGlobals.VerboseTracer.IsTraceEnabled(1)) { ExTraceGlobals.VerboseTracer.TraceDebug <string, string>(0L, "[Extensions::GetFullCallerIdentity] Calling AD to convert PUID {0} for LiveIdMemberName {1} to SID to construct GenericSidIdentity.", accessor.Puid, accessor.LiveIdMemberName); } ITenantRecipientSession session = DirectoryHelper.GetTenantRecipientSessionFromSmtpOrLiveId(accessor.LiveIdMemberName, requestContext.Logger, latencyTracker, false); value = DirectoryHelper.InvokeAccountForest <ADRawEntry>(latencyTracker, () => session.FindUniqueEntryByNetID(accessor.Puid, null, UserBasedAnchorMailbox.ADRawEntryPropertySet, "d:\\dbs\\sh\\e16df\\0212_214120_0\\cmd\\1g\\sources\\Dev\\Cafe\\src\\HttpProxy\\Misc\\LiveIdBasicHelper.cs", 92, "GetCallerAdEntry"), requestContext.Logger, session); } requestContext.HttpContext.Items[Constants.CallerADRawEntryKeyName] = value; } return((ADRawEntry)requestContext.HttpContext.Items[Constants.CallerADRawEntryKeyName]); }
// Token: 0x0600131E RID: 4894 RVA: 0x0006E8A9 File Offset: 0x0006CAA9 public TemplateFileGenerator(IConfigurationSession adSystemConfigSession, ADRawEntry addressTemplateContainer, OABDataFileType oabDataFileType, GenerationStats stats) { this.adSystemConfigSession = adSystemConfigSession; this.addressTemplateContainer = addressTemplateContainer; this.oabDataFileType = oabDataFileType; this.stats = stats; }
private ExpansionControl OnRecipient(ADRawEntry recipient, ExpansionType recipientExpansionType, ADRawEntry parent, ExpansionType parentExpansionType) { bool flag = CertificateManager.IsADDistributionList((RecipientType)recipient[ADRecipientSchema.RecipientType]); if (flag && (bool)recipient[ADGroupSchema.HiddenGroupMembershipEnabled]) { this.certificates.Clear(); this.size = 0; return(ExpansionControl.Terminate); } if (!flag && !this.previouslySeen.Contains(recipient.Identity.ToString())) { this.size++; this.previouslySeen.Add(recipient.Identity.ToString()); X509Certificate2 adrecipientCert = this.manager.GetADRecipientCert(recipient); if (adrecipientCert != null) { this.certificates.Add(adrecipientCert); } } if (this.size > GlobalSettings.MaxSMimeADDistributionListExpansion) { this.size = 0; this.certificates.Clear(); return(ExpansionControl.Terminate); } return(ExpansionControl.Continue); }
public override CapabilityEvaluationResult Evaluate(ADRawEntry adObject) { if (adObject == null) { throw new ArgumentNullException("adObject"); } ExTraceGlobals.AccessCheckTracer.TraceDebug <string, string>((long)this.GetHashCode(), "Entering UMFeatureRestrictedCapabilityIdentifierEvaluator.Evaluate('{0}') CapabilityToCheck '{1}'.", adObject.GetDistinguishedNameOrName(), base.Capability.ToString()); if (!Datacenter.IsMultiTenancyEnabled()) { ExTraceGlobals.AccessCheckTracer.TraceDebug <string, string, string>((long)this.GetHashCode(), "MasteredOnPremiseCapabilityIdentifierEvaluator.Evaluate('{0}') return '{1}'. CapabilityToCheck '{2}' - not datacenter mode.", adObject.GetDistinguishedNameOrName(), CapabilityEvaluationResult.NotApplicable.ToString(), base.Capability.ToString()); return(CapabilityEvaluationResult.NotApplicable); } CountryInfo countryInfo = (CountryInfo)adObject[ADRecipientSchema.UsageLocation]; if (null == countryInfo) { ExTraceGlobals.AccessCheckTracer.TraceDebug <string, string, string>((long)this.GetHashCode(), "UMFeatureRestrictedCapabilityIdentifierEvaluator.Evaluate('{0}') return '{1}'. CapabilityToCheck '{2}' - UsageLocation is '<NULL>'.", adObject.GetDistinguishedNameOrName(), CapabilityEvaluationResult.NotApplicable.ToString(), base.Capability.ToString()); return(CapabilityEvaluationResult.NotApplicable); } CountryList countryList = CountryListIdCache.Singleton.Get(UMFeatureRestrictedCapabilityIdentifierEvaluator.UMCountryListKey); if (countryList == null) { ExTraceGlobals.AccessCheckTracer.TraceWarning <string, string, string>((long)this.GetHashCode(), "UMFeatureRestrictedCapabilityIdentifierEvaluator.Evaluate('{0}') return '{1}'. CapabilityToCheck '{2}' - Cache lookup returned '<NULL>'.", adObject.GetDistinguishedNameOrName(), CapabilityEvaluationResult.Yes.ToString(), base.Capability.ToString()); return(CapabilityEvaluationResult.Yes); } if (countryList.Countries.Contains(countryInfo)) { ExTraceGlobals.AccessCheckTracer.TraceDebug <string, string, string>((long)this.GetHashCode(), "UMFeatureRestrictedCapabilityIdentifierEvaluator.Evaluate('{0}') return '{1}'. CapabilityToCheck '{2}'.", adObject.GetDistinguishedNameOrName(), CapabilityEvaluationResult.No.ToString(), base.Capability.ToString()); return(CapabilityEvaluationResult.No); } ExTraceGlobals.AccessCheckTracer.TraceDebug <string, string, string>((long)this.GetHashCode(), "UMFeatureRestrictedCapabilityIdentifierEvaluator.Evaluate('{0}') return '{1}'. CapabilityToCheck '{2}'.", adObject.GetDistinguishedNameOrName(), CapabilityEvaluationResult.Yes.ToString(), base.Capability.ToString()); return(CapabilityEvaluationResult.Yes); }
private void RetrieveFailedItemsCount(ADRawEntry adRawEntry, MailboxType mailboxType) { base.PerformMailboxDiscovery(adRawEntry, mailboxType, out this.groupId, out this.mailboxInfo); switch (this.groupId.GroupType) { case GroupType.CrossServer: case GroupType.CrossPremise: base.ExecuteSearchWebService(); return; case GroupType.SkippedError: { string error = (this.groupId.Error == null) ? string.Empty : this.groupId.Error.Message; base.AddFailedMailbox(this.mailboxInfo.LegacyExchangeDN, error); return; } default: if (this.mailboxInfo.MailboxGuid != Guid.Empty) { Guid guid = (mailboxType == MailboxType.Archive) ? this.mailboxInfo.ArchiveDatabase : this.mailboxInfo.MdbGuid; string indexSystemName = FastIndexVersion.GetIndexSystemName(guid); using (IFailedItemStorage failedItemStorage = Factory.Current.CreateFailedItemStorage(Factory.Current.CreateSearchServiceConfig(), indexSystemName)) { FailedItemParameters parameters = new FailedItemParameters(FailureMode.All, FieldSet.None) { MailboxGuid = new Guid?(this.mailboxInfo.MailboxGuid) }; int totalNonIndexableItems = (int)failedItemStorage.GetFailedItemsCount(parameters); this.UpdateResults(this.mailboxInfo.LegacyExchangeDN, totalNonIndexableItems); } } return; } }
// Token: 0x06000849 RID: 2121 RVA: 0x0001E134 File Offset: 0x0001C334 internal string GetDistinguishedName(IDirectorySession session) { if (session == null) { throw new ArgumentNullException("session"); } if (base.InternalADObjectId == null && base.RawIdentity == null) { throw new InvalidOperationException(Strings.ErrorUninitializedParameter); } if (base.InternalADObjectId == null || string.IsNullOrEmpty(base.InternalADObjectId.DistinguishedName)) { ADObjectId internalADObjectId = base.InternalADObjectId; if (internalADObjectId != null || ADIdParameter.TryResolveCanonicalName(base.RawIdentity, out internalADObjectId)) { ADRawEntry adrawEntry = session.ReadADRawEntry(internalADObjectId, new ADPropertyDefinition[] { ADObjectSchema.Id }); if (adrawEntry != null) { base.UpdateInternalADObjectId(adrawEntry.Id); } } if (base.InternalADObjectId == null || string.IsNullOrEmpty(base.InternalADObjectId.DistinguishedName)) { throw new NameConversionException(Strings.ErrorConversionFailed(base.RawIdentity)); } } return(base.InternalADObjectId.DistinguishedName); }
// Token: 0x06001369 RID: 4969 RVA: 0x00071507 File Offset: 0x0006F707 public override void PreResolveLinks(ADRawEntry adRawEntry) { if (!(bool)adRawEntry[this.isOrganizationalProperty]) { base.RememberIfLinkHasValue(adRawEntry); } }
bool IDirectorySession.GetSchemaAndApplyFilter(ADRawEntry adRawEntry, ADScope scope, out ADObject dummyObject, out string[] ldapAttributes, ref QueryFilter filter, ref IEnumerable <PropertyDefinition> properties) { FfoDirectorySession.LogNotSupportedInFFO(null); dummyObject = null; ldapAttributes = null; return(false); }
private static HashSet<string> GetEmailAddresses(ADRawEntry person) { HashSet<string> hashSet = new HashSet<string>(); object obj; if (person.TryGetValueWithoutDefault(ADRecipientSchema.EmailAddresses, out obj)) { ProxyAddressCollection proxyAddressCollection = obj as ProxyAddressCollection; if (proxyAddressCollection != null) { foreach (ProxyAddress proxyAddress in proxyAddressCollection) { SmtpProxyAddress smtpProxyAddress = proxyAddress as SmtpProxyAddress; if (smtpProxyAddress != null) { string text = ContactInfoForLinking.CanonicalizeEmailAddress(smtpProxyAddress.SmtpAddress); if (!string.IsNullOrEmpty(text)) { hashSet.Add(text); } } } } } return hashSet; }
ADRawEntry IDirectorySession.ReadADRawEntry(ADObjectId entryId, IEnumerable <PropertyDefinition> properties) { ADRawEntry adrawEntry = new ADRawEntry(); adrawEntry.SetId(entryId); return(adrawEntry); }
private static string[] GetSmtpAddressCache(ADRawEntry person) { List<string> list = new List<string>(1); object obj; if (person.TryGetValueWithoutDefault(ADRecipientSchema.EmailAddresses, out obj)) { ProxyAddressCollection proxyAddressCollection = obj as ProxyAddressCollection; if (proxyAddressCollection != null) { foreach (ProxyAddress proxyAddress in proxyAddressCollection) { SmtpProxyAddress smtpProxyAddress = proxyAddress as SmtpProxyAddress; if (smtpProxyAddress != null) { string text = smtpProxyAddress.ToString(); if (!string.IsNullOrEmpty(text)) { list.Add(text); } } } } } return list.ToArray(); }
internal AuthZPluginUserToken(DelegatedPrincipal delegatedPrincipal, ADRawEntry userEntry, Microsoft.Exchange.Configuration.Core.AuthenticationType authenticatedType, string defaultUserName) { this.DelegatedPrincipal = delegatedPrincipal; this.UserEntry = userEntry; this.AuthenticationType = authenticatedType; this.DefaultUserName = defaultUserName; }
private static void ValidateQueryString(string httpURL, ADRawEntry userEntry) { string text; string tenantOrganization = ExchangeRunspaceConfigurationSettings.FromUriConnectionString(httpURL, out text).TenantOrganization; string value = tenantOrganization; if (string.IsNullOrEmpty(tenantOrganization)) { return; } AuthZLogger.SafeSetLogger(ConfigurationCoreMetadata.ManagedOrganization, value); OrganizationId organizationId = userEntry[ADObjectSchema.OrganizationId] as OrganizationId; if (organizationId != null && !ExchangeRunspaceConfiguration.IsAllowedOrganizationForPartnerAccounts(organizationId)) { AuthZLogger.SafeAppendGenericError("ValidateQueryString", string.Format("Organization {0} not allowed for partner account.", organizationId.ToString()), false); ExTraceGlobals.AccessDeniedTracer.TraceError <ADObjectId>(0L, "EAP.ValidateQueryString returns AccessDenied because user {0} does not belong to the appropriate organization", userEntry.Id); throw new NotAllowedForPartnerAccessException(Strings.ErrorNotAllowedForPartnerAccess); } Uri uri; if (!Uri.TryCreate(httpURL, UriKind.Absolute, out uri)) { AuthZLogger.SafeAppendGenericError("ValidateQueryString", string.Format("Url {0} Incorrect.", httpURL), false); ExTraceGlobals.AccessDeniedTracer.TraceError <ADObjectId, string, string>(0L, "EAP.ValidateQueryString returns AccessDenied because tenant user {0} requested partner access to {1} which is not found in the local forest and URL {2} is invalid", userEntry.Id, tenantOrganization, httpURL); throw new UrlInValidException(Strings.ErrorUrlInValid); } ExTraceGlobals.ADConfigTracer.TraceDebug(0L, "EAP.ValidateQueryString returns Success."); }
public AddDirectoryCacheRequest(List <Tuple <string, KeyType> > keys, ADRawEntry objectToCache, string forestFqdn, OrganizationId organizationId, IEnumerable <PropertyDefinition> properties, int secondsTimeout = 2147483646, CacheItemPriority priority = CacheItemPriority.Default) { ArgumentValidator.ThrowIfNull("keys", keys); ArgumentValidator.ThrowIfNull("objectToCache", objectToCache); ArgumentValidator.ThrowIfOutOfRange <int>("secondsTimeout", secondsTimeout, 1, 2147483646); ArgumentValidator.ThrowIfNull("organizationId", organizationId); if (keys.Count == 0) { throw new InvalidOperationException("Keys should not be empty"); } this.Keys = keys; ADObject adobject = objectToCache as ADObject; if (adobject != null) { this.Object = SimpleADObject.CreateFrom(adobject, properties); } else { this.Object = SimpleADObject.CreateFromRawEntry(objectToCache, properties, true); } this.ObjectType = CacheUtils.GetObjectTypeFor(objectToCache.GetType(), true); this.SecondsTimeout = secondsTimeout; this.Priority = priority; base.ForestOrPartitionFqdn = forestFqdn; base.InternalSetOrganizationId(organizationId); }
// Token: 0x06001366 RID: 4966 RVA: 0x0007144C File Offset: 0x0006F64C public override void AddPropertyValue(ADRawEntry adRawEntry, PropRow propRow, OABFileRecord oabFileRecord, int index) { if ((bool)adRawEntry[this.placeholderProperty]) { base.AddPropTagToTruncatedPropertiesProperty(oabFileRecord); } }