Getting started

To get started with the Lithnet ECMA2 Framework, follow the steps below:

Step 1: Create a new .NET Framework project

Start by creating a new .NET Framework 4.72 or higher project. It's important to note that Microsoft Identity Manager does not support .NET Core assemblies.

Step 2: Add a reference to Microsoft.MetadirectoryServicesEx.dll

Next, add a reference to the Microsoft.MetadirectoryServicesEx.dll assembly. This assembly is located on your Microsoft Identity Manager (MIM) server, usually at the following path: C:\Program Files\Microsoft Forefront Identity Manager\2010\Synchronization Service\Bin\Assemblies.

Step 3: Add the Lithnet.Ecma2Framework NuGet package

Add the Lithnet.Ecma2Framework NuGet package to your project. This package provides the necessary APIs and tools for working with the ECMA2 framework.

You can find the Lithnet.Ecma2Framework NuGet package on the NuGet website here.

Step 4: Define your management agent's capabilites

The ECMA2 framework provides an ICapabilitiesProvider interface that allows your to define your management agent's capabilities.

Step 5: Define your management agent's schema

Create a class that derrives from the ISchemaProvider interface that allows your to define your management agent's object types and attributes.

Step 6: Define your management agent's configuration

The framework provides two methods of defining the management agent's configuration UI. It supports the traditional definition of MIM ConfigurationParameterDefinition objects, as well as a native Options<T> pattern.

Step 7: Adding import and export and password providers

The framework provides IObjectImportProvider, IObjectExportProvider, and IObjectPasswordProvider interfaces, used for importing objects, exporting objects, and changing passwords, respectively.

You can add as many of these interfaces as required to support the classes defined in your schema.

We also provide an import provider base class that implements the producer/consumer pattern. The ProducerConsumerImportProvider<T> class provides a managed implementation that will allow you to define your producer method to create objects of type T on one thread, and convert them to CSEntryChanges on another.

Step 9: Adding the Startup class

Bringing it all together is the startup class. This is where you setup the dependency injection container, registering your various providers and their dependencies. The framework will use this container to find your provider implementations and load them at run time.

Step 10: Creating a single-file assembly (optional)

One of the main pain points of having multiple management agents all stored in the single Extensions folder that MIM provides is DLL depenendency clashes. The framework provides guidance to build a single-file assembly that can help minimize this issue.

Last updated