It's time once again for OpenNMS On the Horizon.

Apologies for missing a few, but I was out of the office.

Since last time, we worked on, well, this list is huge.
Feel free to make the most inefficient summary possible by just reading all the updates.
Which I guess isn't really a summary.

Github Project Updates

Internals, APIs, and Documentation

  • Mark Mahacek worked on documentation updates for Meridian 2022.
  • Freddy continued his work on OIA improvements.
  • I continued my work on updating and refactoring various dependencies in our Karaf instance(s).
  • Chandra wrapped up his changes to support deleting devices configs when the related interface is removed.
  • Gerald worked on various Kubernetes and Skaffold config in Horizon Stream.
  • Chandra fixed a bug in DAO queries by IP address + location.
  • Alex worked on some device config backup test issues.
  • Mark Mahacek worked on BSM, Geocoder, Jetty SSL, LoopDetector, and PassiveStatus documentation.
  • Mike and Arthur worked on keycloak-related config for Stream development.
  • Patrick worked on some memory/GC optimization in the time-series layer.
  • Alex added a reason response for DCB.
  • Alberto worked on some DCB and Helm filter documentation updates.
  • I refactored how/when third-party license file generation happens.
  • Alexander did more work on HTTPS smoke tests.
  • Christian worked on making BgpSessionMonitor more flexible in what OIDs can be used.
  • Yang Li worked on being able to trigger events in Stream from the UI.
  • Alberto worked on making Collectd strictInterval=true by default for Horizon 30.
  • Christian fixed a bug in asset search.
  • Alberto updated documentation for the new location template variable in Helm.
  • Jason worked on the CI pipeline for Stream.
  • Gerald worked on Camel/Kafka routing in Stream.
  • Bonnie did some more work on upgrade and DCB documentation.
  • James fixed opennms restart so debug flags are preserved.
  • Christian worked on value mapping in the XML and SNMP collectors.
  • Dino added some thresholds for pollerd and collectd threads.
  • Chandra and Morteza fixed some issues in resolving OIA dependencies.
  • Chandra fixed some issues with script-file handling in DCB.
  • Antonio worked on some enlinkd topology improvements.
  • Dustin added support for setting what shell is used in DCB commands.
  • Bonnie added documentation for the Grafana Image Plugin and the WmiMonitor.
  • Gerardo worked on some ALEC modifications using Hellinger distance for correlation.
  • Alberto worked on an enhancement to validate SCV credentials in the Karaf shell.
  • Dmitri worked on supporting the OPAQUE SNMP data type.
  • Patrick did more work on SCV support in OIA.
  • Mark Frazier worked on provisioning scanning in Stream.
  • Arthur worked on Minion support in Stream.
  • Freddy worked on some additions to the stress Karaf command.
  • Morteza worked on some cleanups to how the CircleCI pipeline is run.
  • Chandra worked on supporting TFTP binary mode in DCB scripts.
  • Alberto fixed an issue with IP address SNMP parsing.
  • Dustin worked on better handling devices that send flows with an unknown direction.

Web, ReST, UI, and Helm

  • Pushkar worked on an access issue in resource graphs and ROLE_USER.
  • Mark Frazier worked on the provisioning REST service for Horizon Stream.
  • Alberto did more work on making sure Helm and reverse proxies play nice.
  • Mike worked on some path handling in the new UI, plus some other cleanups/validation changes.
  • Christian added DCB to the RTC dashboard.
  • Mike and Chinh Le worked on some improvements to the VMware form for requisition editing.
  • Scott added a new role ROLE_FILESYSTEM_EDITOR to allow access to editing configs from the UI.
  • Arthur added ack/unack to the Stream REST service.
  • Yang Li worked on authorization/CORS issues in Stream.
  • Maxim worked on some UI navigation and search fixes.
  • Alberto fixed some query issues in Helm.
  • Scott added OpenAPI annotations to the new DCB REST service.
  • Pushkar worked on a fix to event/alarm advanced search.
  • Alberto added support for multiple selection of applications/hosts/conversations in Helm.
  • Yang Li worked on cucumber tests for GraphQL in Stream.
  • Yang Li worked on role lookup/caching in Stream.
  • Chinh Le worked on a bunch of other improvements in the new UI.


