Migrate from Microsoft Identity Manager to midPoint

For teams moving MIM provisioning to self-hosted midPoint, this page covers what migrates cleanly, what needs rebuilding, the cutover sequence and the drivers of effort and risk.

On this page

Migrate from Microsoft Identity Manager to midPoint: what the move involves

With MIM 2016 extended support ending in January 2029, the decision in front of your team is whether to start a self-hosted replacement now and run it on your own schedule. The move is a re-implementation of provisioning logic, not a data copy: MIM's management agents, sync rules and Portal workflows do not convert into midPoint objects automatically, so each connected system is rebuilt as a midPoint resource with its own object templates, mappings and correlation rules. It is usually run one connected system at a time, with midPoint and MIM both live against Active Directory until the outputs match and MIM sync runs for that system can be switched off. The work is normally done by your own identity engineers, supported by an implementation partner for design reviews, connector work and cutover planning. Your internal team carries the knowledge of HR feeds, naming standards and downstream consumers, which is the hardest part to hand over. The partner or Evolveum's services can cover gaps in ConnId connector development or in the Java and PostgreSQL operations side. Effort is driven mainly by how many custom rules extensions and Portal workflows MIM carries, how many target systems depend on them, and whether approval and attestation flows must be rebuilt rather than retired. Ask any proposal to itemize inventory, parallel run, cutover and hypercare as separate phases, and to name who holds each role.

The highest risks are silent behavior changes: an attribute that MIM populated through an undocumented rules extension, a join rule that matches differently in midPoint, or a deprovisioning path that no one has tested. Build a reference list of every attribute written to each target before the parallel run starts, and compare outputs across both systems for the same sample of identities. Confirm with your own environment which connectors you need from the ConnId catalog and their support status, because community or experimental connectors shift the risk onto your team. Plan rollback for each system before you switch its MIM sync run off, and confirm the midPoint release line you will standardize on against the midPoint releases page so the platform is supported for the length of your project.

Which MIM capabilities map to midPoint, and which need rework

This table maps each Microsoft Identity Manager capability to its closest midPoint equivalent and labels it clean, needs rework or gap. Read the status column as a planning signal: clean means a concept with a direct counterpart, rework means the logic must be rebuilt, and gap means no one-to-one replacement exists. Confirm connector status in the integration catalog for every target system before scoping.

