The issues pops up with IMAExtensible2GetCapabilitiesEx, as soon as I define a configuration parameter in the "Capabilities" page. I've tested this on 2 different installations, with the same result (FIM version = 4.1.3510.0).
This is a very simple piece of code that allows reproducing the problem.
Could someone please try to reproduce this?
using Microsoft.MetadirectoryServices;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
namespace ecma2_test {
public partial class TestAgent : IMAExtensible2GetParameters,
IMAExtensible2GetCapabilitiesEx,
IMAExtensible2GetSchema,
IMAExtensible2CallExport,
IMAExtensible2CallImport {
// IMAExtensible2GetParameters
public IList<ConfigParameterDefinition> GetConfigParameters(KeyedCollection<string, ConfigParameter> configParameters, ConfigParameterPage page) {
var ret = new List<ConfigParameterDefinition>();
if (page == ConfigParameterPage.Capabilities) {
ret.Add(ConfigParameterDefinition.CreateCheckBoxParameter("SupportHierarchy", false));
}
return ret;
}
public ParameterValidationResult ValidateConfigParameters(KeyedCollection<string, ConfigParameter> configParameters, ConfigParameterPage page) {
return new ParameterValidationResult();
}
// IMAExtensible2GetCapabilitiesEx
public MACapabilities GetCapabilitiesEx(KeyedCollection<string, ConfigParameter> configParameters) {
MACapabilities myCapabilities = new MACapabilities();
// configParam.Value == "1"
// myCapabilities.SupportHierarchy = Convert.ToBoolean(configParameters["SupportHierarchy"].Value);
myCapabilities.SupportHierarchy = (configParameters["SupportHierarchy"].Value == "1");
return myCapabilities;
}
// IMAExtensible2GetSchema
public Schema GetSchema(KeyedCollection<string, ConfigParameter> configParameters) {
SchemaType personType = SchemaType.Create("Person", false);
personType.Attributes.Add(SchemaAttribute.CreateAnchorAttribute("anchor-attribute", AttributeType.String));
personType.Attributes.Add(SchemaAttribute.CreateSingleValuedAttribute("name", AttributeType.String));
personType.Attributes.Add(SchemaAttribute.CreateSingleValuedAttribute("email", AttributeType.String));
Schema schema = Schema.Create();
schema.Types.Add(personType);
return schema;
}
// IMAExtensible2CallExport
public void CloseExportConnection(CloseExportConnectionRunStep exportRunStep) {
throw new NotImplementedException();
}
public int ExportDefaultPageSize {
get { return 1000; }
}
public int ExportMaxPageSize {
get { return 5000; }
}
public void OpenExportConnection(KeyedCollection<string, ConfigParameter> configParameters, Schema types, OpenExportConnectionRunStep exportRunStep) {
throw new NotImplementedException();
}
public PutExportEntriesResults PutExportEntries(IList<CSEntryChange> csentries) {
throw new NotImplementedException();
}
// IMAExtensible2CallImport
public CloseImportConnectionResults CloseImportConnection(CloseImportConnectionRunStep importRunStep) {
throw new NotImplementedException();
}
public GetImportEntriesResults GetImportEntries(GetImportEntriesRunStep importRunStep) {
throw new NotImplementedException();
}
public int ImportDefaultPageSize {
get { return 1000; }
}
public int ImportMaxPageSize {
get { return 5000; }
}
public OpenImportConnectionResults OpenImportConnection(KeyedCollection<string, ConfigParameter> configParameters, Schema types, OpenImportConnectionRunStep importRunStep) {
throw new NotImplementedException();
}
}
}