How to migrate midPoint to the native PostgreSQL repository
Moving an older midPoint from the generic SQL repository, or from another database, to the native PostgreSQL repository is a documented export and reimport with Ninja, and it cannot be done as a SQL update. Evolveum states that the schema changes for the native repository are too large for a SQL update, so the data is exported from the source and imported into the new repository. Audit records follow a separate path. They can be migrated while midPoint is already running on the native repository, so the team should plan the core data cutover and the audit migration as two distinct steps.
The documented sequence starts by upgrading midPoint to 4.4 on the original SQL configuration. The team then exports data with Ninja, initializes the native PostgreSQL repository, switches the configuration, imports the data with Ninja and starts midPoint. Before work begins, confirm with Evolveum that this path still applies to the version you run today. Also choose the PostgreSQL major version now. The versioning policy lists 14 with end of support on November 12, 2026, 15 on November 11, 2027, 16 on November 9, 2028, 17 on November 8, 2029 and 18 on November 14, 2030, so a version that ends support soon will need another upgrade shortly after go-live.
On effort, this page does not give a duration. The main drivers are covered later in this page: the volume of identity and audit data, the number of custom objects, connectors and customizations that must survive the export, the number of upgrade steps needed to reach the documented starting point, the number of test imports the team wants before cutover, and how much rollback preparation the change window requires. Each driver changes how much work the migration takes, so ask for a quote based on a written scope that names your starting version, data volumes and target PostgreSQL version.
Plan for a failed or incomplete import before the change window opens. Keep a verified copy of the source database and the Ninja export files, record the configuration in use before switching, and rehearse the full sequence on a copy of production data in an environment you control. Confirm with your own team who approves the go or no-go decision, who can restore the source configuration, and how audit records are checked after the switch. A rehearsal that completes cleanly is the best evidence that the production run will do the same.
What maps cleanly from the generic SQL repository and what needs checking
This table compares each part of a generic SQL repository deployment with what the native PostgreSQL repository needs after a Ninja export and import. Read each row as three questions: whether the export is expected to carry the item, what to verify against your source version, and what to rebuild or reconfigure once the data is in the new repository. Treat every row as a checkpoint to test, not a guarantee that the object moves unchanged.
| Object or component | Ninja export | What to confirm for your source | After import |
|---|---|---|---|
| Users and assignments | Expected to be carried by the Ninja export. Confirm this in a test run. | Confirm your source version and any custom user extensions, then compare user and assignment counts. | Verify identities, assignments and lifecycle states with sample users. Review custom attributes. |
| Roles and role assignments | Expected to export, but inducements and role membership need a direct check. | Confirm role definitions, inducements and approval or certification settings in the source configuration. | Test role-based access with sample identities and confirm dependent policies still apply. |
| Resources and connectors | Resource objects are expected to export. Connector settings and credentials need separate handling. | Confirm the ConnId connector versions and target system settings for your source release. | Confirm how credentials are carried, supply any that are not, and run connection tests against each target. |
| System configuration and policies | Confirm whether configuration objects, object templates and policies are included in your export. | Compare configuration objects in source and target, including any custom files outside the repository. | Reapply deployment-specific settings such as logging, node settings and cluster settings. |
| Audit records | Audit records are migrated as a separate step, with midPoint already running on the native repository. | Confirm the audit migration steps for your source version and the retention period you must keep. | Verify record counts, confirm audit reports still query correctly and schedule the audit step on its own. |
| Repository database engine | Not an exported object. The native repository is initialized as a new database. | Choose a supported PostgreSQL major version. Confirm the version against the PostgreSQL versioning policy. | Provision the database, connection settings, backups and access rights before the import starts. |
| midPoint version in use | Not a data object. The version sets the upgrade path that must run before export. | Confirm the running version and its Java runtime, since 4.11 and later recommend Java 25. | Complete the documented upgrade to 4.4 before export, then align the target midPoint version with the native repository. |
Why migrating midPoint to PostgreSQL means export and reimport
Evolveum states that the schema changes required for the native PostgreSQL repository are too large to apply as a SQL update. For an existing midPoint deployment, this means the data cannot simply be converted in place. It has to be exported from the current repository, the target database has to be prepared, and the data has to be imported back. Plan the project around that fact before you schedule anything, because the export and import steps are the core of the change, not a side task.
The documented path starts with the source system. Your current midPoint must first be upgraded to 4.4 on the original SQL configuration. Confirm this step with your own version inventory and with the Evolveum migration documentation before you touch the database. Skipping it or running a different version at export time moves the risk into the import, where it is harder to diagnose. Record the exact version you export from, because it determines which steps you follow and which checks you run afterward.
The export and import steps depend on Ninja, the command-line tool that the documented migration uses to move repository data out and back in. Ask your engineers to confirm the Ninja version that matches the midPoint release on each side, and to test the export command against a copy of production data. Keep the exported files under access control, since they contain the full identity and configuration data of the deployment. Treat the export output as an artifact to be verified, not just a file to be moved.
The target native PostgreSQL repository must be initialized before any data goes back in. The documented sequence is to initialize the new repository, switch the midPoint configuration to point at it, then import with Ninja and start midPoint. Decide in advance who owns the target database, what its sizing and backup arrangements are, and which PostgreSQL major version you will run. The PostgreSQL support window on your chosen version affects how long this database stays supported, so check it against the versioning policy when you pick the version.
Audit records follow a different route. Evolveum documents that audit records can be migrated while midPoint is already running on the native repository, so audit history does not have to block the main cutover. Agree with your compliance owner which audit data must be retained, how the audit migration will be verified, and how you will show that no records were lost. Whatever the schedule, ask the implementation team to write down the verification steps for both the core data and the audit data before the cutover window begins.
Documented tools and steps for the migration
The documented migration moves midPoint in a fixed order: upgrade to 4.4 on the original configuration, export with Ninja, initialize the native PostgreSQL repository, switch configuration, import, and start midPoint. The cards below cover each step, plus the PostgreSQL upgrade tools that apply later and sit outside this migration. Take exact command options from the Evolveum migration documentation for the version you run.
Upgrade to midPoint 4.4 first
The documented path starts by upgrading midPoint to 4.4 while it still uses the original SQL repository configuration. Schema changes for the native PostgreSQL repository are too large for a SQL update, so this step prepares the source installation for the export that follows. Check the current version, the Java runtime that release requires, and a verified backup before you begin. Confirm the upgrade steps for your starting version in the Evolveum migration documentation.
Export data with Ninja
Ninja, the midPoint command-line tool, exports repository data from the source database so it can be loaded into the native repository. The export is the working copy that moves between the two schemas, so store its output in controlled storage and record object counts at export time. Confirm with the Evolveum documentation whether midPoint must be stopped during the export and which options your version supports. Reconcile the results during import.
Initialize the native PostgreSQL repository
This step creates an empty native repository on a PostgreSQL server that you size, secure and back up separately from midPoint. midPoint recommends running PostgreSQL on a separate database server, so decide that topology, the database role and the connection settings before initialization. Check that the PostgreSQL major version you select is still within its support window. Confirm the initialization command and required privileges in the Evolveum migration documentation.
Switch the repository configuration
The configuration switch points midPoint's repository settings at the new PostgreSQL database instead of the original SQL configuration. Keep the old configuration file and source database intact so you can return to the source if the import fails. Review connection settings and credentials, and confirm whether each node in a multi-node deployment must change, since all nodes must share one central database. Verify the property names for your release in the documentation.
Import with Ninja and start midPoint
Ninja import loads the exported data into the native repository, and then midPoint starts on that repository. Compare imported object counts with the export record and review every import error before accepting the result. Audit records can be migrated while midPoint already runs on the native repository, so plan that as a separate workstream with its own checks. Confirm the import options and audit migration commands for your version.
PostgreSQL's own major upgrade tools
pg_upgrade, pg_dumpall with restore, and logical replication are PostgreSQL's tools for moving a cluster to a later major version. They are separate from the midPoint migration and apply after the repository runs on PostgreSQL, when a major upgrade is scheduled. Logical replication works between major versions and can shorten downtime, but it needs its own design and cutover checks. Take exact options from the PostgreSQL upgrading documentation and rehearse on a copy first.
How audit records move while midPoint keeps running
Audit records can be migrated while midPoint is already running on the native PostgreSQL repository, according to Evolveum's migration documentation. That is useful, but it does not remove the need for a cutover plan. The main migration moves the operational data through Ninja export and import, and midPoint has to be stopped and restarted on the new repository at a defined point. The audit history is a separate workstream that the team should plan, measure and verify on its own track, with its own owner and its own acceptance checks.
Before the team starts, it should settle four questions. The first is how much audit history must be kept on the new repository. Compliance, legal and internal audit owners should state the retention period in writing, because it decides how much data moves and how much storage the target database needs. The second is how long the audit migration will take in your environment. This duration cannot be taken from the documentation or from another deployment. It has to be measured in a pilot against a copy of your production audit data, on comparable hardware and with the same database configuration. The third is how completeness will be verified, and the fourth is who is accountable for the audit trail during the move.
Completeness checks should be agreed before the pilot runs. A practical approach is to compare record counts per table and per time window between the source and the target, sample individual events and confirm that their fields, timestamps and references match, and record the results in a signed reconciliation report. The team should also confirm which audit events are written during the move, such as the export or import activity itself, so that the trail explains its own gap or overlap. Ask the Evolveum documentation and your own test results to confirm the exact table names, the ordering guarantees and any filters before relying on them in a checklist.
Accountability needs a named owner, not a shared mailbox. In most organizations this is the identity governance lead, with the security or compliance team approving the reconciliation results and the platform team operating the database. The owner signs off on the retention scope, the pilot results and the decision to start the production audit move. If audit records are needed for an access review or an audit engagement during the migration window, the owner must know which data source is authoritative at each point in time. DeployOpen can help plan and document these checks, but it does not issue audit reports or attestations, and the independent auditor decides what evidence is sufficient.
Plan the cutover as the controlling event. Audit migration can run alongside production, but the team still needs a rollback decision, a freeze window for configuration changes and a verified starting point for the target repository. Record which audit data is copied before cutover, which is copied after and how any delta is reconciled. Treat a failed audit check as a stop condition for the cutover, and keep the source repository available until the reconciliation report is accepted. Cost and effort depend mainly on the audit data volume, the pilot scope and the number of reconciliation rounds, and should be stated in a written scope before work starts.
Steps to migrate midPoint with a parallel run and cutover
This sequence moves midPoint from its generic SQL repository, or from another database, to the native PostgreSQL repository without losing data or retiring the old system too early. Each step closes with a check you can inspect, and a parallel period keeps both platforms available until the new one is verified. Written sign-off from your organization is required at the pilot decision, the production cutover and decommissioning.
Inventory the source environment
Your team and DeployOpen record the source midPoint version, the database engine and its version, object volumes by type, node count, the connectors in use, and the size of the audit tables. The documented path upgrades to 4.4 before export, so the inventory also shows how far your current version is from 4.4. Check the database engine version against PostgreSQL's versioning policy before choosing the target. The step closes with a written inventory that your organization signs off as the baseline for scope.
Run a pilot on a copy
DeployOpen restores a copy of the source database and midPoint configuration into an isolated environment, upgrades that copy to 4.4, and then runs the full export, initialization and import against a native PostgreSQL repository. The pilot records the elapsed time of each stage, connector reconciliation results and every error. The measured stage times set the production window. The step closes with a pilot report that lists each issue as resolved or accepted, and your written sign-off authorizes production work.
Upgrade to 4.4 and export with Ninja
Your operations team, with DeployOpen running the change, upgrades production midPoint to 4.4 on the original SQL configuration. Evolveum states that schema changes for the native repository are too large for a SQL update, so the data must be exported and reimported. The Ninja export runs while midPoint is quiesced so object counts stay consistent. The step closes when the upgraded system passes the pilot's login and reconciliation checks and the export files are checksummed and stored under the agreed retention.
Initialize the native repository and import
Provision a PostgreSQL server in infrastructure your organization controls, using a major version that is still supported under PostgreSQL's versioning policy on the cutover date. Initialize the native PostgreSQL repository, switch the midPoint configuration to point at it, and run the Ninja import with midPoint stopped. The step closes when the import log shows no unresolved errors and the imported row counts match the export manifest.
Verify counts, connectors and login
DeployOpen compares object counts by type between the export and the imported repository, then runs connector reconciliation against each target system in the inventory. Test accounts sign in through the configured authentication path, and roles, approvals and certification campaigns are exercised with known data. Differences go into a defect log with an owner for each item. The step closes when counts match, reconciliation reports only the expected changes and no open defect blocks parallel running.
Migrate audit records during parallel running
Evolveum documents that audit records can be migrated while midPoint runs on the native repository, so the migration proceeds without taking midPoint offline. Copy the source audit records into the new database, then confirm that record counts and date ranges match the source before anyone relies on audit queries. Both platforms run in parallel for the period agreed in writing, and reconciliation results from each are compared. The step closes when audit counts match and the parallel period results are recorded and signed off.
Cut over to the native repository
Stop writes to the old system, run a final delta reconciliation, switch user traffic and connector configuration to the new midPoint, and start the nodes that use the native repository. Multi-node deployments keep the sticky HTTP load balancer and shared central database arrangement documented for midPoint. Your written sign-off authorizes the cutover and sets the rollback conditions in advance. The step closes when the new system serves logins, reconciliation runs complete and the rollback point is documented.
Decommission the old database after retention
Keep the old database and export files read-only for the retention period agreed with your organization and recorded in the migration plan. When that period ends, your organization signs off, and then DeployOpen removes the old database and secures or destroys the export and audit copies under your data retention policy. Update runbooks and confirm that backups cover the new repository. The step closes with written confirmation from your organization that decommissioning is complete.
Choosing the target PostgreSQL version and midPoint release
Choose the target PostgreSQL major version by checking its end-of-support date against your go-live date and the period you expect to run the system. PostgreSQL supports each major version for five years after its initial release. The versioning policy lists version 14 as supported until 12 November 2026, version 15 until 11 November 2027, version 16 until 9 November 2028, version 17 until 8 November 2029 and version 18 until 14 November 2030. Version 14 leaves support on 12 November 2026, which may fall before your go-live. Confirm the go-live date with the business owner first, then select the newest version that stays inside its support window for the expected life of the repository and that your hosting platform and backup tooling already support.
The midPoint release decision follows the same logic, and the midPoint releases page is the reference for it. Version 4.8 is a long-term support release supported until 17 October 2028, which suits a deployment that needs a long gap between upgrades. Version 4.9 support ends on 18 October 2026, so it should not be the target for a new migration. Version 4.10 is supported until 26 November 2027, and the same page plans version 4.11 for 21 October 2026. Feature releases need upgrades sooner than long-term support releases, so weigh the upgrade effort against the features you need. Check the release list again on the day you freeze the target, because planned dates can change.
The Java runtime is set by the midPoint release, so pick the release first and then confirm the JDK. midPoint recommends Java 25 for version 4.11 and later, with Java 21 also supported. For version 4.10 and older, midPoint recommends Java 21, with Java 17 also supported. Confirm the JDK on every midPoint node and on any administration host where you run the Ninja export and import commands, because those commands need the same runtime. Check that your operating system packages or container base image provide the required JDK before the build starts. A missing runtime found during the cutover window can delay the go-live.
midPoint recommends that PostgreSQL run on a separate database server, ideally isolated from the application nodes. Decide the topology before the build starts. Settle whether the database runs as a single instance or as a highly available pair, where backups are stored, and how network access from the midPoint nodes is restricted. PostgreSQL does not detect a failed primary or fail over on its own, so any high-availability design depends on external tooling that a named team must own and test. Confirm these decisions in writing with the infrastructure and security teams, and record the PostgreSQL version, midPoint release, JDK and topology together so the cutover runbook refers to one agreed baseline.
What drives the effort and cost of a midPoint PostgreSQL migration
This table lists the factors that change how much work a move to the native PostgreSQL repository involves, what raises each factor, and what to ask for in a written quote. Read it before scoping, because most of the effort comes from data volume, the number of nodes and connectors, and the state of the target database platform rather than from the Ninja commands themselves.
| Driver | What raises it | What to ask for in a quote |
|---|---|---|
| Data volume in the repository | Large object counts, many shadow accounts, large task and certification histories, and long-running export and import windows | Export and import runtime estimate based on a measured copy of your data, and the steps taken to verify row counts after import |
| Audit history size | Years of retained audit records, high event rates from provisioning, and a requirement to keep all history rather than a trimmed window | Whether audit records are migrated while midPoint runs, how the audit cutover is sequenced, and how retention is handled afterward |
| Number of midPoint nodes behind the sticky load balancer | More nodes to reconfigure, restart and check for cache invalidation and Quartz task scheduling after the repository switch | Node-by-node cutover plan, load balancer session handling, and checks for stale caches on each node |
| Custom connectors and ScriptedSQL or DatabaseTable integrations | Connectors that reference the old SQL configuration, custom SQL queries, or resources that depend on specific table layouts | Inventory of each custom connector and query, and whether each is retested against the new repository before go-live |
| Custom code and configuration | Custom object classes, expressions, mappings, extensions and XML configuration that must be reviewed for compatibility with the native schema | Review scope for custom code and configuration, and the expected changes to deployment artifacts |
| Target systems reconciled after import | More connected systems that must be reconciled to confirm the imported state matches what each system holds | Reconciliation plan per target system, the evidence produced, and who signs off on discrepancies |
| Downtime tolerance | A requirement that provisioning and approvals keep running during the switch, or a short maintenance window with a fixed end time | Confirmed cutover window, the rollback point, and the work that stays out of scope during the freeze |
| PostgreSQL platform readiness | No existing server for midPoint, no high availability, untested backups or point-in-time recovery, no connection pooling, or an unsupported PostgreSQL major version | Whether the server is provisioned, the backup and recovery tests included, the high availability design, and the PgBouncer or equivalent setup |
| Pilot and parallel run environments | Each additional environment that must hold a copy of production data and be kept in step with the source | Number of environments in scope, how data is refreshed into each one, and how parallel run results are compared |
What usually goes wrong when teams migrate midPoint repositories
Repository migrations fail less often on the export and import commands than on the steps around them: the source version, the checks that prove data arrived intact, the audit trail, and the database platform that midPoint runs on after go-live. Each card names one failure point and the prevention step to build into the plan before the cutover date.
Skipping the 4.4 upgrade step
The documented path upgrades midPoint to 4.4 on the original SQL configuration before any export starts. Teams that export from an older release, or upgrade straight to a newer one, can produce data that the native PostgreSQL repository cannot import cleanly. Prevention: confirm the source version in the running environment, plan the 4.4 upgrade as its own step with a verified start, and check that the export runs against the upgraded instance.
Importing without count and connector checks
A Ninja import can finish without errors while objects are missing, duplicated or linked to the wrong resources. Before export, record object counts by type from the source. After import, compare those counts, then reconcile each connector against its target system so that accounts and entitlements still match. Prevention: write the comparison steps and their acceptance criteria into the migration runbook and sign them off before cutover.
Gaps in the audit trail
Audit records are a separate concern from current object data, and teams often plan for the object import and forget audit history. Evolveum documents that audit records can be migrated while midPoint runs on the native repository, so the audit move can be scheduled as its own workstream. Prevention: decide the retention period for audit records, confirm the migration method with Evolveum documentation, and verify that new audit events are written to the target database after cutover.
Targeting an unsupported PostgreSQL version
A PostgreSQL version chosen during planning can leave support before the system goes live. PostgreSQL 14 is listed as supported until November 12, 2026, and versions 13 and earlier are no longer supported. Prevention: pick the target major version by its end-of-support date at the planned go-live, not by the version that was current when the project started, and schedule a major upgrade plan for the years that follow.
Single server without tested recovery
Moving to a single PostgreSQL server leaves midPoint dependent on one host. Backups that have never been restored do not prove recovery, and point-in-time recovery needs continuous WAL archiving that must be set up and tested. PostgreSQL also does not detect a failed primary or promote a standby on its own, so automatic failover requires external tooling. Prevention: run a timed restore, test point-in-time recovery to a chosen moment, and choose and test any failover tool before go-live.
Using MD5 password authentication
PostgreSQL 18 deprecates MD5 password authentication in favor of SCRAM. Teams that copy an older pg_hba.conf or client configuration into a new server can keep MD5 in place, which weakens password protection for midPoint's database login. Prevention: set password encryption to SCRAM on the new server, change the midPoint database role password under SCRAM, review the host-based authentication rules, and confirm that the midPoint JDBC connection still authenticates after the change.
Questions teams ask before they migrate midPoint
What drives the cost of a midPoint migration to PostgreSQL?
Effort is the main cost driver, and it comes from scope rather than from the database itself. A quote usually covers four components: planning and a written rehearsal plan, the export, initialization and import work, configuration and validation of the migrated system, and cutover support. Your team also pays for its own time (access, test data, reviews and sign-off) and for the test environment and PostgreSQL servers. The migration is a one-time project. PostgreSQL hosting, backups and midPoint operations recur afterward. Ask each quote to list these items separately, state which midPoint version it starts from, and name what it excludes, such as upgrades or connector changes.
How long does a native PostgreSQL repository migration take?
The duration depends on the factors below, so ask for a written timeline with milestones rather than a generic estimate. Evolveum's documented path first upgrades midPoint to 4.4 on the original SQL configuration, so the starting version and the number of upgrade steps matter. The size of the repository, the volume of audit records, the number of midPoint nodes and the complexity of connected systems also affect the schedule. Change approval windows and the availability of your test copy are common delays. Audit records can be migrated while midPoint runs on the native repository, which can shorten the cutover window. Confirm each dependency with your team before work starts.
What does the migration require from our internal team?
Your team provides access, data, decisions and evidence. You need administrative access to the midPoint nodes, the current repository database and the target PostgreSQL servers, plus a test copy of the production repository so the migration can be rehearsed before cutover. Named technical contacts must be available for configuration questions and for connected systems. You also need a business owner who signs off on the results and who is accountable for audit evidence, including the migrated audit records. Agree on who approves the production cutover and who can call a rollback before the project starts, because those decisions shape the schedule.
Can our own engineers migrate midPoint using Evolveum's documentation?
Yes, a team with midPoint, PostgreSQL and Linux operations experience can follow Evolveum's documented migration path. The documentation covers the sequence: upgrade to 4.4 on the original SQL configuration, export with Ninja, initialize the native PostgreSQL repository, switch the configuration, import with Ninja and start midPoint. The harder parts are usually outside the documented steps: rehearsing on realistic data, checking connectors and custom objects, planning rollback, handling audit evidence and documenting the change for auditors. Assess those skills honestly. DeployOpen can run the whole project, support only the parts your team lacks, or review your plan. Any option works from a written scope.
Does moving to PostgreSQL change our midPoint license?
The move does not change the midPoint license, and midPoint has no enterprise edition to upgrade to. Evolveum states that every line of midPoint code is published under open source licenses and that the project is open source, not open core. The midPoint repository is licensed under the European Union Public License (EUPL-1.2), with Apache 2.0 as a secondary license. PostgreSQL is released under the PostgreSQL License, a permissive license similar to the BSD and MIT licenses. Evolveum support and platform subscriptions are optional commercial services, separate from the software license. Have your legal team confirm obligations for your specific deployment.
Do we need a parallel run during the migration?
A parallel run is a decision about rollback risk, and the documented path does not describe running two live repositories side by side. The documented sequence exports data from the original configuration, initializes the native PostgreSQL repository, switches the configuration and imports the data. Keep the original repository intact and backed up until the business owner accepts the result, so you have a fallback. Ask Evolveum whether any form of parallel operation is supported before planning one, because keeping two writable repositories in sync is a separate design problem. Run the rehearsal on a test copy to compare results before deciding how long to keep the fallback.
Which PostgreSQL version should the new midPoint repository use?
Choose a PostgreSQL major version that is still supported through your planned operating period, then confirm it against midPoint's requirements. Supported versions are 18 (final release November 14, 2030), 17 (to November 8, 2029), 16 (to November 9, 2028), 15 (to November 11, 2027) and 14 (to November 12, 2026). Versions 13 and earlier are unsupported, according to the PostgreSQL versioning policy. midPoint recommends PostgreSQL as its native repository database, ideally on a separate database server. Check midPoint's system requirements for the versions it supports with your target release, and plan how the new server will receive minor and major updates later.
How DeployOpen works on this
DeployOpen plans and delivers the move from a generic SQL or other database repository to midPoint's native PostgreSQL repository inside infrastructure you control. Work is agreed as a fixed scope in writing before it starts, and the Ninja export, import, configuration switch and audit migration are each tested and documented before cutover.
How we scope
- Inventory the current midPoint version, repository type, database size and audit table volume before agreeing the work.
- Confirm the upgrade path to midPoint 4.4 and the target midPoint release the deployment will run afterward.
- Agree in writing whether audit migration runs while midPoint is live, and which environments are in the fixed scope.
How we build
- Rehearse the documented sequence in a non-production copy: upgrade to 4.4, Ninja export, native repository initialization and Ninja import.
- Check reimported object counts, references, roles and task state against the source before any production step.
- Set up the native PostgreSQL server, connection settings and backups as part of the same build, not as an afterthought.
How we hand over
- Deliver a runbook with the exact export, import, configuration switch and rollback steps used during the migration.
- Record verification results, audit migration outcomes and any data exceptions found during rehearsal and cutover.
- Walk your operations team through the restored environment, backup jobs and the monitoring they will own.
How we support
- Ongoing support, upgrades and continuous testing are available as a retainer after the migration is complete.
- Plan later midPoint upgrades on supported releases and PostgreSQL major versions as separate agreed work.
- Confirm with Evolveum which support subscription level fits your operating model, since DeployOpen does not sell midPoint subscriptions.

