Postgres Enterprise Manager 10.4.0 release notes v10.4
Released: 20 March 2026
New features, enhancements, bug fixes, and other changes in Postgres Enterprise Manager 10.4 include the following:
Highlights
- New user-defined reports which can run on any monitored server or the PEM server.
- New
configure-pem-server.shoptions that enable much more flexible installations. - Fully revised documentation for HA PEM deployments using new configuration options.
- Support for SLES 15 SP7.
Enhancements
| Description | Addresses |
|---|---|
| Introduced a comprehensive custom reports feature allowing users to create, execute, and manage user-defined report templates on PEM servers or monitored servers, with support for report execution as scheduled jobs and integration with the PEM API. | |
| Introduced new options for `configure-pem-server.sh` to enable more flexible PEM deployments. This includes the ability to provide passthrough options for the host agent, and to run the script on primary and standby nodes of a running HA Postgres cluster. | |
| Implemented profile reassignment feature that allows you to move alert profiles from one target to another during the deletion process. This overrides the default behavior of simply removing the profile, ensuring your monitoring configurations remain intact even when a specific profile is deleted. | |
| Implemented connection string support for pemWorker agent connections, simplifying deployment by allowing users to specify all connection parameters in a single string and reducing the need for separate SSL certificate configuration. | |
Added provisional support for OAuth 2.0 Client Credentials (M2M) authentication for webhook endpoints.You can now configure webhooks to use OAuth: first, fetching a token, then using that token to authenticate subsequent HTTP requests. The support is marked as provisional, meaning it is suitable for production use, but future minor releases may make breaking changes. | |
| Added a new `verify-registration` command for pemworker that allows users to verify if the agent is properly registered with the PEM server, enabling independent validation of agent registration status without inspecting log files. | |
| Added a scheduled system job that automatically cleans up old event history records, helping users manage database growth and maintain optimal performance over time. | |
| Introduced a comprehensive REST API v16 for profile management, enabling developers to programmatically create, retrieve, update, and manage alert profiles through standard API endpoints. | |
| Introduced new privilege roles: `pem_list_barman` to list the BARMAN server, `pem_list_all_assets` that can see all monitored resources/assets irrespective of the `team` field, `pem_manage_assets` to add/remove a database server, an agent or a tool (e.g. BARMAN), and `pem_assign_profile` to assign a profile to an agent/server. | |
| Added support to disable alert reminder emails, giving users fine-grained control over their notification preferences to reduce email fatigue from repeated alert notifications. | |
| Extended email address validation to support addresses beginning with a "+" symbol and longer domain names, accommodating users with modern email addressing schemes like Gmail's plus-addressing feature. | |
| Added support for SUSE Linux Enterprise Server 15 Service Pack 7 (SLES/15/SP7). |
Changes
| Description | Addresses |
|---|---|
| The PEM web application now uses the edb-python 3.12 interpreter on all Linux platforms except Ubuntu 24.04. | |
| PEM packages for RHEL 9 are now on RHEL 9.6 so that the package can work on both RHEL 9.6 and 9.7. | |
| Merged pgAdmin 9.10 codebase into PEM, bringing the latest pgAdmin features, bug fixes, and improvements to the PEM user interface and core functionality. |
Bug Fixes
| Description | Addresses |
|---|---|
| Fixed an issue in the copy alert feature where the Cleared Alerts flag was not getting copied, ensuring all alert properties are properly duplicated when copying alerts. | 41904 |
| Fixed the qtliteral function to properly handle SQL formatting issues by delegating escape handling to the psycopg library, eliminating manual quote doubling bugs. | 55011,55481 |
| Migrated `log_connections` values from 'true'/'false' to standard PostgreSQL format 'on'/'off' in `log_configuration` tables, ensuring consistency with PostgreSQL configuration standards. | 55651 |
| Fixed the issue where the system configuration report was throwing an error due to missing tablespace directory. Also created an alert template 'Tablespace Directory Missing' to proactively notify users about such ghost tablespaces. | 53777 |
| Fixed unnecessary certificate path checks and creation when agent SSL certificates and keys are specified via `--use-agent-sslcrt` and `--use-agent-sslkey`, streamlining agent registration with pre-existing certificates. | 56476 |
| Fixed an issue where 'alerting since' displays incorrect future time when database timezone is in non-UTC timezone. | 57785 |
| Fixed login error when using PG/EPAS as the database of user settings via `CONFIG_DATABASE_URI`. | 57193 |
| Updated urllib3 to version 2.6.3 to fix CVE-2026-21441, protecting users from potential security vulnerabilities in HTTP client operations. | |
| Bumped require.js version from 2.3.6 to 2.3.8, incorporating upstream bug fixes and security improvements to the JavaScript module loader. | |
| Fixed an issue where duplicate chart names with the same target level were incorrectly allowed, ensuring chart uniqueness and preventing user confusion when managing dashboards. | |
| Fixed a problem where resetting email templates returned stale data instead of reflecting the actual reset values, ensuring users see accurate template content after performing a reset. | |
| Fixed the Transaction ID Exhaustion (Wraparound) probe to cast values to Float instead of integer, preventing data overflow and providing accurate percentage calculations for transaction ID usage monitoring. | |
| Resolved profile drafting logic issues affecting event history logging and UI notifications, ensuring profile changes are accurately tracked and users receive proper feedback during profile management. | |
| Added auto_created column to profile_alert_configs table and updated deletion logic to prevent accidental removal of system-created alerts from profiles, protecting critical monitoring configurations. | |
| Improved the monitored server connection assignment in pemworker using modern C++ constructs with boost::condition_variable, enhancing thread safety and reducing CPU usage during connection allocation. | |
| Fixed the issue where agent registration options `-o log_level=xxx` and `-o log_location=yyy` were ignored during registration, ensuring users can properly customize logging configuration during agent setup. | |
| Modified the server PUT API to enforce proper role-based restrictions, preventing users without the databaseServerRegistration role from editing server properties and enhancing security by encrypting sensitive connection parameters. | |
| Fixed SSL errors in server registration and refactored the server-registration logic to use schema-wise mapping of server insert statements, improving code maintainability and registration reliability. | |
| Optimized the `trg_server_info_flag_mv` trigger to only refresh materialized views when the `server_version_id` column is updated instead of on all updates, significantly reducing unnecessary database overhead. | |
| Added a trigger to update the is_leader flag in the pem_host_and_server table on the basis of pemdata.server_info table. |
- On this page
- Highlights
- Enhancements
- Changes
- Bug Fixes