Quantcast
Channel: Forum Microsoft Identity Manager
Viewing all articles
Browse latest Browse all 1783

IsDNAsAnchor causes MA creation dialog to loop to "Configure Anchors" page

$
0
0

I'm experimenting with the "IsDNAsAnchor" management agent capability, but if I set it to true the Management Agent creation dialog loops to the "Configure Anchors" page after I click finish, without showing any error or writing anything in the event log.

You can see the problem in this video.

Is there something particular I should do to get "IsDNAsAnchor" to work properly?

I would like to use the FIM object ID as a DN, and I don't care about having a different anchor attribute.

This piece of code allows to reproduce the problem:

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>();
            switch (page) {
            case ConfigParameterPage.Capabilities:
                ret.Add(ConfigParameterDefinition.CreateCheckBoxParameter("IsDNAsAnchor", false));
                break;
            case ConfigParameterPage.Connectivity:
                // see http://social.technet.microsoft.com/Forums/en-US/34c40677-0208-47bf-9371-1efefeb585e6/weird-ecma2-ma-problem-create-management-agent-dialog-loops-to-capabilities-page
                ret.Add(ConfigParameterDefinition.CreateCheckBoxParameter("Avoid Catastrophic Failures", true));
                break;
            }
            return ret;
        }

        public ParameterValidationResult ValidateConfigParameters(KeyedCollection<string, ConfigParameter> configParameters, ConfigParameterPage page) {
            return new ParameterValidationResult();
        }

        // IMAExtensible2GetCapabilitiesEx
        public MACapabilities GetCapabilitiesEx(KeyedCollection<string, ConfigParameter> configParameters) {
            MACapabilities capabilities = new MACapabilities();
            capabilities.IsDNAsAnchor = (configParameters["IsDNAsAnchor"].Value == "1");
            return capabilities;
        }

        // IMAExtensible2GetSchema
        public Schema GetSchema(KeyedCollection<string, ConfigParameter> configParameters) {
            SchemaType personType = SchemaType.Create("Person", lockAnchorDefinition: true);
            personType.Attributes.Add(SchemaAttribute.CreateAnchorAttribute("dn", 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();
        }

    }
}


Paolo Tedesco - http://cern.ch/idm


Viewing all articles
Browse latest Browse all 1783

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>