MIM capabilitymidPoint equivalentStatus and what to plan
Management agents (Synchronization Service)ConnId resources with sync and reconciliation tasksNeeds rework. Each agent becomes a resource definition. Confirm the connector for each target system is supported, not community or experimental.
Metaverse and attribute flowsObject templates, mappings and inbound or outbound attribute rulesNeeds rework. Flows must be re-expressed as mappings. Inventory every flow and its precedence before rebuilding.
Rules extensions (C# or VB.NET code)Groovy scripts in mappings, or custom Java code with a ConnId connectorNeeds rework. Compiled extensions do not port directly. Each rule needs a re-implementation and its own test cases.
Portal request and approval workflowsmidPoint approval workflows and access request self-serviceNeeds rework. Approval chains and forms must be rebuilt. The MIM Portal has no one-to-one equivalent, so validate each form against business owners.
SharePoint and Portal dependenciesNo direct equivalent in midPointGap. Any process that relies on SharePoint lists or Portal pages needs a new UI, data source or retirement decision.
Password management and resetSelf-service password reset and password policies in midPoint, with connector-level password propagationNeeds rework. Confirm which target systems accept password changes through their connector before cutting over reset flows.
Reporting and auditingmidPoint audit records, simulations and reportsNeeds rework. Map each MIM report to a midPoint audit or report output and confirm that evidence fields still meet your assessor's needs.
Role and entitlement assignmentmidPoint roles, assignments and role-based access controlClean in concept. Recreate group-based logic as midPoint roles, then use simulations against production data to compare results before switching.

What data and integrations move, and what you rebuild

Migration splits into what can be exported and reused and what must be rebuilt in midPoint's model. Each card below covers one piece of that split, from identity data and joins through connectors and MIM rules code, so you can scope the work before choosing a cutover order.

Export identities and attributes from the metaverse

Start by pulling the current identity set and attribute values out of the MIM metaverse and the connected source systems, such as HR feeds and directories. Record which attributes are authoritative, which are derived and which are written back. Export to CSV or LDIF so you can load the same data into midPoint test resources. Validate counts and attribute values against the source of record before you trust the export, because a metaverse can hold values no connected system currently shows.

Re-create joins and authoritative source rules

In MIM, joins and projection rules decide which object a record links to and which system owns each attribute. In midPoint, the same decisions are expressed through resource object types, correlation and synchronization reactions, and inbound and outbound mappings with strengths. Write the join and authority rules down as a table first, then implement them and test them against a copy of production data. Expect edge cases such as duplicate names, rehires and contractors to need explicit correlation rules.

Rebuild Active Directory and LDAP connectors

midPoint reaches Active Directory and LDAP through ConnId connectors rather than MIM's ECMA 2.0 management agents. Map each MIM management agent to a midPoint resource, then confirm which object classes, attributes, password handling and group membership behavior the connector supports in your version. Account for OU placement, naming conventions and group nesting rules that the old agent enforced implicitly. Test create, update and disable operations on a non-production domain before any live sync.

Rebuild CSV, database table and SCIM targets

CSV, DatabaseTable, ScriptedSQL and SCIM2 are documented ConnId connectors that midPoint can use for flat-file, database and REST targets. Each MIM target that used a custom extension or SQL-based agent needs a matching resource definition, a schema check and a clear owner for the connector. Confirm the connector status in the integration catalog for each target, since some are community or experimental rather than supported. Treat any target without a documented connector as a custom build with its own test and maintenance plan.

Rebuild Microsoft Entra ID provisioning through Graph API

Entra ID is documented as a midPoint connector that uses the Microsoft Graph API. MIM deployments that pushed accounts or groups to Entra ID through custom code or a connector will need new app registrations, permission scopes and credential storage in midPoint. Confirm that the Graph permissions you grant match what the midPoint connector actually calls, and plan secret rotation before cutover. Verify that licensing, group-based assignment and guest handling behave the same way in a test tenant.

Rewrite MIM rules extension code as midPoint logic

MIM rules extensions are compiled .NET code that runs inside the Synchronization Service, and they do not move to midPoint unchanged. Each rule becomes a midPoint mapping, a script, a correlation rule or a custom Java connector, depending on whether it transforms data, decides matching or talks to an external system. Inventory every extension, record its inputs and outputs and test it against the documented connector behavior. Treat the rewrite as new code with its own review, because the old behavior often depends on undocumented side effects.

The migration sequence from inventory to decommission

This sequence moves MIM provisioning to midPoint one connected system at a time, so each step produces evidence that the replacement matches what MIM does before MIM stops running. Each output becomes the input to the next step, and the final retirement record shows that no MIM sync run still controls an account.

  1. Inventory management agents, rules and Portal workflows

    List every management agent in the MIM Synchronization Service, along with its connected system, run profiles, schedule, and the sync rules extensions and custom code it calls. Add every MIM Portal workflow, request form, approval step and scheduled job, and record who owns each item. Your identity team and the MIM administrators should both review the list. The step is done when every agent, rules extension and workflow has a row in an inventory register that names its owner and its downstream effect on accounts and groups.

  2. Map metaverse attribute flows to midPoint

    For each inventory row, write a mapping specification that traces each attribute from its source (for example, an HR feed or an authoritative directory) through the metaverse to the target. Translate those flows into midPoint resources, with ConnId connectors for Active Directory and other targets, and into object templates and mappings for users, roles and organizations. Flag every rule that has no direct equivalent so a designer can decide how to rebuild it. Done means each attribute flow is either mapped to a midPoint construct or marked as a documented gap with an owner.

  3. Pilot one connected system in midPoint

    Choose one low-risk connected system, ideally one with a small number of objects, and build its midPoint resource and synchronization configuration in a non-production environment. Load a representative set of accounts, run reconciliation and confirm that midPoint reads the same objects MIM reads. Test provisioning, updates and deprovisioning against a test copy of the target. The pilot is complete when a written test record shows the expected results for each lifecycle event and the open defects are logged.

  4. Run both systems in parallel against Active Directory

    Run MIM and midPoint side by side against the same Active Directory, with midPoint in a mode that reports the changes it would make before it writes them, if your configuration allows it. Compare the account state each system produces for the same source records over an agreed set of test cycles. Note that the two systems should not both write the same attributes to production objects at the same time. Ask your midPoint partner which simulation or dry-run features apply to your version, and confirm them against the documentation for your release. The output is a reconciliation report listing each difference, its cause and its resolution.

  5. Cut over one connected system at a time

    For each connected system, agree a cutover runbook that lists the change window, the sync runs to disable in MIM, the midPoint schedules to enable, the rollback steps and the people who approve each action. On the cutover date, disable the MIM run profiles for that system first, confirm that midPoint completes its first full cycle, and check a sample of accounts against the reconciliation report. Keep the rollback path open until the agreed validation period ends. The step is done when the runbook is signed off and the system's run history shows midPoint as the only writer.

  6. Decommission MIM components and record retirement

    After the last connected system has cut over, stop the remaining MIM sync schedules, export the configuration and the Portal workflow definitions for the audit file, and remove the MIM service accounts from the target systems. Retire the Portal and SharePoint dependencies only after you confirm no other service relies on them. Record each component, the date it was switched off and the approver in a retirement record. Confirm with the internal audit or compliance team which records they need to keep. Done means the retirement record is complete and no MIM run has written to a target system since the final cutover.

Running MIM and midPoint in parallel without double-provisioning

Double-provisioning happens when MIM and midPoint both have an active connector that can create, modify or disable the same object. The two engines then compete over attributes, group memberships and account state, and each run can reverse the other. Before enabling any midPoint resource for writes, record one owner per connected system and per attribute set. During the parallel run, MIM should remain the write owner for every system that is not yet migrated, and midPoint should read those systems without writing to them.

  • Build an ownership register: list each management agent, its connected directory or database, the attributes it writes, and the MIM run profiles that trigger writes.
  • Mark one owner per system: for each target, state whether MIM or midPoint may write, and store that decision in change control.
  • Separate attribute ownership where needed: a single system can have fields owned by different engines, so document field-level ownership for Active Directory attributes such as userAccountControl, memberOf and proxyAddresses.
  • Block accidental activation: confirm that no scheduled MIM run and no midPoint task can write to a system outside its assigned window.
  • Review ownership at each cutover: update the register whenever a system changes owner.

Check that every connected system has exactly one named owner in the register before the first midPoint task runs.

What drives migration cost and duration

This table lists the components of a MIM to midPoint migration, who is typically paid for each, whether the cost is one-time or recurring, and what moves it up or down. Use it to scope a written quote, since no fixed figures apply until your own inventory is complete.

Cost driverWhy it changes cost or effortWhat to ask for or confirm
Management agents and rules extensionsEach connected system needs its own ECMA 2.0 agent and any custom C# rules extension must be rewritten as ConnId connectors, object templates and mappings, so count and complexity set most of the build effort.A per-agent inventory with rules extension code size, attribute flows and any scripted logic that must be redesigned.
Portal workflows and approvalsEach MIM Portal workflow, approval step and SharePoint-hosted form needs a midPoint equivalent such as a role, approval policy or certification campaign, which adds design and testing time.A list of workflows with owners, approval chains and whether each one is still used in production.
Number of target systemsEvery target system needs a connector choice (for example LDAP, Active Directory, SCIM2 or Microsoft Entra ID via ConnId), a test environment and an accounts reconciliation check.Confirm connector coverage in the Evolveum connector catalog and whether any system needs a community or experimental connector.
Metaverse data qualityDuplicate, orphaned or inconsistent identities in the MIM metaverse must be resolved before midPoint can correlate accounts, and this work is often done by the customer's HR and directory owners.A correlation report and a plan for who resolves exceptions, since this work is rarely covered by the software itself.
Testing and parallel-run scopeRunning MIM and midPoint side by side against Active Directory needs test OUs, reconciliation reports and sign-off per connected system, and each system adds its own cycle.A written test plan covering each connected system, the cutover order and the rollback steps for each sync stop.
PostgreSQL and midPoint hostingmidPoint runs on Linux in a virtual machine or from Docker images, uses PostgreSQL as its native repository (ideally on a separate database server) and needs Java 21 for 4.10 or Java 25 for 4.11 and later. Infrastructure and operations costs recur, and multi-node setups add load balancing and shared database work.Confirm the Java and PostgreSQL versions for the chosen midPoint release and the number of nodes, backup and high-availability design.
Evolveum support subscriptionsEvolveum offers Product Support subscriptions with 8x5 next-business-day or 24x7 SLA options, and Platform Subscriptions that add feature development. These recur annually or per term, and the source page lists no prices.Ask Evolveum for a written quote covering the SLA tier, the midPoint release line and whether the subscription covers your planned go-live window.
Internal staff and partner feesInternal staff time for MIM knowledge, HR and directory owners, and any implementation partner is largely one-time, but ongoing administration becomes a recurring cost once midPoint is in production.A fixed-scope written proposal with deliverables, responsibilities, handover items and any post-go-live support terms.

What usually goes wrong and how to prevent it

Most MIM to midPoint migrations fail in the overlap period, not at cutover. The cards below cover the risks that appear while both systems write to the same directory, and the checks that catch them early.

Double provisioning during overlap

While MIM and midPoint both run against Active Directory, the same joiner or leaver event can create, move or disable an account twice, or the two systems can fight over an attribute. Assign a single write owner per connected system and per attribute before the first parallel run. Schedule reconciliation runs that compare each system's intended state with the directory and report any object that either system changed outside its own rules.

Undocumented rules extension logic

Custom code in MIM rules extensions often holds business decisions, such as naming rules, group membership exceptions or manager lookups, that nobody wrote down. Before rebuilding anything in midPoint, export the list of rules extension methods, record the input and output of each one, and get the owning business team to confirm the expected result. Treat any behavior without an owner as a defect to resolve, not as a requirement to copy silently.

Attribute flow drift

Each metaverse attribute flow in MIM maps to an outbound or inbound mapping in midPoint, and small differences such as trimming, casing, default values or precedence rules change the data that lands in the directory. Keep a documented mapping sheet that pairs every MIM flow with its midPoint resource attribute and object template entry. Compare sample objects from both systems after each change, and fail the test run when a value differs.

Connector gaps for less common targets

The Active Directory, LDAP and Microsoft Entra ID connectors cover many MIM use cases, but niche line-of-business systems may have only community or experimental ConnId connectors, or none. Build a connector inventory that lists each connected system, its protocol, and whether midPoint has a supported, community or experimental connector for it. Test read, create, update and delete against a non-production copy of each target before any MIM sync run is switched off for it.

Data quality problems exposed by the new model

midPoint applies its object templates and role assignments strictly, so duplicate employee IDs, missing manager links or inconsistent department codes that MIM tolerated can surface as failed or unexpected changes. Run a profiling report on the HR feed and the directory before cutover, and agree with HR owners how each exception is corrected at the source. Decide in advance whether midPoint should skip, quarantine or alert on records it cannot process.

Missing rollback paths

Switching off a MIM sync run for a connected system is hard to reverse once midPoint has taken over writes, and a failed cutover can leave accounts in mixed states. Before each switch, back up the MIM and midPoint databases and export the affected directory objects, then write down the steps and the owner to restore the previous run schedule. Keep MIM able to resume for each system until a full reconciliation run passes on midPoint.

How the migration changes by starting point

When MIM mainly moves identities from an HR source into Active Directory, the migration centers on the metaverse attribute flows and a small number of connected systems. Most of the work is mapping inbound HR attributes, join and projection rules, and the attribute precedence that decides which source wins. In midPoint this becomes resource definitions for Active Directory through the ConnId LDAP or Active Directory connector, with object templates and mappings that express the same logic. Because the scope is narrower, the inventory step is usually shorter, but the parallel run needs careful checks on every joiner, mover and leaver case.

  • Attribute flows: Export each MIM sync rule and map it to a midPoint mapping on the resource or object template, then compare results for a sample of users per department.
  • Leaver handling: Confirm how disables, moves out of scope and account deletions behave in both systems before switching any run profile off.
  • Fewer rules extensions: Simple AD-centric setups often carry few custom rules, so the code to port is usually limited.
  • Parallel comparison: Run both systems against the same test OUs and diff the resulting AD attributes, group memberships and account states.
  • Ownership of the HR feed: Confirm with HR and the source system owner who signs off on mapped attributes before cutover.

Check that every HR event type your business depends on, including rehires and contractor conversions, is covered by a test case in midPoint.

Keeping audit evidence and control ownership through the move

Before any MIM sync run is switched off, export and retain its audit and approval history. MIM keeps records of Synchronization Service runs, Portal requests, approvals and workflow outcomes in its own stores, and midPoint does not inherit them. Inventory which of those records your assessors, internal audit or data protection team rely on for access certification, joiner-mover-leaver proof and privileged changes. Then map each record type to the retention period your policy or regulator requires, and decide whether it is archived as exported files, moved into a separate log store or kept in the MIM database under read-only access. Confirm the retention periods with your compliance owner. Do not assume a default applies.

midPoint provides auditing and certification campaigns, but they only produce evidence once you configure them. Decide which midPoint audit events are recorded, where they are stored and how long they are kept, then run a test change in the parallel environment and confirm the event appears with the actor, timestamp and target you expect. Assign a named owner for each control that midPoint now performs, such as approval of role assignments, periodic recertification and deprovisioning of leavers. Control ownership in the MIM era often sat with the Portal administrators and the MIM service account, so the move is a chance to write down who approves what in midPoint.

DeployOpen plans and implements these controls with you and prepares the evidence an assessment will ask for, but it does not issue audit reports, attestations or certifications. Ask your independent auditor or certification body early which MIM records they will want to sample, and agree the format and location of the exported evidence in the written scope. Keep a dated mapping of MIM control to midPoint control and retain the MIM exports for the full retention period, even after the MIM servers are gone. Confirm with the auditor whether a parallel-run period needs its own evidence set.

Questions buyers ask before moving from MIM to midPoint

How much effort does moving from MIM to midPoint take, and what drives it?

The effort depends mostly on how much logic lives in MIM and how many connected systems it touches, not on the number of users. The main drivers are the count of management agents, the amount of custom code in rules extensions, the number and complexity of Portal workflows and approvals, and how cleanly the metaverse attribute flows are documented today. Each connected system needs its own mapping to a midPoint resource and object templates, then a parallel run against Active Directory before MIM sync is switched off for that system. Ask any partner for a quote built from a written inventory of these components, and confirm which items your environment has before anyone commits to a schedule.

Can an internal team do the migration without an implementation partner?

A capable internal team can do it if it has people who understand MIM's Synchronization Service, its rules extensions and the ConnId model used by midPoint. The work that usually needs outside help is the inventory of undocumented logic, the design of object templates and the parallel-run validation. Evolveum sells support subscriptions, consulting and training, and DeployOpen offers fixed-scope implementation, so you can keep the work in-house, buy a short engagement for design review, or hand over the whole migration. Decide this after the inventory, because it shows which skills are missing.

What skills and staff time does the move require from our team?

Plan for identity engineers who can read MIM synchronization rules and Portal configuration, Java and Linux administrators who will run midPoint, and PostgreSQL administrators for the repository. The midPoint system requirements recommend Java 25 for version 4.11 and later, with Java 21 supported, and PostgreSQL as the native repository database, ideally on a separate database server. Application owners and HR or directory stakeholders must also confirm which attributes and approvals they still need. Staff time is spent on inventory, testing and cutover, so ask a partner to name the roles and hours they expect from your side in the written scope.

Can midPoint do what the MIM Portal did?

midPoint covers the core functions that the Portal provided for many organizations, including provisioning and deprovisioning, identity lifecycle, role-based access control, auditing, self-service access requests and password reset, and certification-style reviews. It is not a one-to-one copy of the Portal, so map each Portal workflow and form to a midPoint feature and record any gap. Check specifics such as custom approval chains, SharePoint-based screens and attestation flows against the current documentation and a proof of concept, rather than assuming parity. The MIM BHOLD attestation topic covers one of those gaps in more detail.

Can MIM and midPoint run side by side during the migration?

Yes, the usual approach is a parallel run, where midPoint manages a connected system such as Active Directory in a test or shadow mode while MIM remains authoritative. You compare the changes each platform would make, resolve differences, and then switch off MIM sync runs one connected system at a time. Both platforms must not write to the same attributes at once, so assign clear ownership per attribute and per system during each phase. Confirm the exact write-control and simulation options with the midPoint release you plan to deploy, because they depend on the version.

What happens to licensing and support when we leave MIM?

midPoint is open source and dual-licensed under EUPL-1.2 and Apache 2.0, so there are no license fees to pay. Evolveum states that midPoint has no enterprise edition, and it funds development through subscriptions, training and professional services. If you want vendor support, Evolveum offers Product Support subscriptions with an 8x5 next-business-day or 24x7 SLA, and Platform Subscriptions that add feature development and roadmap influence. For version timing, midPoint 4.8 (Curie) is a long-term support release supported until 17 October 2028, and midPoint 4.10 (Braille) is supported until 26 November 2027. Plan your upgrade path against these dates and ask Evolveum for current subscription pricing.

Will the migration pass an audit, and who confirms it?

The migration can preserve the evidence auditors expect, including documented provisioning flows, access request records, approvals, and the parallel-run comparisons. DeployOpen prepares systems, controls and evidence for compliance assessments, but it does not issue audit reports or certifications, and independent auditors make that determination. Before cutover, ask your auditors which logs, reviews and change records they need from both platforms, and confirm that midPoint's auditing covers those events in the version you choose.

How DeployOpen scopes and runs the MIM to midPoint migration

DeployOpen plans, implements, integrates, hardens, documents and supports self-hosted open-source platforms inside the client's own infrastructure, and a MIM to midPoint move is handled the same way. DeployOpen is a Chainscore Labs company. We are not an Evolveum partner, reseller or certified provider, and we do not sell midPoint licenses or support subscriptions on Evolveum's behalf. midPoint itself carries no license fee, so the work we scope is the migration effort: inventorying management agents, rules extensions and Portal workflows, mapping metaverse attribute flows to midPoint resources and object templates, running both systems in parallel against Active Directory, and retiring MIM sync runs one connected system at a time. Each of those activities has a different owner on the client side, and the scope should name them.

Most engagements are fixed-scope. Before work starts, the written scope fixes the systems in the migration boundary, the deliverables (for example, the inventory, the mapping documentation, the parallel-run results and the switch-off record for each connected system), the acceptance checks and the timeline. A quote follows from that written scope, so the questions to resolve first are which connected systems move in this phase, which Portal workflows and rules extensions are retired rather than rebuilt, and who signs off each cutover. Ask any provider for the same breakdown so quotes can be compared line by line.

Ongoing support, upgrades and continuous testing are available as retainers, which suits the period after cutover when midPoint release upgrades (for example, planning around the support end dates on the midPoint releases page) and connector maintenance need a named owner. Confirm with any provider, DeployOpen included, what is covered by the retainer, how security fixes are delivered, and who performs the rollback if a parallel run shows a provisioning difference. DeployOpen prepares systems, controls and evidence for compliance assessments, but independent auditors and certification bodies issue any audit report or attestation.

Talk to our team.

Tell us what you're working on, whether it's a deployment, an audit, a security test or a cyber range. You'll speak with an engineer who can help you scope it.

  • 30-minute call: free, with no obligation.
  • NDA on request: we can sign before you share details.
  • Clear next steps: a scope and plan after the call.