Thanks to the following contributors for committing changes since last OOH:

  • Bonnie Robinson
  • Jason Berry
  • Gerald Humphries
  • Morteza Ershad-Manesh
  • Mark Mahacek
  • Chinh Le
  • Alberto Ramos
  • Antonio Russo
  • Dustin Frisch
  • Chandra Gorantla
  • Pushkar Suthar
  • Christian Pape
  • Alexander Chadfield
  • Freddy Chu
  • Mark Frazier
  • Arthur Naseef
  • Yang Li
  • Mike Rose
  • Marcel Fuhrmann
  • Scott Theleman
  • Dmitri Herdt
  • Alex May
  • Patrick Schweizer
  • James Hutchinson
  • Gerardo Montecon
  • Maxim Brener
  • Benjamin Reed
  • Dino Yancey

Releases and Roadmap

May Releases

In May, we released updates to all OpenNMS Meridian versions under active support, as well as Horizon 29.

NOTE: All releases this month received security updates that affect a number of core dependencies. While these dependency changes should not affect how the OpenNMS runtime works, these releases contain a larger than usual number of changes to "plumbing" to facilitate these dependency updates. We strongly recommend that you do more than the usual amount of testing before deploying this update to a production environment.

Meridian Stable Updates

Meridians 2019.1.34, 2020.1.23, and 2021.1.15 contain primarily dependency updates primarily for security improvements.

Additionally, Meridian 2022.1.3 contains a bunch of documentation improvements and a few other bug fixes.

For a list of changes, see the release notes:

Horizon 29.0.10

Release 29.0.10 contains all of the fixes included in Meridian 2022.1.3, plus a few other bug fixes and enhancements.

For a high-level overview of what has changed in Horizon 29, see What’s New in OpenNMS Horizon 29.

For a complete list of changes, see the changelog.

The codename for Horizon 29.0.10 is Duck.

Upcoming June Releases

OpenNMS is on a monthly release schedule, with releases happening on the second Wednesday of the month.

The next OpenNMS release day is June 8th, 2022.

We currently expect the initial release of Horizon 30, plus Meridians 2019 through 2022.

Next Horizon: 30 (Q2 2022)

The next major Horizon release will be Horizon 30.

Horizon 30 is currently expected to have the following features:

  • the start of a new Vue-based UI using the Feather Design System
  • thresholding support for Flow data
  • initial work moving configuration from XML files to the database -- the first config file implemented on top of the new system will be provisiond-configuration.xml
  • support for running OIA plugins on Minion and Sentinel
  • support for backing up router configuration files

Next Meridian: 2023 (Q1 2023)

Meridian 2023 is early in its development cycle, but you can expect it to contain, at the very least, the work that's going into Horizon 30.


Note that this is just based on current plans; dates, features, and releases can change or slip depending on how development goes.

The statements contained herein may contain certain forward-looking statements relating to The OpenNMS Group that are based on the beliefs of the Group’s management as well as assumptions made by and information currently available to the Group’s management. These forward-looking statements are, by their nature, subject to significant risks and uncertainties.

...We apologize for the excessive disclaimers. Those responsible have been sacked.

Mynd you, møøse bites Kan be pretti nasti...

We apologise again for the fault in the disclaimers. Those responsible for sacking the people who have just been sacked have been sacked.

Until Next Time…

If there’s anything you’d like me to talk about in a future OOH, or you just have a comment or criticism you’d like to share, don’t hesitate to say hi.

- Ben

