Planning the midPoint upgrade path from 4.8 LTS
The upgrade path from midPoint 4.8 LTS depends on one decision: whether the team stays on the LTS line or moves to feature releases. If it moves to 4.10, the 4.10 release notes accept direct upgrade only from the latest 4.9 maintenance release, so a deployment on 4.8 must first step through 4.9 and cannot jump straight to 4.10. Settle this decision before any environment work starts, because it sets the target version, the number of upgrade cycles and the test effort for each step. Teams that run midPoint for identity governance also have change windows, connector dependencies and access certification cycles that the upgrade must not disrupt, so the choice affects scheduling as much as engineering.
The support end dates supplied for the line are: 4.8 LTS until 17 October 2028, 4.9 until 18 October 2026, and 4.10 until 26 November 2027. Read together, the 4.9 window closes first, so a team that uses 4.9 as an intermediate stop will have a short runway there before it must move again. A team that stays on 4.8 LTS keeps the longest support window of the three. The exact 4.8 to 4.9 step must be confirmed in the 4.9 release notes, including any prerequisites, configuration changes or database requirements. Treat the release notes for each version as the authority for that version's upgrade conditions, and record the source you used in the upgrade plan.
Before choosing a target, run three checks against the current deployment. First, confirm the repository database. midPoint 4.10 was released on 26 November 2025 and dropped support for repository databases other than PostgreSQL, so an instance on another database needs a repository migration before it can reach 4.10. Second, confirm the Java runtime. midPoint recommends Java 21 for 4.10 and older, with Java 17 supported, and Java 25 for 4.11 and later, so the runtime on each host may need to change before a given step. Third, confirm the hosting model: the 4.11 release notes state that production deployments in Windows environments are supported only for LTS releases, which matters if the team expects to run feature releases on Windows hosts.
Compare the two paths on the decisions each one forces. Staying on 4.8 LTS limits change now but defers the 4.9 and 4.10 steps to a later window. Moving forward accepts more upgrade cycles in exchange for newer features and an earlier start on the 4.11 line. Evolveum offers Product Support subscriptions for resolving product bugs, with an 8x5 next-business-day or 24x7 SLA, and Platform Subscriptions that add feature development and roadmap influence. Ask which subscription level covers the steps you plan, and confirm the terms in writing. Evolveum's subscription page lists no prices, so request a quote from a written scope that names each upgrade step.
What changes between 4.8 LTS, 4.9, 4.10 and 4.11
This table compares the changes across midPoint 4.8 LTS, 4.9, 4.10 and 4.11 and what each one means for a deployment that starts on 4.8. Read each row as a gate that must be ready before the matching step, starting with the PostgreSQL-only repository, the direct-upgrade rule and the Java versions. Where this table does not cover a point, confirm it in the release notes before you schedule work.
| Change | Impact on a 4.8 LTS upgrade | Action needed |
|---|---|---|
| 4.10 repository database | Repository databases other than PostgreSQL are no longer supported from 4.10, which was released on 26 November 2025. | Confirm your repository database. If it is not PostgreSQL, plan the migration before the 4.10 step. |
| 4.10 direct-upgrade rule | Direct upgrade to 4.10 is supported only from the latest 4.9 maintenance release, so a 4.8 deployment must reach 4.9 first. | Confirm the current latest 4.9 maintenance release in the 4.10 release notes and schedule the 4.8 to 4.9 step first. |
| Java for 4.10 | Java 21 is recommended for 4.10 and older releases. Java 17 is supported. | Test 4.10 on Java 21 in a non-production environment, or confirm Java 17 support for your deployment. |
| Java for 4.11 and later | Java 25 is recommended for 4.11 and later. Java 21 is supported. | Decide whether to move to Java 21 with 4.10 or to Java 25 with 4.11, and test the chosen JVM path before the 4.11 step. |
| Windows production deployments | The 4.11 release notes state that Windows production deployments are supported only on LTS releases. | If you run midPoint on Windows in production, confirm which LTS release applies and keep the deployment on it. |
| Support end dates | 4.8 LTS is supported until 17 October 2028, 4.10 until 26 November 2027 and 4.9 ends on 18 October 2026. The 4.11 feature release is planned for 21 October 2026. | Compare these dates with your change calendar and confirm them on the midPoint releases page before you commit to a target. |
| 4.9 changes | This table does not summarize the 4.9 changes, so any effect on your deployment is not shown here. | Review every 4.9 item in the release notes and test each one against your integrations and connectors. |
| Java for 4.8 LTS | This table does not state Java guidance for 4.8 LTS. | Confirm the supported and recommended Java versions for 4.8 in its release notes and system requirements. |
Should we stay on 4.8 LTS or move to feature releases?
Staying on the 4.8 LTS line suits teams that want a stable identity platform with a small number of changes to plan, test and approve. Because the support window is long, upgrades can be scheduled around audit cycles, change freezes and staffing instead of release dates. Support for 4.8 runs until 17 October 2028.
What this commits the team to:
- Support end date: 4.8 is supported until 17 October 2028, so the move to a later line must be scheduled and completed before that date.
- Feature access: Capabilities introduced in later feature releases are not available on 4.8 until you upgrade.
- Upgrade steps ahead: The eventual move still follows the stepwise path through 4.9 and 4.10, because direct upgrades have rules.
- Vendor coverage: Confirm with Evolveum which maintenance releases are published for 4.8 and what your support subscription covers.
Before committing, record the end-of-support date in your change calendar and set a review date well ahead of it.
Moving to feature releases suits teams that need newer capabilities, can absorb more frequent upgrades and maintain a test environment that mirrors production. This path also suits teams that expect to follow the release line closely over the coming years. The trade-off is a shorter support window and more upgrade work, which should be planned as recurring effort.
What this commits the team to:
- Support end date: 4.10 is a feature release supported until 26 November 2027, a shorter window than 4.8. The 4.11 feature release is planned for 21 October 2026.
- Upgrade steps ahead: 4.10 can be entered by direct upgrade only from the latest 4.9 maintenance release, so a 4.8 deployment needs a 4.9 step first.
- Repository and runtime: 4.10 dropped support for repository databases other than PostgreSQL. midPoint recommends Java 21 for 4.10 and older, and Java 25 for 4.11 and later.
- Windows limits: Production deployments in Windows environments are supported only on LTS releases, so 4.11 cannot be the production target for a Windows deployment.
Before committing, confirm the planned 4.11 date in the release schedule and decide how often your team will repeat the upgrade cycle.
The answers to these questions decide which path is available before any feature comparison begins. Write each answer down with the person who owns it, and check the release schedule before you set a target version.
Questions to settle:
- Operating system: Does production run on Windows? If it does, feature releases are excluded for those production deployments, which may settle the decision on its own.
- Repository: Is midPoint backed by PostgreSQL? 4.10 requires it, so any other repository must be migrated before the move.
- Upgrade distance: How many releases separate your current version from the target? Count the 4.9 maintenance release as a required step before 4.10.
- Runtime: Can your Java runtime move to Java 21 for 4.10, or to Java 25 for 4.11? Confirm this with your platform team.
- Support and ownership: Who approves the release line, who runs the upgrade, and whether your Evolveum support subscription covers the chosen line.
Once these answers are agreed, the team can pick a tab with confidence and plan the first upgrade step.
How the direct-upgrade rule sets the midPoint upgrade path
The direct-upgrade rule decides the order of every step. The midPoint 4.10 release notes allow a direct upgrade only from the latest 4.9 maintenance release. A team running any 4.8 build therefore cannot move straight to 4.10, even though 4.8 is a long-term support line. The supported path has two hops: first from the current 4.8 build to the latest 4.9 maintenance release, then from that release to 4.10. A project plan that shows 4.8 to 4.10 as a single change does not match the path Evolveum documents, so the schedule should give each hop its own preparation, verification and rollback point.
Confirm the target before you plan dates. Open the midPoint releases page on the Evolveum documentation site, locate the 4.9 entry and note which maintenance release is current. Then open the 4.10 release notes and read the upgrade section, which states the direct-upgrade condition. Record the exact version string, the date you checked and the page you used, and attach that record to the change request. Maintenance releases can appear between planning and execution, so repeat the check the day before the change window and update the runbook if the latest 4.9 release has changed. Also check that your planned window falls before midPoint 4.9 support ends on 18 October 2026.
Skipping the 4.9 step puts the upgrade outside the documented procedure. The release notes name 4.9 as the only source for a direct move to 4.10, so a team that starts from 4.8 has no vendor-documented procedure for that jump. If something goes wrong, the support conversation starts from an unsupported path, and the cost of recovery usually lands on the project. If you believe an exception is justified, put the question in writing to Evolveum or to your support subscription provider and wait for their answer before changing the plan. Do not treat a successful test in a lab as evidence that the jump is supported.
Each hop adds work that is easy to underestimate. Take a full backup of the repository database and the midPoint home directory before each hop, and test restoring one of them. Repeat regression tests on the connectors, roles and approval flows your organization uses, because a change that is harmless at the 4.9 stop may matter at the 4.10 stop. Check the Java runtime and repository requirements for each version against the system requirements page. Finally, note that midPoint 4.10 dropped support for repository databases other than PostgreSQL, so any non-PostgreSQL repository must be migrated before or as part of this path.
What to prepare before the first midPoint upgrade step
Four preparation areas should be finished before the first midPoint step runs against your environment. Each protects something different: recoverable data, an accurate list of what the upgrade touches, a place to prove each step, and a runtime that each release accepts. Work through them in this order so the backup and inventory are ready before any test run begins.
Verified backup of repository and home directory
Back up the midPoint repository database and the midPoint home directory, then restore both to a separate host and confirm that midPoint starts and the data reads correctly. midPoint uses PostgreSQL natively, so a PostgreSQL backup is the expected format. If any repository runs on another database, plan its migration to PostgreSQL before 4.10, because 4.10 dropped support for other repository databases. Record the restore time you observe.
Inventory of custom objects and integrations
List every custom object, connector, resource, object template and script in your deployment, with connector versions and the host where each runs. Mark which items were written in-house and which come from the Evolveum connector catalog, and check the support status of each catalog connector. Review each item against the release notes for every version on the path, so you know which ones need changes before a step. Keep the inventory in version control so each step can be checked against it.
Test environment that mirrors production
Build a test environment that matches production in midPoint version, database major version, Java runtime, connector set and network paths to target systems. Load a recent copy of production data, with personal data handled as your privacy obligations require, so reconciliation and certification runs behave as they will in production. Run each upgrade step there first and keep the results. Any difference between the two environments weakens what a passing test proves.
Runtime plan for Java and PostgreSQL
Confirm the Java runtime and PostgreSQL server version each step requires by checking the midPoint system requirements for that release. The requirements recommend Java 21 for 4.10 and older, with Java 17 supported, and recommend running PostgreSQL on a separate database server. Confirm the values that apply to 4.8 in the same document before you build the test environment. Decide whether any runtime change ships with a midPoint step or separately, and schedule any PostgreSQL major upgrade so it is tested alongside the application.
The upgrade sequence from 4.8 through 4.9 and 4.10
The sequence moves a midPoint 4.8 LTS deployment to 4.10 in stages, with a named check and a rollback point at each stage. Each hop is rehearsed in a test copy before production changes. The result is a production system on 4.10 with a written record of checks and restore evidence.
Confirm the 4.8 build and 4.9 target
Record the exact midPoint 4.8 build in each environment, along with the Java runtime and PostgreSQL versions, because the 4.10 requirements depend on them. Confirm the latest 4.9 maintenance release on the midPoint releases page, since 4.10 accepts a direct upgrade only from the latest 4.9 maintenance release. Note that 4.9 support ends on 18 October 2026, while 4.8 LTS is supported until 17 October 2028. Rollback point: the untouched 4.8 production system, so no change is made yet. Done when the team holds a written version inventory for production and test, with a named owner for each environment.
Rehearse the upgrade in test
Restore a copy of production into a test environment that uses the same connector set and the same PostgreSQL major version, so the result reflects production. Upgrade that copy to the 4.9 maintenance release confirmed in the first step. Watch the startup log and the database migration output, and resolve any errors before continuing. Rollback point: the test copy can be rebuilt from the 4.8 backup at any time, so the rehearsal can be repeated. Done when the upgraded test instance starts cleanly and the team holds a logged list of issues with owners.
Run functional checks on test
Run a written check list against the 4.9 test instance. Sign in through the administrative interface and any external SSO service. Run a reconciliation against each target resource and compare the results with the 4.8 baseline. Confirm that scheduled tasks run on their Quartz schedules. Open an access certification campaign and check that reviewers see their work items. Rollback point: the 4.8 test copy stays available for side-by-side comparison. Done when every check passes or has an accepted defect with an owner and a fix date.
Record a verified rollback point
Before any production change, pause scheduled tasks and take a consistent backup of the PostgreSQL repository, the midPoint home directory and the configuration and custom files. Restore that backup into a separate database server and start midPoint against it on 4.8 to prove it works. Keep the 4.8 deployment package with the backup. Rollback point: this restored and tested backup together with the 4.8 package. Done when a restore has been demonstrated, since a backup file alone does not show that the restore will work.
Move production to latest 4.9
Schedule the production change with the business owners of the identity services and apply the latest 4.9 maintenance release confirmed in the first step. Use the same check list as the test run, and start with login, one reconciliation and one scheduled task. Watch the logs during the first hours of operation. Rollback point: the verified backup and the 4.8 package, restored to the original host or to a standby if a check fails. Done when login, reconciliation and task scheduling succeed in production and the owners sign off in writing.
Verify repository and connectors on 4.9
Confirm the repository state before moving on. Check that the database migration completed and that midPoint reports the expected version. Load each ConnId connector and test its connection to the target system. Compare a sample of accounts, roles and assignments with the pre-upgrade baseline. Rollback point: the 4.8 backup from the earlier step, with production held on 4.9 until any defect is cleared. Done when every connector passes its connection test and the sampled data matches the baseline.
Upgrade to 4.10 and retest
Upgrade the test copy to 4.10 first. The 4.10 release notes allow a direct upgrade only from the latest 4.9 maintenance release, and 4.10 supports PostgreSQL as the only repository database. Confirm the Java runtime meets the 4.10 requirement, where Java 21 is recommended and Java 17 is supported. Run the full check list, then repeat the upgrade in production after a fresh backup. Rollback point: a fresh backup taken before the 4.10 step, together with the 4.9 package. Done when both the test and production instances pass the full check list and the upgrade record is filed.
How to test each step and roll back safely
Treat each hop on the midPoint 4.8 LTS upgrade path as its own change, with its own test pass and its own rollback point. Do not treat 4.8 to 4.10 as one project with a single test cycle at the end. Before any hop leaves a test environment, agree on the checks that must pass: identity and role assignments, approvals, connector reconciliation against target systems, and scheduled tasks. Confirm the test scope for each hop against the release notes for that version, because the risks in a 4.9 hop differ from those in a 4.10 hop, which also carries the PostgreSQL-only repository requirement. Write the scope as a checklist with an owner and an expected result for every item, so that a failed check has a clear meaning and a clear decision attached to it.
Identity and role assignment tests should compare a fixed set of representative users and roles before and after each hop. Choose accounts that cover each HR-driven lifecycle state in use, each role that carries inducements, and each organizational unit with its own approval policy. Export their assignments, projections and effective access from the source version, then run the same comparison on the target. Use the preview of changes where it is available to see what a recomputation would do before it writes anything. For approvals, submit a request of each type that runs in production, approve one and reject another, and confirm that the approver chain, notifications and final assignment match the baseline. A silent change in who approves an access request is as serious as a changed grant, and it is easy to miss if only the final state is checked.
Connector reconciliation needs its own test against each target system, because a version change can alter how attributes are read or written even when identity data looks correct. Run reconciliation against a non-production copy of each connected system, using connector versions that your target systems are documented to support in the Evolveum connector catalog, and compare discrepancy counts and proposed changes with the baseline. Inventory every scheduled task with its schedule and effect, then confirm after the hop that each task runs on exactly one node. If the deployment uses a sticky HTTP load balancer, a shared central database, cache invalidation over HTTPS and Quartz for distributed scheduling, test a rolling restart and a node removed from rotation. Confirm with the vendor whether mixed-version operation is supported during a hop. If it is not, plan a full stop of the cluster as part of the window.
A rollback point has three parts that must match. The first is a database backup taken immediately before the hop, with midPoint stopped or quiesced so the snapshot is consistent. The second is the exact software artifact of the source version, along with the Java runtime that version ran on. The third is the configuration directory and any environment-specific settings, including connector bundles and references to secrets. Record checksums for the artifacts, and restore the backup into a separate PostgreSQL instance to prove it works before the window opens. An untested backup is not a rollback point.
Reverting a binary change is usually a matter of redeploying the old artifact against the same database. A repository migration is harder, because the schema and stored data may no longer be what the older release expects. Once the new version has migrated the repository and users have written new assignments or approval records, restoring the old binary alone may not be enough. The clean return point is then the backup taken before the migration, and every change made after that backup is lost on restore. Decide before each hop how long the system may run on the new version, who holds the authority to call a rollback, and what evidence will drive that call. Confirm the rollback guidance for each release in its release notes and with Evolveum before scheduling the change.
What makes a midPoint upgrade take longer
This table lists the drivers that most often extend a midPoint 4.8 LTS upgrade, why each adds effort and how to keep it under control. Read it as a scoping checklist: each row points to work that must be inventoried, tested and scheduled before a quote is written. The main takeaway is that the version path and repository engine are fixed constraints, while connectors, templates and node count set the size of the testing.
| Driver | Why it adds effort | How to reduce it |
|---|---|---|
| Number of version hops | Direct upgrade to 4.10 starts only from the latest 4.9 maintenance release, so older versions need intermediate steps, each tested. | Confirm your current version, then plan the shortest supported route from the release notes. Verify each step in a non-production copy. |
| Custom ConnId connectors and integrations | Each custom connector is code that must be rebuilt, retested and checked against the new midPoint and Java versions. | Inventory every connector with its version and owner. Prefer documented connectors where their status allows, and retire unused ones. |
| Custom object templates and approval workflows | Templates and workflows depend on the schema and engine, so field or behavior changes need regression testing on each approval path. | Document each template and approval path, then replay representative requests in a test environment after each step. |
| Repository size and database engine | Large repositories lengthen backup, migration and validation. Repositories other than PostgreSQL must be migrated, because 4.10 dropped support for them. | Measure database size and confirm the engine early. Plan the PostgreSQL migration as its own stage with a verified restore. |
| Java runtime change | midPoint recommends Java 21 for 4.10 and Java 25 for 4.11 and later, so the runtime changes at each stage that crosses that line. | Build the JDK upgrade into the plan, check library and connector compatibility, and test startup and scheduled tasks on every node. |
| Target systems that must be retested | Each connected system needs read, provisioning and reconciliation tests, because connector behavior can change with the platform. | Build a test matrix from the connector inventory. Include a reconciliation run and a sample of provisioning changes for each system. |
| Nodes behind the load balancer | Each node needs its own upgrade and check. Cache invalidation and Quartz scheduling must keep working across nodes during cutover. | Confirm in the release notes whether mixed versions are allowed during a rolling change, then script node-by-node steps with a stop plan. |
Questions teams ask before upgrading midPoint from 4.8
What drives the cost of a midPoint 4.8 upgrade?
The main drivers are how many version steps separate your deployment from the target release, how much custom code and connector configuration it carries, and how many environments must be rebuilt and tested. Cost has one-time components: assessment of the current configuration, staged upgrades in non-production environments, testing of connectors and role logic, cutover support and documentation. Recurring cost appears only if you add a subscription or retainer for support after go-live. Ask any provider for a quote that lists the target versions, the number of environments, each connector in use, whether a repository move to PostgreSQL is needed, and the test evidence delivered at the end.
How long does a midPoint 4.8 upgrade take?
Duration follows the same inputs as cost: the number of required version steps, the size of the configuration, the connectors in scope and the test cycles your change process requires. Your own change windows and the availability of business owners for sign-off also set the pace. Ask for a written schedule with milestones for assessment, staging, testing, cutover and a rollback rehearsal, and confirm which dates depend on your team. A fixed-scope agreement should tie the timeline to the deliverables listed in that scope.
What does an upgrade need from our internal team?
Your team must provide access to the current environment, configuration exports, and owners for each identity source and target system so connector behavior can be tested. You also need a test environment that closely mirrors production and people who can approve role and policy results. Business owners should validate access outcomes, because midPoint changes decide who holds which entitlements. Ask the provider to name the owner for each approval step, the change window for cutover, and who signs off the go or no-go decision.
Can our own team upgrade midPoint from 4.8 without outside help?
Often yes, if the team has Java and PostgreSQL operations skills, has completed a midPoint upgrade before, and can run the staged path with the release notes in hand. The harder parts are usually custom code, connector behavior after bundled changes, and proving that access outcomes did not change during the upgrade. Assess this with a short list: who has done a midPoint upgrade, who owns the test evidence, and what the rollback plan is if cutover fails. A fixed-scope engagement can cover the parts your team lacks while your staff keep operational ownership.
Is staying on midPoint 4.8 LTS safe for production?
midPoint 4.8 is a long-term support release with support until 17 October 2028, so staying on it is a planned option with a fixed end date. Confirm with Evolveum what support covers for your deployment and whether you need a Product Support subscription for bug resolution, which Evolveum offers with an 8x5 next-business-day or 24x7 SLA. Note that 4.9 support ends on 18 October 2026, so a move through 4.9 has a near-term deadline. Also check whether your roadmap depends on features that exist only in later releases, since that changes the timing.
Why must midPoint 4.8 move through 4.9 before 4.10?
The midPoint 4.10 release notes support a direct upgrade only from the latest 4.9 maintenance release, so a deployment on an older version must first reach that release. In practice the path runs from 4.8 to 4.9, then to the latest 4.9 maintenance release, then to 4.10. Confirm the 4.8 to 4.9 step in the 4.9 release notes before planning. Release 4.10 also dropped repository databases other than PostgreSQL, so if your repository is elsewhere, the database migration becomes part of the path and changes the scope.
How does 4.11 affect the upgrade decision for a 4.8 team?
The midPoint releases page lists 4.11 as a feature release planned for 21 October 2026, while 4.10 is supported until 26 November 2027. midPoint recommends Java 25 for 4.11 and later, with Java 21 supported, and Java 21 for 4.10 and older, so a Java change is a separate work item to scope. The 4.11 release notes also state that production deployments on Windows are supported only for LTS releases, which matters if you run midPoint on Windows. Decide the target version before requesting a quote, because it sets the number of steps and the Java work.
How DeployOpen scopes and delivers a midPoint upgrade
DeployOpen plans and delivers midPoint upgrades inside your own infrastructure, starting from your current version and mapping every stop on the path to 4.8 LTS or beyond. Because midPoint 4.10 accepts direct upgrades only from the latest 4.9 maintenance release, the path is planned release by release and agreed in writing before work begins. Engagements are fixed-scope, with ongoing support available as a retainer.
How we scope
- Confirm your current midPoint version, repository database and Java runtime before choosing a target.
- Map each required stop against support end dates for 4.8 LTS, 4.9 and 4.10 before estimating effort.
- Record the written scope, including the target release, connectors in use and environments covered, before work starts.
How we build
- Build a staging copy of your deployment in infrastructure you control, then run each upgrade step against it.
- Check schema changes, bundled connector changes and PostgreSQL repository state at every step before advancing.
- Run the Java runtime required by each release, with Java 21 for 4.10 and older and Java 25 for 4.11 and later.
How we hand over
- Deliver a runbook listing each upgrade step, its verification checks, rollback point and the final configuration.
- Document a decision record stating whether you stay on the 4.8 LTS line or move to feature releases.
- Walk your operations team through the deployed system, including backup, restore and upgrade procedures for future releases.
How we support
- Agree whether ongoing support, upgrades and testing run as a retainer after handover.
- Track the 4.8 LTS support end date of 17 October 2028 and plan the next upgrade well ahead of it.
- Confirm with Evolveum whether a Product Support subscription fits your SLA needs before the upgrade starts.

