// Get Schema public Schema GetSchema(KeyedCollection <string, ConfigParameter> _configParameters) { utils.Logger(TraceEventType.Information, ConstDefinition.ID0100_START_GETSCHEMA, ConstDefinition.MSG0100_START_GETSCHEMA); try { SchemaType personType = SchemaType.Create("Person", false); personType.Attributes.Add(SchemaAttribute.CreateAnchorAttribute("Username", AttributeType.String)); personType.Attributes.Add(SchemaAttribute.CreateSingleValuedAttribute("Alias", AttributeType.String)); personType.Attributes.Add(SchemaAttribute.CreateSingleValuedAttribute("Email", AttributeType.String)); personType.Attributes.Add(SchemaAttribute.CreateSingleValuedAttribute("LastName", AttributeType.String)); personType.Attributes.Add(SchemaAttribute.CreateSingleValuedAttribute("EmailEncodingKey", AttributeType.String)); personType.Attributes.Add(SchemaAttribute.CreateSingleValuedAttribute("LanguageLocaleKey", AttributeType.String)); personType.Attributes.Add(SchemaAttribute.CreateSingleValuedAttribute("LocaleSidKey", AttributeType.String)); personType.Attributes.Add(SchemaAttribute.CreateSingleValuedAttribute("ProfileId", AttributeType.String)); personType.Attributes.Add(SchemaAttribute.CreateSingleValuedAttribute("TimeZoneSidKey", AttributeType.String)); personType.Attributes.Add(SchemaAttribute.CreateSingleValuedAttribute("UserPermissionsOfflineUser", AttributeType.Boolean)); personType.Attributes.Add(SchemaAttribute.CreateSingleValuedAttribute("UserPermissionsMarketingUser", AttributeType.Boolean)); Schema schema = Schema.Create(); schema.Types.Add(personType); return(schema); } catch (Exception ex) { utils.Logger(TraceEventType.Error, ConstDefinition.ID0199_ERROR_GETSCHEMA, ConstDefinition.MSG0199_ERROR_GETSCHEMA + ex.Message); throw new ExtensibleExtensionException(ConstDefinition.MSG0199_ERROR_GETSCHEMA + ex.Message); } }
public Schema GetMmsSchema() { Schema schema = Schema.Create(); foreach (AcmaSchemaObjectClass schemaObject in ActiveConfig.DB.ObjectClassesBindingList) { SchemaType schemaType = SchemaType.Create(schemaObject.Name, true); schemaType.Attributes.Add(SchemaAttribute.CreateAnchorAttribute("objectId", AttributeType.String, AttributeOperation.ImportOnly)); foreach (AcmaSchemaAttribute attribute in schemaObject.Attributes.Where(t => t.Name != "objectId")) { if (attribute.Operation == AcmaAttributeOperation.AcmaInternal || attribute.Operation == AcmaAttributeOperation.AcmaInternalTemp) { continue; } if (attribute.IsMultivalued) { schemaType.Attributes.Add(SchemaAttribute.CreateMultiValuedAttribute(attribute.Name, attribute.MmsType, attribute.MmsOperationType)); } else { schemaType.Attributes.Add(SchemaAttribute.CreateSingleValuedAttribute(attribute.Name, attribute.MmsType, attribute.MmsOperationType)); } } schema.Types.Add(schemaType); } return(schema); }
private static SchemaType GetSchemaTypePublicChannel() { SchemaType mmsType = SchemaType.Create("publicChannel", true); SchemaAttribute mmsAttribute = SchemaAttribute.CreateAnchorAttribute("id", AttributeType.String, AttributeOperation.ImportOnly); mmsType.Attributes.Add(mmsAttribute); mmsAttribute = SchemaAttribute.CreateAnchorAttribute("teamid", AttributeType.String, AttributeOperation.ImportOnly); mmsType.Attributes.Add(mmsAttribute); mmsAttribute = SchemaAttribute.CreateSingleValuedAttribute("description", AttributeType.String, AttributeOperation.ImportExport); mmsType.Attributes.Add(mmsAttribute); mmsAttribute = SchemaAttribute.CreateSingleValuedAttribute("displayName", AttributeType.String, AttributeOperation.ImportExport); mmsType.Attributes.Add(mmsAttribute); mmsAttribute = SchemaAttribute.CreateSingleValuedAttribute("email", AttributeType.String, AttributeOperation.ImportOnly); mmsType.Attributes.Add(mmsAttribute); mmsAttribute = SchemaAttribute.CreateSingleValuedAttribute("webUrl", AttributeType.String, AttributeOperation.ImportOnly); mmsType.Attributes.Add(mmsAttribute); mmsAttribute = SchemaAttribute.CreateSingleValuedAttribute("team", AttributeType.Reference, AttributeOperation.ImportExport); mmsType.Attributes.Add(mmsAttribute); mmsAttribute = SchemaAttribute.CreateSingleValuedAttribute("isFavoriteByDefault", AttributeType.Boolean, AttributeOperation.ImportExport); mmsType.Attributes.Add(mmsAttribute); return(mmsType); }
private static SchemaType GetSchemaTypeGroup(IOktaClient client) { SchemaType mmsType = SchemaType.Create("group", true); SchemaAttribute mmsAttribute = SchemaAttribute.CreateAnchorAttribute("id", AttributeType.String, AttributeOperation.ImportOnly); mmsType.Attributes.Add(mmsAttribute); mmsAttribute = SchemaAttribute.CreateSingleValuedAttribute("created", AttributeType.String, AttributeOperation.ImportOnly); mmsType.Attributes.Add(mmsAttribute); mmsAttribute = SchemaAttribute.CreateSingleValuedAttribute("lastUpdated", AttributeType.String, AttributeOperation.ImportOnly); mmsType.Attributes.Add(mmsAttribute); mmsAttribute = SchemaAttribute.CreateSingleValuedAttribute("lastMembershipUpdated", AttributeType.String, AttributeOperation.ImportOnly); mmsType.Attributes.Add(mmsAttribute); mmsAttribute = SchemaAttribute.CreateSingleValuedAttribute("type", AttributeType.String, AttributeOperation.ImportOnly); mmsType.Attributes.Add(mmsAttribute); mmsAttribute = SchemaAttribute.CreateSingleValuedAttribute("name", AttributeType.String, AttributeOperation.ImportExport); mmsType.Attributes.Add(mmsAttribute); mmsAttribute = SchemaAttribute.CreateSingleValuedAttribute("description", AttributeType.String, AttributeOperation.ImportExport); mmsType.Attributes.Add(mmsAttribute); mmsAttribute = SchemaAttribute.CreateMultiValuedAttribute("member", AttributeType.Reference, AttributeOperation.ImportExport); mmsType.Attributes.Add(mmsAttribute); return(mmsType); }
private static SchemaType GetCustomerType() { SchemaType customerType = SchemaType.Create("customer", false); customerType.Attributes.Add(SchemaAttribute.CreateAnchorAttribute("objectID", AttributeType.String)); customerType.Attributes.Add(SchemaAttribute.CreateSingleValuedAttribute("companyName", AttributeType.String)); customerType.Attributes.Add(SchemaAttribute.CreateSingleValuedAttribute("domain", AttributeType.String)); customerType.Attributes.Add(SchemaAttribute.CreateSingleValuedAttribute("tenantId", AttributeType.String)); return(customerType); }
internal SchemaType GetObject() { SchemaType t = SchemaType.Create(this.Name, this.Locked); if (this.Attributes != null) { foreach (SchemaAttribute a in this.Attributes) { t.Attributes.Add(a); } } return(t); }
public SchemaType GetSchemaType() { SchemaType type = SchemaType.Create(this.Name, true); foreach (IAttributeAdapter attribute in this.AttributeAdapters) { foreach (SchemaAttribute maAttribute in attribute.GetSchemaAttributes()) { type.Attributes.Add(maAttribute); } } return(type); }
private static SchemaType GetPersonType() { SchemaType personType = SchemaType.Create("user", false); personType.Attributes.Add(SchemaAttribute.CreateAnchorAttribute("objectID", AttributeType.String)); personType.Attributes.Add(SchemaAttribute.CreateSingleValuedAttribute("company", AttributeType.String)); personType.Attributes.Add(SchemaAttribute.CreateSingleValuedAttribute("displayName", AttributeType.String)); personType.Attributes.Add(SchemaAttribute.CreateSingleValuedAttribute("firstName", AttributeType.String)); personType.Attributes.Add(SchemaAttribute.CreateSingleValuedAttribute("lastName", AttributeType.String)); personType.Attributes.Add(SchemaAttribute.CreateSingleValuedAttribute("usageLocation", AttributeType.String)); personType.Attributes.Add(SchemaAttribute.CreateSingleValuedAttribute("userPrincipalName", AttributeType.String)); return(personType); }
private static SchemaType GetSchemaTypeUser(IOktaClient client) { SchemaType mmsType = SchemaType.Create("user", true); SchemaAttribute mmsAttribute = SchemaAttribute.CreateAnchorAttribute("id", AttributeType.String, AttributeOperation.ImportOnly); mmsType.Attributes.Add(mmsAttribute); mmsAttribute = SchemaAttribute.CreateSingleValuedAttribute("status", AttributeType.String); mmsType.Attributes.Add(mmsAttribute); mmsAttribute = SchemaAttribute.CreateSingleValuedAttribute("created", AttributeType.String, AttributeOperation.ImportOnly); mmsType.Attributes.Add(mmsAttribute); mmsAttribute = SchemaAttribute.CreateSingleValuedAttribute("activated", AttributeType.String, AttributeOperation.ImportOnly); mmsType.Attributes.Add(mmsAttribute); mmsAttribute = SchemaAttribute.CreateSingleValuedAttribute("statusChanged", AttributeType.String, AttributeOperation.ImportOnly); mmsType.Attributes.Add(mmsAttribute); mmsAttribute = SchemaAttribute.CreateSingleValuedAttribute("lastLogin", AttributeType.String, AttributeOperation.ImportOnly); mmsType.Attributes.Add(mmsAttribute); mmsAttribute = SchemaAttribute.CreateSingleValuedAttribute("lastUpdated", AttributeType.String, AttributeOperation.ImportOnly); mmsType.Attributes.Add(mmsAttribute); mmsAttribute = SchemaAttribute.CreateSingleValuedAttribute("passwordChanged", AttributeType.String, AttributeOperation.ImportOnly); mmsType.Attributes.Add(mmsAttribute); mmsAttribute = SchemaAttribute.CreateSingleValuedAttribute("provider.type", AttributeType.String, AttributeOperation.ImportOnly); mmsType.Attributes.Add(mmsAttribute); mmsAttribute = SchemaAttribute.CreateSingleValuedAttribute("provider.name", AttributeType.String, AttributeOperation.ImportOnly); mmsType.Attributes.Add(mmsAttribute); mmsAttribute = SchemaAttribute.CreateMultiValuedAttribute("enrolledFactors", AttributeType.String, AttributeOperation.ImportOnly); mmsType.Attributes.Add(mmsAttribute); mmsAttribute = SchemaAttribute.CreateMultiValuedAttribute("availableFactors", AttributeType.String, AttributeOperation.ImportOnly); mmsType.Attributes.Add(mmsAttribute); mmsAttribute = SchemaAttribute.CreateSingleValuedAttribute("suspended", AttributeType.Boolean, AttributeOperation.ImportExport); mmsType.Attributes.Add(mmsAttribute); foreach (SchemaAttribute a in SchemaProvider.GetSchemaJson(client)) { mmsType.Attributes.Add(a); } return(mmsType); }
public static SchemaType GetSchema(Type externalObjectType, string schemaObjectName) { PropertyInfo[] properties = externalObjectType.GetProperties(); SchemaType schemaType = SchemaType.Create(schemaObjectName, false); foreach (PropertyInfo propertyInfo in properties) { var attrib = GetSchemaAttribute(schemaObjectName, propertyInfo.PropertyType); schemaType.Attributes.Add( attrib ); } return(schemaType); }
private static SchemaType GetSchemaTypeUser() { SchemaType mmsType = SchemaType.Create("user", true); SchemaAttribute mmsAttribute = SchemaAttribute.CreateAnchorAttribute("id", AttributeType.String, AttributeOperation.ImportOnly); mmsType.Attributes.Add(mmsAttribute); mmsAttribute = SchemaAttribute.CreateSingleValuedAttribute("onPremisesSamAccountName", AttributeType.String, AttributeOperation.ImportOnly); mmsType.Attributes.Add(mmsAttribute); mmsAttribute = SchemaAttribute.CreateSingleValuedAttribute("upn", AttributeType.String, AttributeOperation.ImportOnly); mmsType.Attributes.Add(mmsAttribute); mmsAttribute = SchemaAttribute.CreateSingleValuedAttribute("displayName", AttributeType.String, AttributeOperation.ImportExport); mmsType.Attributes.Add(mmsAttribute); return(mmsType); }
/// <summary> /// Gets the schema that applies to the objects in this management agent /// </summary> /// <param name="configParameters">The configuration parameters supplied to this management agent</param> /// <returns>The Schema defining objects and attributes applicable to this management agent</returns> Schema IMAExtensible2GetSchema.GetSchema(KeyedCollection <string, ConfigParameter> configParameters) { try { ManagementAgent.MAParameters = new MAParameters(configParameters); Logger.LogPath = ManagementAgent.MAParameters.LogPath; Logger.WriteSeparatorLine('*'); Logger.WriteLine("Loading Schema"); MAConfig.Load(ManagementAgent.MAParameters.MAConfigurationFilePath); Schema schema = Schema.Create(); foreach (MASchemaObject schemaObject in MASchema.Objects) { SchemaType schemaType = SchemaType.Create(schemaObject.ObjectClass, true); schemaType.Attributes.Add(SchemaAttribute.CreateAnchorAttribute("entry-dn", AttributeType.String, AttributeOperation.ImportOnly)); foreach (MASchemaAttribute attribute in schemaObject.Attributes) { if (attribute.IsMultiValued) { schemaType.Attributes.Add(SchemaAttribute.CreateMultiValuedAttribute(attribute.Name, attribute.Type, attribute.Operation)); } else { schemaType.Attributes.Add(SchemaAttribute.CreateSingleValuedAttribute(attribute.Name, attribute.Type, attribute.Operation)); } } schema.Types.Add(schemaType); } Logger.WriteLine("Schema loaded successfully"); return(schema); } catch (Exception ex) { Logger.WriteException(ex); throw new ExtensibleExtensionException("The schema could not be loaded: " + ex.Message, ex); } }
Schema IMAExtensible2GetSchema.GetSchema(KeyedCollection <string, ConfigParameter> configParameters) { Tracer.Enter("getschema"); try { Schema schema = Schema.Create(); InitializeConfigParameters(configParameters); OpenRunspace(); Command cmd = new Command(Path.GetFullPath(SchemaScript)); cmd.Parameters.Add(new CommandParameter("Username", Username)); cmd.Parameters.Add(new CommandParameter("Password", Password)); cmd.Parameters.Add(new CommandParameter("Credentials", GetSecureCredentials())); schemaResults = InvokePowerShellScript(cmd, null); CloseRunspace(); if (schemaResults != null) { foreach (PSObject obj in schemaResults) { string objectTypeName = null; HashSet <AttributeDefinition> attrs = new HashSet <AttributeDefinition>(); foreach (PSPropertyInfo p in obj.Properties) { string[] elements = p.Name.Split(new char[] { '|' }, StringSplitOptions.RemoveEmptyEntries); string attrName = elements[0].Trim(); string attrType = elements[1].Trim(); if (string.Equals(attrName, Constants.ControlValues.ObjectClass, StringComparison.OrdinalIgnoreCase)) { objectTypeName = p.Value.ToString(); Tracer.TraceInformation("object-class '{0}'", objectTypeName); } else { AttributeDefinition ad = new AttributeDefinition(); ad.Name = Regex.Replace(attrName, "^Anchor-", "", RegexOptions.IgnoreCase); ad.IsAnchor = p.Name.StartsWith("anchor-", StringComparison.OrdinalIgnoreCase); ad.IsMultiValue = p.Name.EndsWith("[]", StringComparison.OrdinalIgnoreCase); switch (attrType.Replace("[]", "").ToLower()) { case "boolean": ad.Type = AttributeType.Boolean; break; case "binary": ad.Type = AttributeType.Binary; break; case "integer": ad.Type = AttributeType.Integer; break; case "reference": ad.Type = AttributeType.Reference; break; case "string": ad.Type = AttributeType.String; break; default: ad.Type = AttributeType.String; break; } Tracer.TraceInformation("name '{0}', isanchor: {1}, ismultivalue: {2}, type: {3}", ad.Name, ad.IsAnchor, ad.IsMultiValue, ad.Type.ToString()); attrs.Add(ad); } } if (string.IsNullOrEmpty(objectTypeName)) { Tracer.TraceError("missing-object-class"); throw new Microsoft.MetadirectoryServices.NoSuchObjectTypeException(); } SchemaType objectClass = SchemaType.Create(objectTypeName, true); foreach (AttributeDefinition def in attrs) { if (def.IsAnchor) { objectClass.Attributes.Add(SchemaAttribute.CreateAnchorAttribute(def.Name, def.Type)); } else { if (def.IsMultiValue) { objectClass.Attributes.Add(SchemaAttribute.CreateMultiValuedAttribute(def.Name, def.Type)); } else { objectClass.Attributes.Add(SchemaAttribute.CreateSingleValuedAttribute(def.Name, def.Type)); } } } if (objectClass.AnchorAttributes.Count == 1) { schema.Types.Add(objectClass); } else { Tracer.TraceError("missing-anchor-definition-on-object"); throw new Microsoft.MetadirectoryServices.AttributeNotPresentException(); } } } schemaResults.Clear(); return(schema); } catch (Exception ex) { Tracer.TraceError("getschema", ex); throw; } finally { Tracer.Exit("getschema"); } }
private static SchemaType GetSchemaTypeTeam() { SchemaType mmsType = SchemaType.Create("team", true); //Group SchemaAttribute mmsAttribute = SchemaAttribute.CreateAnchorAttribute("id", AttributeType.String, AttributeOperation.ImportOnly); mmsType.Attributes.Add(mmsAttribute); mmsAttribute = SchemaAttribute.CreateSingleValuedAttribute("displayName", AttributeType.String, AttributeOperation.ImportExport); mmsType.Attributes.Add(mmsAttribute); mmsAttribute = SchemaAttribute.CreateSingleValuedAttribute("description", AttributeType.String, AttributeOperation.ImportExport); mmsType.Attributes.Add(mmsAttribute); mmsAttribute = SchemaAttribute.CreateSingleValuedAttribute("mailNickname", AttributeType.String, AttributeOperation.ImportExport); mmsType.Attributes.Add(mmsAttribute); mmsAttribute = SchemaAttribute.CreateSingleValuedAttribute("visibility", AttributeType.String, AttributeOperation.ImportExport); mmsType.Attributes.Add(mmsAttribute); // Group member mmsAttribute = SchemaAttribute.CreateMultiValuedAttribute("member", AttributeType.Reference, AttributeOperation.ImportExport); mmsType.Attributes.Add(mmsAttribute); mmsAttribute = SchemaAttribute.CreateMultiValuedAttribute("owner", AttributeType.Reference, AttributeOperation.ImportExport); mmsType.Attributes.Add(mmsAttribute); // Teams mmsAttribute = SchemaAttribute.CreateSingleValuedAttribute("webUrl", AttributeType.String, AttributeOperation.ImportOnly); mmsType.Attributes.Add(mmsAttribute); mmsAttribute = SchemaAttribute.CreateSingleValuedAttribute("isArchived", AttributeType.Boolean, AttributeOperation.ImportExport); mmsType.Attributes.Add(mmsAttribute); mmsAttribute = SchemaAttribute.CreateSingleValuedAttribute("template", AttributeType.String, AttributeOperation.ExportOnly); mmsType.Attributes.Add(mmsAttribute); mmsAttribute = SchemaAttribute.CreateSingleValuedAttribute("memberSettings_allowCreateUpdateChannels", AttributeType.Boolean, AttributeOperation.ImportExport); mmsType.Attributes.Add(mmsAttribute); mmsAttribute = SchemaAttribute.CreateSingleValuedAttribute("memberSettings_allowDeleteChannels", AttributeType.Boolean, AttributeOperation.ImportExport); mmsType.Attributes.Add(mmsAttribute); mmsAttribute = SchemaAttribute.CreateSingleValuedAttribute("memberSettings_allowAddRemoveApps", AttributeType.Boolean, AttributeOperation.ImportExport); mmsType.Attributes.Add(mmsAttribute); mmsAttribute = SchemaAttribute.CreateSingleValuedAttribute("memberSettings_allowCreateUpdateRemoveTabs", AttributeType.Boolean, AttributeOperation.ImportExport); mmsType.Attributes.Add(mmsAttribute); mmsAttribute = SchemaAttribute.CreateSingleValuedAttribute("memberSettings_allowCreateUpdateRemoveConnectors", AttributeType.Boolean, AttributeOperation.ImportExport); mmsType.Attributes.Add(mmsAttribute); mmsAttribute = SchemaAttribute.CreateSingleValuedAttribute("guestSettings_allowCreateUpdateChannels", AttributeType.Boolean, AttributeOperation.ImportExport); mmsType.Attributes.Add(mmsAttribute); mmsAttribute = SchemaAttribute.CreateSingleValuedAttribute("guestSettings_allowDeleteChannels", AttributeType.Boolean, AttributeOperation.ImportExport); mmsType.Attributes.Add(mmsAttribute); mmsAttribute = SchemaAttribute.CreateSingleValuedAttribute("messagingSettings_allowUserEditMessages", AttributeType.Boolean, AttributeOperation.ImportExport); mmsType.Attributes.Add(mmsAttribute); mmsAttribute = SchemaAttribute.CreateSingleValuedAttribute("messagingSettings_allowUserDeleteMessages", AttributeType.Boolean, AttributeOperation.ImportExport); mmsType.Attributes.Add(mmsAttribute); mmsAttribute = SchemaAttribute.CreateSingleValuedAttribute("messagingSettings_allowOwnerDeleteMessages", AttributeType.Boolean, AttributeOperation.ImportExport); mmsType.Attributes.Add(mmsAttribute); mmsAttribute = SchemaAttribute.CreateSingleValuedAttribute("messagingSettings_allowTeamMentions", AttributeType.Boolean, AttributeOperation.ImportExport); mmsType.Attributes.Add(mmsAttribute); mmsAttribute = SchemaAttribute.CreateSingleValuedAttribute("messagingSettings_allowChannelMentions", AttributeType.Boolean, AttributeOperation.ImportExport); mmsType.Attributes.Add(mmsAttribute); mmsAttribute = SchemaAttribute.CreateSingleValuedAttribute("funSettings_allowGiphy", AttributeType.Boolean, AttributeOperation.ImportExport); mmsType.Attributes.Add(mmsAttribute); mmsAttribute = SchemaAttribute.CreateSingleValuedAttribute("funSettings_giphyContentRating", AttributeType.String, AttributeOperation.ImportExport); mmsType.Attributes.Add(mmsAttribute); mmsAttribute = SchemaAttribute.CreateSingleValuedAttribute("funSettings_allowStickersAndMemes", AttributeType.Boolean, AttributeOperation.ImportExport); mmsType.Attributes.Add(mmsAttribute); mmsAttribute = SchemaAttribute.CreateSingleValuedAttribute("funSettings_allowCustomMemes", AttributeType.Boolean, AttributeOperation.ImportExport); mmsType.Attributes.Add(mmsAttribute); return(mmsType); }
public Schema GetSchemaDetached() { Tracer.Enter(nameof(GetSchemaDetached)); Schema schema = Schema.Create(); try { using (SqlMethods methods = new SqlMethods()) { methods.OpenConnection(); List <string> objectClasses = new List <string>(); Tracer.TraceInformation($"objectclass-type {Configuration.ObjectClassType}"); if (Configuration.ObjectClassType == ObjectClassType.Column) { objectClasses = methods.GetObjectClasses().ToList(); //since we are using yield, we need to call ToList() to get results } else { objectClasses.Add(Configuration.ObjectClass); } List <AttributeDefinition> sva = new List <AttributeDefinition>(); sva = methods.GetSchema(Configuration.TableNameSingle).ToList(); //since we are using yield, we need to call ToList() to get results List <AttributeDefinition> mva = new List <AttributeDefinition>(); if (Configuration.HasMultivalueTable) { mva = methods.GetSchema(Configuration.TableNameMulti).ToList(); //since we are using yield, we need to call ToList() to get results } foreach (string obj in objectClasses) { Tracer.TraceInformation($"start-object-class {obj}"); SchemaType schemaObj = SchemaType.Create(obj, true); ObjectClass objectClass = Configuration.Schema.ObjectClasses.FirstOrDefault(c => c.Name.Equals(obj)); Tracer.TraceInformation($"found-schemaxml-information-for {obj}"); // single-values Tracer.TraceInformation("start-detect-single-value-attributes"); List <string> excludeSv = Configuration.ReservedColumnNames.ToList(); foreach (AttributeDefinition ad in sva) { AttributeType attrType = ad.AttributeType; if (objectClass != null) { if (objectClass.Excludes.Exists(x => x.Name.Equals(ad.Name))) { Tracer.TraceInformation($"skipping-excluded-attribute {ad.Name}"); continue; } attrType = GetAttributeOverride(objectClass, ad, attrType); } if (ad.Name.Equals(Configuration.AnchorColumn)) { Tracer.TraceInformation($"adding-anchor name: {ad.Name}, type: {attrType} [{ad.AttributeOperation}]"); schemaObj.Attributes.Add(SchemaAttribute.CreateAnchorAttribute(ad.Name, attrType)); continue; } if (excludeSv.Contains(ad.Name)) { Tracer.TraceInformation($"skipping-reserved-column {ad.Name}"); continue; } Tracer.TraceInformation($"add-singlevalue name: {ad.Name}, type: {attrType} [{ad.AttributeOperation}]"); schemaObj.Attributes.Add(SchemaAttribute.CreateSingleValuedAttribute(ad.Name, attrType, ad.AttributeOperation)); } Tracer.TraceInformation("end-detect-single-value-attributes"); // multivalues if (Configuration.HasMultivalueTable) { Tracer.TraceInformation("start-detect-multi-value-attributes"); foreach (AttributeDefinition ad in mva) { AttributeType attrType = ad.AttributeType; if (objectClass != null) { if (objectClass.Excludes.Exists(x => x.Name.Equals(ad.Name))) { Tracer.TraceInformation($"skipping-excluded-attribute {ad.Name}"); continue; } attrType = GetAttributeOverride(objectClass, ad, attrType); } if (excludeSv.Contains(ad.Name)) { Tracer.TraceInformation($"skipping-reserved-column {ad.Name}"); continue; } if (schemaObj.Attributes.Contains(ad.Name) || schemaObj.AnchorAttributes.Contains(ad.Name)) { Tracer.TraceInformation($"skipping-existing-column {ad.Name} (already defined in single-value-table)"); continue; } Tracer.TraceInformation($"add-multivalue name: {ad.Name}, type: {attrType} [{ad.AttributeOperation}]"); schemaObj.Attributes.Add(SchemaAttribute.CreateMultiValuedAttribute(ad.Name, attrType, ad.AttributeOperation)); } Tracer.TraceInformation("end-detect-multi-value-attributes"); } schema.Types.Add(schemaObj); Tracer.TraceInformation($"end-object-class {obj}"); } } } catch (Exception ex) { Tracer.TraceError(nameof(GetSchemaDetached), ex); throw; } finally { Tracer.Exit(nameof(GetSchemaDetached)); } return(schema); }