Resolved Issues Since Last OOH

  • HELM-316: Document Grafana datasource expressions - Performance
  • HELM-326: Add documentation for location() template_variable
  • NMS-8504: Add a note to remember delete the browsers cache when upgrading OpenNMS
  • NMS-10226: Two BridgePort Node - Topology Mismatch
  • NMS-11065: WmiMonitor
  • NMS-12410: Topology Provider for CDP,LLDP,OSPF,ISIS,Bridge Topologies
  • NMS-12991: Missing datacollection file does not bring valueable error message
  • NMS-13684: Document how to set up SSL with Jetty
  • NMS-13692: Document how to upgrade OpenNMS
  • NMS-13971: Basic upgrade procedure
  • NMS-13987: [Web] - WebServer Fingerprinting
  • NMS-13991: Allow test mode flags in restart command
  • NMS-14008: Implement event sourced performance data
  • NMS-14038: DCB - Delete all device configs related to deleted interfaces / nodes
  • NMS-14084: Add the ability to define an enumeration to convert collected strings into numeric values
  • NMS-14109: Grafana box renders raw JS when Grafana behind reverse proxy with SSO
  • NMS-14148: Minions Trapd Listener Fails to Bind to udp/162 when broker is down
  • NMS-14174: DCB: Provide example scripts to download device configurations
  • NMS-14181: Audit Drift plugin and proportional_sum for accuracy
  • NMS-14185: Expose Secure Credentials Vault via Integration API
  • NMS-14193: Users with ROLE_USER face Access Denied when accessing Resource Graphs from Reports Section
  • NMS-14217: make sure license-maven-plugin is re-enabled in foundation and release branches
  • NMS-14227: SCV: Add Shell command to validate Credentials
  • NMS-14228: SCV: Cache JCEKS credentials in memory
  • NMS-14240: Exception when searching assets
  • NMS-14242: Super-admin role required to edit config files
  • NMS-14244: Add DCB services to 24-hour availability view
  • NMS-14245: Send events when a backup starts, succeds, or fails
  • NMS-14246: Requisition Web UI refers to "drop down" that doesn't exist
  • NMS-14247: Confusing web UI navigation titles
  • NMS-14248: Handle duplicate interface on a given location in DeviceConfig.
  • NMS-14249: modifiable OID prefix in BgpSessionMonitor
  • NMS-14250: Performance of time series integration layer
  • NMS-14253: Implement "latest" tag with documentation
  • NMS-14259: Make org.opennms.netmgt.collectd.strictInterval true by default
  • NMS-14260: UI: cannot configure requisition
  • NMS-14261: DCB menu items are mislabeled "Configuration Management"
  • NMS-14268: Test flow thresholding
  • NMS-14270: Disable editing of requisition:// URLs in external requisition editor
  • NMS-14271: Omit empty VMware credentials from URL in external requisition editor
  • NMS-14272: Fix requisition http/s path field and hostname validation
  • NMS-14273: Fix hostname validation
  • NMS-14275: DCB: Handle script file missing scenario better
  • NMS-14284: Incorrect validation of requisition name for DNS external requisitions
  • NMS-14285: Main requisition editor incorrectly mentions Requisition Definition
  • NMS-14286: Remove sorting of Schedule Frequency column
  • NMS-14290: Web UI search does not find External Requisitions and Thread Pools
  • NMS-14291: Circle ci caching OIA issue
  • NMS-14292: SCV entry attribute values become literal asterisks after editing in web
  • NMS-14295: OpenNMS build broken for release-30 and develop
  • NMS-14296: Query key/value added in Path input field causes duplicates in URL
  • NMS-14297: DCB: Whenever Sink pushes config, config type should be Sink instead of default
  • NMS-14298: DCB UI : Allow Config type to be more than two not just default/running
  • NMS-14304: Latest DCB UX Updates
  • NMS-14305: VMware type - username/password duplicated in URL
  • NMS-14308: Fix UI yarn.lock conflicts with latest updates
  • NMS-14315: Global search box: gap between input field and dropdown result list
  • NMS-14316: Fix Feather Dialog issue on 0.10.10
  • NMS-14317: DCB Rest API: Update History to filter by config type
  • NMS-14320: External Requisition UI: Obfuscate vmware password in URL
  • NMS-14328: DCB: Unable to decompress the .gz file
  • NMS-14330: Shorten "External Requisitions and Thread Pools" item in New UI Preview
  • NMS-14333: DCB: Wrong cron expression results in no devices in DCB UI
  • NMS-14336: CircleCI : Intermittent failures in horizon-deb-build
  • NMS-14340: External Requisition UI: Advanced cron validation message of by 1
  • PRIS-157: IP Addresses are not validated before generating requisition

Jump to section

About the Author: RangerRick

Principal Software Engineer. Manages the release process of OpenNMS Horizon and Meridian, and a bunch of other stuff.