[OpenNMS/opennms] 06d744: NMS-20107: versioned group management API and Prim...

joseanesONMS via opennms-cvs <[email protected]>
Newsgroups gmane.network.opennms.cvs
Message-ID <OpenNMS/opennms/push/refs/heads/jira/NMS-20152-resource-graphs/[email protected]>
  Branch: refs/heads/jira/NMS-20152-resource-graphs
  Home:   https://github.com/OpenNMS/opennms
  Commit: 06d7448dd82d89cdec0fd7b547b3c3c3830cf14e
      https://github.com/OpenNMS/opennms/commit/06d7448dd82d89cdec0fd7b547b3c3c3830cf14e
  Author: Jose Anes <[email protected]>
  Date:   2026-07-30 (Thu, 30 Jul 2026)

  Changed paths:
    A opennms-webapp-rest/src/main/java/org/opennms/web/rest/v2/GroupsRestService.java
    A opennms-webapp-rest/src/main/java/org/opennms/web/rest/v2/api/GroupsRestApi.java
    A opennms-webapp-rest/src/main/java/org/opennms/web/rest/v2/model/GroupDto.java
    A opennms-webapp-rest/src/main/java/org/opennms/web/rest/v2/model/GroupRenameRequest.java
    M opennms-webapp-rest/src/main/webapp/WEB-INF/menu/menu-template.json
    A opennms-webapp-rest/src/test/java/org/opennms/web/rest/v2/GroupsRestServiceIT.java
    M opennms-webapp/src/main/webapp/WEB-INF/applicationContext-spring-security.xml
    A ui/src/components/ManageGroups/GroupEditorDialog.vue
    A ui/src/components/ManageGroups/GroupRenameDialog.vue
    A ui/src/components/ManageGroups/GroupsTable.vue
    A ui/src/containers/ManageGroups.vue
    M ui/src/main/router/index.ts
    A ui/src/services/groupAdminService.ts
    M ui/src/services/index.ts
    A ui/src/stores/groupAdminStore.ts
    A ui/src/types/groupAdmin.ts
    A ui/tests/stores/groupAdminStore.test.ts

  Log Message:
  -----------
  NMS-20107: versioned group management API and PrimeVue Manage Groups page

Adds /api/v2/groups (list/get/create/update, rename, delete), admin-only
via Spring Security rules plus in-code checks, wrapping GroupManager so
groups.xml stays the system of record. The member list order is
preserved end to end — it drives the notification escalation order —
and fields the API does not expose (default-map) survive updates.
Requests are validated up front (name and comment markup, members must
exist, duty schedule grammar with overnight ranges legal) and applied to
a detached copy, so rejected requests leave no partial state. Unlike the
legacy page, which only hid the buttons, the Admin group is protected
server-side, renames follow the on-call roles' membership-group
references, and deletes are rejected while roles still reference the
group instead of leaving dangling references.

The Manage Groups page (ui/#/admin/groups) visualizes the API: groups
table, editor with an ordered member list (move up/down), rename and
delete dialogs with the system group disabled. The menu entry now points
at the new page. 13 integration tests and 8 store tests.


  Commit: 9c2503ccf0e1f0abbd2b47a991cefcfebb33327c
      https://github.com/OpenNMS/opennms/commit/9c2503ccf0e1f0abbd2b47a991cefcfebb33327c
  Author: Jose Anes <[email protected]>
  Date:   2026-07-30 (Thu, 30 Jul 2026)

  Changed paths:
    M opennms-webapp-rest/src/main/java/org/opennms/web/rest/v2/GroupsRestService.java
    M opennms-webapp-rest/src/test/java/org/opennms/web/rest/v2/GroupsRestServiceIT.java
    M ui/src/components/ManageGroups/GroupEditorDialog.vue
    A ui/src/components/ManageGroups/GroupsHelpPanel.vue
    M ui/src/containers/ManageGroups.vue

  Log Message:
  -----------
  NMS-20107: review fixes, category handling, and in-context help

Fixes from self-review. Duty schedules with begin after end are rejected
for new entries — DutySchedule.isInSchedule compares within one calendar
day, so an overnight range never matches and would silently take the
group off duty; strings already stored on the record keep round-tripping
so hand-edited files never make a group uneditable. Delete and rename go
through GroupService so the DB category authorizations are cleared and
migrated as the legacy page did (deleting a group otherwise leaked its
authorizations to a future group reusing the name). Renames re-point the
on-call roles in memory first, so the rename's single save persists
groups and roles together, with the role changes reverted on failure.
Both v2 services now serialize on a shared monitor because user
mutations cascade into GroupManager. Dot-segment names are rejected, and
clearing the comments field works (an explicit empty string clears; an
omitted key still preserves).

Adds a collapsed "?" help panel explaining what groups are for and how
to use the page, including the escalation-order and rename semantics.


  Commit: 36d60b46916dce54c9e4740287cb81bd6a97a285
      https://github.com/OpenNMS/opennms/commit/36d60b46916dce54c9e4740287cb81bd6a97a285
  Author: Jose Anes <[email protected]>
  Date:   2026-07-30 (Thu, 30 Jul 2026)

  Changed paths:
    M ui/src/components/ManageGroups/GroupEditorDialog.vue
    M ui/src/components/ManageGroups/GroupRenameDialog.vue
    M ui/src/components/ManageGroups/GroupsTable.vue
    A ui/src/lib/adminValidation.ts
    M ui/src/services/groupAdminService.ts
    M ui/src/stores/groupAdminStore.ts
    A ui/tests/components/AdminDialogs/GroupEditorDialog.test.ts
    A ui/tests/lib/adminValidation.test.ts
    M ui/tests/stores/groupAdminStore.test.ts

  Log Message:
  -----------
  NMS-20107: validate group fields inline and surface API errors in the dialogs

Same treatment as the users page: group mutations return the server's error
message and the editor/rename dialogs show it inline instead of relying on a
toast hidden behind the modal; the group name and comments fields get live
client-side checks mirroring the server rules, and groups with names the
security filter cannot address in a URL path show a file-managed note in
place of row actions.


  Commit: 5cf1dc9dfc9e0cbfecbf2c94f977d40013d93085
      https://github.com/OpenNMS/opennms/commit/5cf1dc9dfc9e0cbfecbf2c94f977d40013d93085
  Author: Jose Anes <[email protected]>
  Date:   2026-07-30 (Thu, 30 Jul 2026)

  Changed paths:
    M opennms-webapp-rest/src/main/java/org/opennms/web/rest/v2/GroupsRestService.java
    M opennms-webapp-rest/src/test/java/org/opennms/web/rest/v2/GroupsRestServiceIT.java

  Log Message:
  -----------
  NMS-20107: grandfather stale group members on update

A hand-edited groups.xml can reference a user that no longer exists; since
the editor always sends the full member list, the unknown-user check made
such groups uneditable. Members already stored on the group now skip the
existence check, matching the duty-schedule and on-call-schedule handling;
members new to a request must still resolve to a real user.


  Commit: 64a64393527df8a64b81e12eb46fad5c73fc1fe4
      https://github.com/OpenNMS/opennms/commit/64a64393527df8a64b81e12eb46fad5c73fc1fe4
  Author: Jose Anes <[email protected]>
  Date:   2026-07-30 (Thu, 30 Jul 2026)

  Changed paths:
    M opennms-webapp-rest/src/main/java/org/opennms/web/rest/v2/GroupsRestService.java
    M opennms-webapp-rest/src/test/java/org/opennms/web/rest/v2/GroupsRestServiceIT.java
    M ui/src/components/ManageGroups/GroupEditorDialog.vue
    M ui/src/lib/adminValidation.ts
    M ui/tests/components/AdminDialogs/GroupEditorDialog.test.ts
    M ui/tests/lib/adminValidation.test.ts

  Log Message:
  -----------
  NMS-20107: close review findings on the groups API and editor

The name and comments regexes now scan for forbidden characters instead of
full-string matches a newline could bypass. Hand-edited comments containing
markup characters are grandfathered while unchanged — server-side and in
the editor — so such groups stay editable; changed comments are still
validated. The rename rollback no longer re-points on-call roles in memory
when the rename already persisted to groups.xml (only the DB category
migration failed), which would have diverged memory from the file; that
case now reports the partial failure explicitly.


  Commit: 02faec42dd5e9a88d1cd62d3642f1ed20c5a4e8f
      https://github.com/OpenNMS/opennms/commit/02faec42dd5e9a88d1cd62d3642f1ed20c5a4e8f
  Author: Jose Anes <[email protected]>
  Date:   2026-07-30 (Thu, 30 Jul 2026)

  Changed paths:
    M smoke-test/src/test/java/org/opennms/smoketest/MenuHeaderIT.java

  Log Message:
  -----------
  NMS-20107: follow the Manage Groups menu entry to the new page in MenuHeaderIT

The menu entry now lands on the Vue page, so the smoke test waits for its
page title instead of the legacy JSP breadcrumb.


  Commit: 601df07eea341fb1a9fdac7d2d595761cea7c67f
      https://github.com/OpenNMS/opennms/commit/601df07eea341fb1a9fdac7d2d595761cea7c67f
  Author: Jose Anes <[email protected]>
  Date:   2026-08-04 (Tue, 04 Aug 2026)

  Changed paths:
    M ui/src/components/ManageGroups/GroupEditorDialog.vue
    M ui/src/components/ManageGroups/GroupRenameDialog.vue
    M ui/src/components/ManageGroups/GroupsTable.vue

  Log Message:
  -----------
  NMS-20107: use @opennms/onms-ui wrappers on the Manage Groups page

Swap direct PrimeVue for the Onms-XXX seam wrappers across the groups
table and its editor/rename dialogs: Button->OnmsButton (text/outlined
mapped to variant), Dialog->OnmsDialog, InputText->OnmsInputText,
Select->OnmsSelect, DataTable->OnmsTable, Column->OnmsColumn, Tag->OnmsTag.
Message and IftaLabel have no wrapper yet and stay on PrimeVue. No
behaviour change.


  Commit: 3d5c6cd42420c3a5582764b203ac19019ebf4a4b
      https://github.com/OpenNMS/opennms/commit/3d5c6cd42420c3a5582764b203ac19019ebf4a4b
  Author: Jose Anes <[email protected]>
  Date:   2026-08-04 (Tue, 04 Aug 2026)

  Changed paths:
    M ui/src/components/ManageGroups/GroupEditorDialog.vue
    M ui/src/components/ManageGroups/GroupRenameDialog.vue

  Log Message:
  -----------
  NMS-20107: address review — OnmsIconButton for icon-only buttons, OnmsDialog width prop

Icon-only buttons (add member, move up/down, remove) now use OnmsIconButton
with icon components instead of OnmsButton with a fallthrough icon="pi ...";
dialog sizing routes through the OnmsDialog width prop (min(Npx, 95vw)) rather
than :style. Both defeat the seam by riding $attrs into PrimeVue.


  Commit: 03eb1887a5244495161dbdc9f807fd27c2eb1bf6
      https://github.com/OpenNMS/opennms/commit/03eb1887a5244495161dbdc9f807fd27c2eb1bf6
  Author: Jose Anes <[email protected]>
  Date:   2026-08-13 (Thu, 13 Aug 2026)

  Changed paths:
    M opennms-config/src/main/java/org/opennms/netmgt/config/GroupManager.java
    A opennms-config/src/test/java/org/opennms/netmgt/config/GroupManagerRenameTest.java

  Log Message:
  -----------
  NMS-20107: make group rename atomic so a failed save leaves no phantom

GroupManager.renameGroup mutated the in-memory map (removed the old key, set
the new name, put the new key) before calling saveGroups(). If that save threw,
memory held the rename while groups.xml still held the old name, and the
mtime-gated update() would never re-read. GroupsRestService then read that
phantom through hasGroup(), mistook it for a persisted rename, reported the
wrong failure, and skipped its role rollback -- serving the phantom plus the
repointed roles until restart.

Roll the in-memory rename back when the save fails, so hasGroup() only ever
reports what groups.xml actually received and the caller's rollback runs on the
real failure. New GroupManagerRenameTest covers both the rolled-back and the
committed paths.


  Commit: 3626a369dfe5509e2a9f6c2d0bf62a45e169f4c9
      https://github.com/OpenNMS/opennms/commit/3626a369dfe5509e2a9f6c2d0bf62a45e169f4c9
  Author: Jose Anes <[email protected]>
  Date:   2026-08-13 (Thu, 13 Aug 2026)

  Changed paths:
    M ui/src/components/ManageGroups/GroupEditorDialog.vue
    M ui/src/components/ManageGroups/GroupRenameDialog.vue
    M ui/tests/components/AdminDialogs/GroupEditorDialog.test.ts

  Log Message:
  -----------
  NMS-20107: bring Manage Groups dialogs onto the current onms-ui seam

Drop the nested primevue IftaLabel from every field for FormField's own
label/for/required/error props, and replace the direct primevue Message error
banners with a themed role=alert element, so the dialogs no longer import any
un-wrapped PrimeVue primitive. Field errors now render through FormField (the
test selectors follow the FormField-generated error ids).


  Commit: bcaa96d942127c274edefa194a978d265fbc7f2a
      https://github.com/OpenNMS/opennms/commit/bcaa96d942127c274edefa194a978d265fbc7f2a
  Author: Jose Anes <[email protected]>
  Date:   2026-08-13 (Thu, 13 Aug 2026)

  Changed paths:
    M opennms-webapp-rest/src/main/java/org/opennms/web/rest/v2/GroupsRestService.java
    M opennms-webapp-rest/src/main/java/org/opennms/web/rest/v2/model/GroupDto.java
    M opennms-webapp-rest/src/main/java/org/opennms/web/rest/v2/model/GroupRenameRequest.java
    M opennms-webapp-rest/src/test/java/org/opennms/web/rest/v2/GroupsRestServiceIT.java
    M ui/src/components/ManageGroups/GroupEditorDialog.vue
    M ui/src/components/ManageGroups/GroupsTable.vue
    M ui/src/services/groupAdminService.ts
    M ui/src/types/groupAdmin.ts
    M ui/tests/components/AdminDialogs/GroupEditorDialog.test.ts
    M ui/tests/stores/groupAdminStore.test.ts

  Log Message:
  -----------
  NMS-20107: make the v2 groups API pure camelCase JSON

Drop the JAXB annotations from GroupDto and GroupRenameRequest so they
serialize as plain camelCase JSON (users, dutySchedules, newName) instead of
the hyphenated/singular XML element names, and carry that through the UI type,
service, dialogs, table, and tests. The groups.xml mapping already lives in the
REST service. Also swap the hand-rolled isBlank/trimToNull helpers for
org.apache.commons.lang3.StringUtils, matching the users service.


  Commit: 6a2c064cb74768924b7256df1bf07ba3e769d229
      https://github.com/OpenNMS/opennms/commit/6a2c064cb74768924b7256df1bf07ba3e769d229
  Author: Jose Anes <[email protected]>
  Date:   2026-08-13 (Thu, 13 Aug 2026)

  Changed paths:
    M opennms-webapp-rest/src/main/webapp/WEB-INF/menu/menu-template-default.json

  Log Message:
  -----------
  NMS-20107: point the Manage Groups menu entry to the Vue page in the default template too

menu-template-default.json must stay identical to menu-template.json.


  Commit: 4afadebe50c192b01c748d45149e69cf013582b3
      https://github.com/OpenNMS/opennms/commit/4afadebe50c192b01c748d45149e69cf013582b3
  Author: Jose Anes <[email protected]>
  Date:   2026-08-13 (Thu, 13 Aug 2026)

  Changed paths:
    A ui/src/components/Common/AboutDialogButton.vue
    A ui/src/components/ManageGroups/GroupsAbout.vue
    R ui/src/components/ManageGroups/GroupsHelpPanel.vue
    M ui/src/components/ManageGroups/GroupsTable.vue
    M ui/src/containers/ManageGroups.vue

  Log Message:
  -----------
  NMS-20107: adopt the Info-dialog help and overflow-menu row actions

Mirror the Manage Users pattern: replace the inline About panel with an
Info-icon button in the table header that opens the help copy in an OnmsDialog
(shared AboutDialogButton), and collapse the per-row buttons to inline Edit and
Delete plus a overflow OnmsMenu carrying Rename. Protected-group disabling and
the file-managed note for unaddressable names are unchanged.


  Commit: e8946f0f5154183aa171cf5e9aa9d9d5799108a5
      https://github.com/OpenNMS/opennms/commit/e8946f0f5154183aa171cf5e9aa9d9d5799108a5
  Author: mershad-manesh <[email protected]>
  Date:   2026-08-14 (Fri, 14 Aug 2026)

  Changed paths:
    M .circleci/main/parameters.yml

  Log Message:
  -----------
  Update parameters.yml


  Commit: 95a8870355d0bb71f918fc1c7477667efb31fe9f
      https://github.com/OpenNMS/opennms/commit/95a8870355d0bb71f918fc1c7477667efb31fe9f
  Author: Scott Theleman <[email protected]>
  Date:   2026-08-17 (Mon, 17 Aug 2026)

  Changed paths:
    M features/springframework-security/src/main/java/org/opennms/web/springframework/security/AuthorityPrincipal.java
    M features/springframework-security/src/main/java/org/opennms/web/springframework/security/LoginModuleUtils.java
    M features/springframework-security/src/main/java/org/opennms/web/springframework/security/OpenNMSAuthSuccessHandler.java
    M features/springframework-security/src/test/java/org/opennms/web/springframework/security/LoginModuleUtilsTest.java
    M opennms-webapp/src/main/webapp/WEB-INF/applicationContext-spring-security.xml
    M opennms-webapp/src/main/webapp/includes/bootstrap.jsp
    M smoke-test/src/test/java/org/opennms/smoketest/WebappIT.java
    M ui/tests/components/Menu/UserSelfServiceMenuItem.test.ts

  Log Message:
  -----------
  NMS-20180: Fix various menu-related issues after NMS-20174 Review (#8792)

* NMS-20180: Narrow anonymous menu-asset access to /ui-components/assets/**

* NMS-20180: Make saved-request URL matching independent of the default locale

* NMS-20180: Assert regular menu items do not cancel the anchor navigation

* NMS-20180: Address PR review: default-locale lowercasing and test assertions


  Commit: 605688f8f54f4657524dda99a1ed91f95a8c36d6
      https://github.com/OpenNMS/opennms/commit/605688f8f54f4657524dda99a1ed91f95a8c36d6
  Author: Scott Theleman <[email protected]>
  Date:   2026-08-17 (Mon, 17 Aug 2026)

  Changed paths:
    M ui/CLAUDE.md
    M ui/MENU_TEMPLATES.md
    M ui/THIRD-PARTY-LICENSE.md
    M ui/copilot-instructions.md
    M ui/packages/onms-ui/README.md
    M ui/packages/onms-ui/package.json
    M ui/packages/onms-ui/src/components/OnmsIcon.vue
    M ui/packages/onms-ui/src/components/OnmsSearchInput.vue
    R ui/packages/onms-ui/src/icons/SearchGlyph.vue
    A ui/packages/onms-ui/src/icons/account/Group.vue
    A ui/packages/onms-ui/src/icons/action/AccountCircle.vue
    A ui/packages/onms-ui/src/icons/action/Add.vue
    A ui/packages/onms-ui/src/icons/action/AddCircleAlt.vue
    A ui/packages/onms-ui/src/icons/action/AddComment.vue
    A ui/packages/onms-ui/src/icons/action/AddNote.vue
    A ui/packages/onms-ui/src/icons/action/AddUser.vue
    A ui/packages/onms-ui/src/icons/action/Archive.vue
    A ui/packages/onms-ui/src/icons/action/AssignTo.vue
    A ui/packages/onms-ui/src/icons/action/AttachEmail.vue
    A ui/packages/onms-ui/src/icons/action/AttachFile.vue
    A ui/packages/onms-ui/src/icons/action/Build.vue
    A ui/packages/onms-ui/src/icons/action/Business.vue
    A ui/packages/onms-ui/src/icons/action/Calendar.vue
    A ui/packages/onms-ui/src/icons/action/CalendarEndDate.vue
    A ui/packages/onms-ui/src/icons/action/CalendarStartDate.vue
    A ui/packages/onms-ui/src/icons/action/Cancel.vue
    A ui/packages/onms-ui/src/icons/action/ChangeOwner.vue
    A ui/packages/onms-ui/src/icons/action/CheckCircle.vue
    A ui/packages/onms-ui/src/icons/action/Cloud.vue
    A ui/packages/onms-ui/src/icons/action/CloudDownload.vue
    A ui/packages/onms-ui/src/icons/action/CloudUpload.vue
    A ui/packages/onms-ui/src/icons/action/Code.vue
    A ui/packages/onms-ui/src/icons/action/Comment.vue
    A ui/packages/onms-ui/src/icons/action/ContactSupport.vue
    A ui/packages/onms-ui/src/icons/action/ContentCopy.vue
    A ui/packages/onms-ui/src/icons/action/ContentPaste.vue
    A ui/packages/onms-ui/src/icons/action/Cycle.vue
    A ui/packages/onms-ui/src/icons/action/Dashboard.vue
    A ui/packages/onms-ui/src/icons/action/DateRange.vue
    A ui/packages/onms-ui/src/icons/action/Delete.vue
    A ui/packages/onms-ui/src/icons/action/DownloadFile.vue
    A ui/packages/onms-ui/src/icons/action/Edit.vue
    A ui/packages/onms-ui/src/icons/action/EditMode.vue
    A ui/packages/onms-ui/src/icons/action/Email.vue
    A ui/packages/onms-ui/src/icons/action/EmailDraft.vue
    A ui/packages/onms-ui/src/icons/action/EmailInbox.vue
    A ui/packages/onms-ui/src/icons/action/EmailSecure.vue
    A ui/packages/onms-ui/src/icons/action/ExitToApp.vue
    A ui/packages/onms-ui/src/icons/action/Expand.vue
    A ui/packages/onms-ui/src/icons/action/Feedback.vue
    A ui/packages/onms-ui/src/icons/action/FeedbackAlt.vue
    A ui/packages/onms-ui/src/icons/action/FileCopy.vue
    A ui/packages/onms-ui/src/icons/action/FilterAlt.vue
    A ui/packages/onms-ui/src/icons/action/Group.vue
    A ui/packages/onms-ui/src/icons/action/Help.vue
    A ui/packages/onms-ui/src/icons/action/Hide.vue
    A ui/packages/onms-ui/src/icons/action/Home.vue
    A ui/packages/onms-ui/src/icons/action/Info.vue
    A ui/packages/onms-ui/src/icons/action/InformationExchange.vue
    A ui/packages/onms-ui/src/icons/action/LightDarkMode.vue
    A ui/packages/onms-ui/src/icons/action/Link.vue
    A ui/packages/onms-ui/src/icons/action/List.vue
    A ui/packages/onms-ui/src/icons/action/Location.vue
    A ui/packages/onms-ui/src/icons/action/LocationCity.vue
    A ui/packages/onms-ui/src/icons/action/Lock.vue
    A ui/packages/onms-ui/src/icons/action/LockPasswordProtected.vue
    A ui/packages/onms-ui/src/icons/action/LogIn.vue
    A ui/packages/onms-ui/src/icons/action/LogOut.vue
    A ui/packages/onms-ui/src/icons/action/LoggerConfigs.vue
    A ui/packages/onms-ui/src/icons/action/ManageProfile.vue
    A ui/packages/onms-ui/src/icons/action/MarkComplete.vue
    A ui/packages/onms-ui/src/icons/action/MarkIncomplete.vue
    A ui/packages/onms-ui/src/icons/action/MarkRead.vue
    A ui/packages/onms-ui/src/icons/action/MarkUnread.vue
    A ui/packages/onms-ui/src/icons/action/Notifications.vue
    A ui/packages/onms-ui/src/icons/action/Options.vue
    A ui/packages/onms-ui/src/icons/action/Person.vue
    A ui/packages/onms-ui/src/icons/action/Pin.vue
    A ui/packages/onms-ui/src/icons/action/PlayCircle.vue
    A ui/packages/onms-ui/src/icons/action/Print.vue
    A ui/packages/onms-ui/src/icons/action/Remove.vue
    A ui/packages/onms-ui/src/icons/action/RemoveUser.vue
    A ui/packages/onms-ui/src/icons/action/Reporting.vue
    A ui/packages/onms-ui/src/icons/action/Restore.vue
    A ui/packages/onms-ui/src/icons/action/Search.vue
    A ui/packages/onms-ui/src/icons/action/Send.vue
    A ui/packages/onms-ui/src/icons/action/SendWorkflow.vue
    A ui/packages/onms-ui/src/icons/action/Settings.vue
    A ui/packages/onms-ui/src/icons/action/Share.vue
    A ui/packages/onms-ui/src/icons/action/Sort.vue
    A ui/packages/onms-ui/src/icons/action/Subscriptions.vue
    A ui/packages/onms-ui/src/icons/action/SupportCenter.vue
    A ui/packages/onms-ui/src/icons/action/Unlock.vue
    A ui/packages/onms-ui/src/icons/action/UpdateSchedules.vue
    A ui/packages/onms-ui/src/icons/action/UpdateUtilities.vue
    A ui/packages/onms-ui/src/icons/action/UploadFile.vue
    A ui/packages/onms-ui/src/icons/action/VerifedUser.vue
    A ui/packages/onms-ui/src/icons/action/View.vue
    A ui/packages/onms-ui/src/icons/action/ViewDetails.vue
    A ui/packages/onms-ui/src/icons/action/Workflow.vue
    A ui/packages/onms-ui/src/icons/communication/Certificate.vue
    A ui/packages/onms-ui/src/icons/communication/CertificateAlt.vue
    A ui/packages/onms-ui/src/icons/communication/Chat.vue
    A ui/packages/onms-ui/src/icons/communication/Contacts.vue
    A ui/packages/onms-ui/src/icons/communication/Documentation.vue
    A ui/packages/onms-ui/src/icons/communication/IdCard.vue
    A ui/packages/onms-ui/src/icons/communication/Phone.vue
    A ui/packages/onms-ui/src/icons/content/BlogArticle.vue
    A ui/packages/onms-ui/src/icons/content/Video.vue
    A ui/packages/onms-ui/src/icons/datavis/AreaChart.vue
    A ui/packages/onms-ui/src/icons/datavis/BarChart.vue
    A ui/packages/onms-ui/src/icons/datavis/ColumnChart.vue
    A ui/packages/onms-ui/src/icons/datavis/DonutChart.vue
    A ui/packages/onms-ui/src/icons/datavis/Gauge.vue
    A ui/packages/onms-ui/src/icons/datavis/LineChart.vue
    A ui/packages/onms-ui/src/icons/datavis/PieChart.vue
    A ui/packages/onms-ui/src/icons/datavis/PolarChart.vue
    A ui/packages/onms-ui/src/icons/datavis/Reporting.vue
    A ui/packages/onms-ui/src/icons/datavis/StackedBarChart.vue
    A ui/packages/onms-ui/src/icons/datavis/StackedColumnChart.vue
    A ui/packages/onms-ui/src/icons/datavis/TreeDiagram.vue
    A ui/packages/onms-ui/src/icons/file/Attachment.vue
    A ui/packages/onms-ui/src/icons/file/Folder.vue
    A ui/packages/onms-ui/src/icons/file/FolderAdd.vue
    A ui/packages/onms-ui/src/icons/file/FolderLocked.vue
    A ui/packages/onms-ui/src/icons/file/FolderOpen.vue
    A ui/packages/onms-ui/src/icons/file/Generic.vue
    A ui/packages/onms-ui/src/icons/file/Image.vue
    A ui/packages/onms-ui/src/icons/file/Pdf.vue
    A ui/packages/onms-ui/src/icons/file/Text.vue
    A ui/packages/onms-ui/src/icons/file/WordDoc.vue
    A ui/packages/onms-ui/src/icons/file/Xls.vue
    A ui/packages/onms-ui/src/icons/file/Zip.vue
    A ui/packages/onms-ui/src/icons/hardware/ApplianceProfiles.vue
    A ui/packages/onms-ui/src/icons/hardware/Appliances.vue
    A ui/packages/onms-ui/src/icons/hardware/AppliancesAlt.vue
    A ui/packages/onms-ui/src/icons/hardware/DesktopWindows.vue
    A ui/packages/onms-ui/src/icons/hardware/Instances.vue
    A ui/packages/onms-ui/src/icons/hardware/KeyboardArrowDown.vue
    A ui/packages/onms-ui/src/icons/hardware/KeyboardArrowUp.vue
    A ui/packages/onms-ui/src/icons/hardware/Laptop.vue
    A ui/packages/onms-ui/src/icons/hardware/MinionProfiles.vue
    A ui/packages/onms-ui/src/icons/hardware/Network.vue
    A ui/packages/onms-ui/src/icons/hardware/NetworkProfiles.vue
    A ui/packages/onms-ui/src/icons/hardware/Router.vue
    A ui/packages/onms-ui/src/icons/hardware/Security.vue
    A ui/packages/onms-ui/src/icons/hardware/Server.vue
    A ui/packages/onms-ui/src/icons/hardware/VirtualMachine.vue
    A ui/packages/onms-ui/src/icons/hardware/VirtualMachineAlt.vue
    A ui/packages/onms-ui/src/icons/medical/Ambulance.vue
    A ui/packages/onms-ui/src/icons/medical/CostSavings.vue
    A ui/packages/onms-ui/src/icons/medical/Drug.vue
    A ui/packages/onms-ui/src/icons/medical/DrugGroupId.vue
    A ui/packages/onms-ui/src/icons/medical/Hospital.vue
    A ui/packages/onms-ui/src/icons/medical/Patient.vue
    A ui/packages/onms-ui/src/icons/medical/Payor.vue
    A ui/packages/onms-ui/src/icons/medical/Provider.vue
    A ui/packages/onms-ui/src/icons/medical/ProviderOffice.vue
    A ui/packages/onms-ui/src/icons/medical/Treatment.vue
    A ui/packages/onms-ui/src/icons/medical/TreatmentCycle.vue
    A ui/packages/onms-ui/src/icons/medical/TreatmentSchedule.vue
    A ui/packages/onms-ui/src/icons/medical/Vitals.vue
    A ui/packages/onms-ui/src/icons/navigation/Apps.vue
    A ui/packages/onms-ui/src/icons/navigation/AppsGetMore.vue
    A ui/packages/onms-ui/src/icons/navigation/ArrowBack.vue
    A ui/packages/onms-ui/src/icons/navigation/ArrowDropDown.vue
    A ui/packages/onms-ui/src/icons/navigation/Cancel.vue
    A ui/packages/onms-ui/src/icons/navigation/ChevronLeft.vue
    A ui/packages/onms-ui/src/icons/navigation/ChevronRight.vue
    A ui/packages/onms-ui/src/icons/navigation/ExpandLess.vue
    A ui/packages/onms-ui/src/icons/navigation/ExpandMore.vue
    A ui/packages/onms-ui/src/icons/navigation/FirstPage.vue
    A ui/packages/onms-ui/src/icons/navigation/Fullscreen.vue
    A ui/packages/onms-ui/src/icons/navigation/FullscreenExit.vue
    A ui/packages/onms-ui/src/icons/navigation/GridView.vue
    A ui/packages/onms-ui/src/icons/navigation/LastPage.vue
    A ui/packages/onms-ui/src/icons/navigation/Menu.vue
    A ui/packages/onms-ui/src/icons/navigation/MenuClose.vue
    A ui/packages/onms-ui/src/icons/navigation/MenuOpen.vue
    A ui/packages/onms-ui/src/icons/navigation/MoreHoriz.vue
    A ui/packages/onms-ui/src/icons/navigation/MoreVert.vue
    A ui/packages/onms-ui/src/icons/navigation/Refresh.vue
    A ui/packages/onms-ui/src/icons/navigation/SubdirectoryArrowLeft.vue
    A ui/packages/onms-ui/src/icons/navigation/SubdirectoryArrowRight.vue
    A ui/packages/onms-ui/src/icons/navigation/UnfoldLess.vue
    A ui/packages/onms-ui/src/icons/navigation/UnfoldMore.vue
    A ui/packages/onms-ui/src/icons/network/AggregationLayer.vue
    A ui/packages/onms-ui/src/icons/network/AggregationLayerAlt1.vue
    A ui/packages/onms-ui/src/icons/network/AggregationLayerAlt2.vue
    A ui/packages/onms-ui/src/icons/network/AggregationLayerAlt3.vue
    A ui/packages/onms-ui/src/icons/network/AggregationLayerAlt4.vue
    A ui/packages/onms-ui/src/icons/network/AggregationLayerAlt5.vue
    A ui/packages/onms-ui/src/icons/network/ApiConfig.vue
    A ui/packages/onms-ui/src/icons/network/ApiEndpoints.vue
    A ui/packages/onms-ui/src/icons/network/ApplianceProfiles.vue
    A ui/packages/onms-ui/src/icons/network/Appliances.vue
    A ui/packages/onms-ui/src/icons/network/AppliancesAlt.vue
    A ui/packages/onms-ui/src/icons/network/Build.vue
    A ui/packages/onms-ui/src/icons/network/CertificateAlt.vue
    A ui/packages/onms-ui/src/icons/network/Cloud.vue
    A ui/packages/onms-ui/src/icons/network/CloudBackUp.vue
    A ui/packages/onms-ui/src/icons/network/CloudDownload.vue
    A ui/packages/onms-ui/src/icons/network/CloudService.vue
    A ui/packages/onms-ui/src/icons/network/CloudUpload.vue
    A ui/packages/onms-ui/src/icons/network/Code.vue
    A ui/packages/onms-ui/src/icons/network/Compare.vue
    A ui/packages/onms-ui/src/icons/network/Compare1.vue
    A ui/packages/onms-ui/src/icons/network/Compliance.vue
    A ui/packages/onms-ui/src/icons/network/Configuration.vue
    A ui/packages/onms-ui/src/icons/network/Connection.vue
    A ui/packages/onms-ui/src/icons/network/ContainerAdd.vue
    A ui/packages/onms-ui/src/icons/network/ContainerTransient.vue
    A ui/packages/onms-ui/src/icons/network/ContainerUnknown.vue
    A ui/packages/onms-ui/src/icons/network/Database.vue
    A ui/packages/onms-ui/src/icons/network/Desktop.vue
    A ui/packages/onms-ui/src/icons/network/Digitize.vue
    A ui/packages/onms-ui/src/icons/network/DistributedMonitoring.vue
    A ui/packages/onms-ui/src/icons/network/ElectricalServices.vue
    A ui/packages/onms-ui/src/icons/network/EndUser.vue
    A ui/packages/onms-ui/src/icons/network/ExitCompare.vue
    A ui/packages/onms-ui/src/icons/network/ExitCompareModeAlt.vue
    A ui/packages/onms-ui/src/icons/network/ExtractData.vue
    A ui/packages/onms-ui/src/icons/network/Firewall.vue
    A ui/packages/onms-ui/src/icons/network/Instances.vue
    A ui/packages/onms-ui/src/icons/network/Inventory.vue
    A ui/packages/onms-ui/src/icons/network/InventoryAdd.vue
    A ui/packages/onms-ui/src/icons/network/InventoryAlt.vue
    A ui/packages/onms-ui/src/icons/network/InventoryConfirm.vue
    A ui/packages/onms-ui/src/icons/network/InventoryDelete.vue
    A ui/packages/onms-ui/src/icons/network/Laptop.vue
    A ui/packages/onms-ui/src/icons/network/LogFile.vue
    A ui/packages/onms-ui/src/icons/network/LoggerConfigs.vue
    A ui/packages/onms-ui/src/icons/network/Logs.vue
    A ui/packages/onms-ui/src/icons/network/LogsAlt.vue
    A ui/packages/onms-ui/src/icons/network/Microservices.vue
    A ui/packages/onms-ui/src/icons/network/Minion.vue
    A ui/packages/onms-ui/src/icons/network/MinionProfiles.vue
    A ui/packages/onms-ui/src/icons/network/Monitoring.vue
    A ui/packages/onms-ui/src/icons/network/NetworkProfiles.vue
    A ui/packages/onms-ui/src/icons/network/Nodes.vue
    A ui/packages/onms-ui/src/icons/network/Policy.vue
    A ui/packages/onms-ui/src/icons/network/Power.vue
    A ui/packages/onms-ui/src/icons/network/RouterLan.vue
    A ui/packages/onms-ui/src/icons/network/RouterWan.vue
    A ui/packages/onms-ui/src/icons/network/Security.vue
    A ui/packages/onms-ui/src/icons/network/SecurityScan.vue
    A ui/packages/onms-ui/src/icons/network/Server.vue
    A ui/packages/onms-ui/src/icons/network/ServerClock.vue
    A ui/packages/onms-ui/src/icons/network/Switch.vue
    A ui/packages/onms-ui/src/icons/network/Terminal.vue
    A ui/packages/onms-ui/src/icons/network/UpdateUtilities.vue
    A ui/packages/onms-ui/src/icons/network/Utilities.vue
    A ui/packages/onms-ui/src/icons/network/ViewCode.vue
    A ui/packages/onms-ui/src/icons/network/VirtualMachine.vue
    A ui/packages/onms-ui/src/icons/network/VirtualMachineAlt.vue
    A ui/packages/onms-ui/src/icons/network/VirtualMachineAlt2.vue
    A ui/packages/onms-ui/src/icons/network/WifiRouter.vue
    A ui/packages/onms-ui/src/icons/notification/Connected.vue
    A ui/packages/onms-ui/src/icons/notification/Error.vue
    A ui/packages/onms-ui/src/icons/notification/NotificationSelected.vue
    A ui/packages/onms-ui/src/icons/notification/NotificationSoundSelected.vue
    A ui/packages/onms-ui/src/icons/notification/NotificationsOff.vue
    A ui/packages/onms-ui/src/icons/notification/Unconnected.vue
    A ui/packages/onms-ui/src/icons/notification/Warning.vue
    A ui/packages/onms-ui/src/icons/notification/Wifi.vue
    A ui/packages/onms-ui/src/icons/notification/WifiNoConnection.vue
    A ui/packages/onms-ui/src/icons/notification/WifiOff.vue
    A ui/packages/onms-ui/src/icons/notification/WifiSignalBad.vue
    A ui/packages/onms-ui/src/icons/notification/WifiStatusBar.vue
    A ui/packages/onms-ui/src/icons/status/Available.vue
    A ui/packages/onms-ui/src/icons/status/Unavailable.vue
    M ui/scripts/generate-icons.mjs
    M ui/src/components/AdhocGraphs/AdhocChartToolbar.vue
    M ui/src/components/AdhocGraphs/AdhocGraphBuilder.vue
    M ui/src/components/AdhocGraphs/ExpressionEditor.vue
    M ui/src/components/AdhocGraphs/SeriesTable.vue
    M ui/src/components/Configuration/ConfigurationAdvancedPanel.vue
    M ui/src/components/Configuration/ConfigurationCopyPasteDisplay.vue
    M ui/src/components/Configuration/ConfigurationDrawer.vue
    M ui/src/components/Configuration/ConfigurationHelpPanel.vue
    M ui/src/components/Configuration/ConfigurationTable.vue
    M ui/src/components/Configuration/ProvisionDForm.vue
    M ui/src/components/Device/DCBGroupFilters.vue
    M ui/src/components/Device/DCBModalConfigDiffContent.vue
    M ui/src/components/Device/DCBModalViewHistoryContent.vue
    M ui/src/components/Device/DCBTable.vue
    M ui/src/components/Device/DCBTableStatusDropdown.vue
    M ui/src/components/EventConfigEventCreate/BasicInformation.vue
    M ui/src/components/EventConfigEventCreate/MaskElements.vue
    M ui/src/components/EventConfigEventCreate/MaskVarbinds.vue
    M ui/src/components/EventConfigEventCreate/VarbindsDecode.vue
    M ui/src/components/EventConfiguration/EventConfigSourceTable.vue
    M ui/src/components/EventConfiguration/EventConfigUploadFilesTab.vue
    M ui/src/components/EventConfigurationDetail/EventConfigEventTable.vue
    M ui/src/components/FileEditor/Console.vue
    M ui/src/components/FileEditor/FileSidebar.vue
    M ui/src/components/FileEditor/FileTreeItem.vue
    M ui/src/components/FileEditor/Help.vue
    M ui/src/components/FileEditor/TopBar.vue
    M ui/src/components/Logs/Editor.vue
    M ui/src/components/Map/MarkerClusterPopupContent.vue
    M ui/src/components/Map/MarkerPopup.vue
    M ui/src/components/Menu/Menubar.vue
    M ui/src/components/Menu/Search.vue
    M ui/src/components/Menu/SearchResult.vue
    M ui/src/components/Menu/SideMenu.vue
    M ui/src/components/Menu/UserNotificationsMenuItem.vue
    M ui/src/components/Menu/UserSelfServiceMenuItem.vue
    M ui/src/components/Menu/useMenuIcons.ts
    M ui/src/components/Menu/utils.ts
    M ui/src/components/Nodes/AssetFilterPanel.vue
    M ui/src/components/Nodes/ColumnSelectionDrawer.vue
    M ui/src/components/Nodes/ExtendedSearchPanel.vue
    M ui/src/components/Nodes/FlowTooltipCell.vue
    M ui/src/components/Nodes/NodeActionsDropdown.vue
    M ui/src/components/Nodes/NodeAdvancedFiltersDrawer.vue
    M ui/src/components/Nodes/NodeDownloadDropdown.vue
    M ui/src/components/Nodes/NodesTable.vue
    M ui/src/components/Resources/TimeControls.vue
    M ui/src/components/SCV/SCVAttribute.vue
    M ui/src/components/SCV/SCVForm.vue
    M ui/src/components/SCV/ScvInputIcon.vue
    M ui/src/components/SnmpConfiguration/SnmpConfigDefaultsPanel.vue
    M ui/src/components/SnmpConfiguration/SnmpConfigDefinitionBasicInformation.vue
    M ui/src/components/SnmpConfiguration/SnmpConfigDefinitionsTab.vue
    M ui/src/components/SnmpConfiguration/SnmpConfigDefinitionsTable.vue
    M ui/src/components/SnmpConfiguration/SnmpConfigLookupPanel.vue
    M ui/src/components/SnmpConfiguration/SnmpConfigProfileBasicInformation.vue
    M ui/src/components/SnmpConfiguration/SnmpConfigProfilesTab.vue
    M ui/src/components/SnmpConfiguration/SnmpConfigProfilesTable.vue
    M ui/src/components/SnmpConfiguration/SnmpConfigUploadDownloadTab.vue
    M ui/src/components/SnmpDataCollection/SnmpDataCollectionProfile/ProfileRrdSettingsTab.vue
    M ui/src/components/SnmpDataCollection/SnmpDataCollectionProfile/ProfileSourcesTab.vue
    M ui/src/components/SnmpDataCollection/SnmpDataCollectionProfile/SnmpDataCollectionProfileDetails.vue
    M ui/src/components/SnmpDataCollection/SnmpDataCollectionProfilesTable.vue
    M ui/src/components/SnmpDataCollection/SnmpDataCollectionSourceDetail/Drawer/MibGroupCreationDrawer.vue
    M ui/src/components/SnmpDataCollection/SnmpDataCollectionSourceDetail/Drawer/ResourceTypeCreationDrawer.vue
    M ui/src/components/SnmpDataCollection/SnmpDataCollectionSourceDetail/MibGroupsTable.vue
    M ui/src/components/SnmpDataCollection/SnmpDataCollectionSourceDetail/ResourceTypesTable.vue
    M ui/src/components/SnmpDataCollection/SnmpDataCollectionSourceDetail/SystemDefinitionsTable.vue
    M ui/src/components/SnmpDataCollection/SnmpDataCollectionSourceImport.vue
    M ui/src/components/SnmpDataCollection/SnmpDataCollectionSourcesTable.vue
    M ui/src/components/TrapdConfiguration/CreateSnmpV3User.vue
    M ui/src/components/TrapdConfiguration/GeneralConfiguration.vue
    M ui/src/components/TrapdConfiguration/SnmpV3UserManagement.vue
    M ui/src/components/TrapdConfiguration/TrapdAdvancedConfiguration.vue
    M ui/src/components/UsageStatistics/UsageStatisticsHeader.vue
    M ui/src/components/ZenithConnect/ZenithConnectRegisterResult.vue
    M ui/src/components/ZenithConnect/ZenithConnectView.vue
    R ui/src/components/icons/account/Group.vue
    R ui/src/components/icons/action/AccountCircle.vue
    R ui/src/components/icons/action/Add.vue
    R ui/src/components/icons/action/AddCircleAlt.vue
    R ui/src/components/icons/action/AddComment.vue
    R ui/src/components/icons/action/AddNote.vue
    R ui/src/components/icons/action/AddUser.vue
    R ui/src/components/icons/action/Archive.vue
    R ui/src/components/icons/action/AssignTo.vue
    R ui/src/components/icons/action/AttachEmail.vue
    R ui/src/components/icons/action/AttachFile.vue
    R ui/src/components/icons/action/Build.vue
    R ui/src/components/icons/action/Business.vue
    R ui/src/components/icons/action/Calendar.vue
    R ui/src/components/icons/action/CalendarEndDate.vue
    R ui/src/components/icons/action/CalendarStartDate.vue
    R ui/src/components/icons/action/Cancel.vue
    R ui/src/components/icons/action/ChangeOwner.vue
    R ui/src/components/icons/action/CheckCircle.vue
    R ui/src/components/icons/action/Cloud.vue
    R ui/src/components/icons/action/CloudDownload.vue
    R ui/src/components/icons/action/CloudUpload.vue
    R ui/src/components/icons/action/Code.vue
    R ui/src/components/icons/action/Comment.vue
    R ui/src/components/icons/action/ContactSupport.vue
    R ui/src/components/icons/action/ContentCopy.vue
    R ui/src/components/icons/action/ContentPaste.vue
    R ui/src/components/icons/action/Cycle.vue
    R ui/src/components/icons/action/Dashboard.vue
    R ui/src/components/icons/action/DateRange.vue
    R ui/src/components/icons/action/Delete.vue
    R ui/src/components/icons/action/DownloadFile.vue
    R ui/src/components/icons/action/Edit.vue
    R ui/src/components/icons/action/EditMode.vue
    R ui/src/components/icons/action/Email.vue
    R ui/src/components/icons/action/EmailDraft.vue
    R ui/src/components/icons/action/EmailInbox.vue
    R ui/src/components/icons/action/EmailSecure.vue
    R ui/src/components/icons/action/ExitToApp.vue
    R ui/src/components/icons/action/Expand.vue
    R ui/src/components/icons/action/Feedback.vue
    R ui/src/components/icons/action/FeedbackAlt.vue
    R ui/src/components/icons/action/FileCopy.vue
    R ui/src/components/icons/action/FilterAlt.vue
    R ui/src/components/icons/action/Group.vue
    R ui/src/components/icons/action/Help.vue
    R ui/src/components/icons/action/Hide.vue
    R ui/src/components/icons/action/Home.vue
    R ui/src/components/icons/action/Info.vue
    R ui/src/components/icons/action/InformationExchange.vue
    R ui/src/components/icons/action/LightDarkMode.vue
    R ui/src/components/icons/action/Link.vue
    R ui/src/components/icons/action/List.vue
    R ui/src/components/icons/action/Location.vue
    R ui/src/components/icons/action/LocationCity.vue
    R ui/src/components/icons/action/Lock.vue
    R ui/src/components/icons/action/LockPasswordProtected.vue
    R ui/src/components/icons/action/LogIn.vue
    R ui/src/components/icons/action/LogOut.vue
    R ui/src/components/icons/action/LoggerConfigs.vue
    R ui/src/components/icons/action/ManageProfile.vue
    R ui/src/components/icons/action/MarkComplete.vue
    R ui/src/components/icons/action/MarkIncomplete.vue
    R ui/src/components/icons/action/MarkRead.vue
    R ui/src/components/icons/action/MarkUnread.vue
    R ui/src/components/icons/action/Notifications.vue
    R ui/src/components/icons/action/Options.vue
    R ui/src/components/icons/action/Person.vue
    R ui/src/components/icons/action/Pin.vue
    R ui/src/components/icons/action/PlayCircle.vue
    R ui/src/components/icons/action/Print.vue
    R ui/src/components/icons/action/Remove.vue
    R ui/src/components/icons/action/RemoveUser.vue
    R ui/src/components/icons/action/Reporting.vue
    R ui/src/components/icons/action/Restore.vue
    R ui/src/components/icons/action/Search.vue
    R ui/src/components/icons/action/Send.vue
    R ui/src/components/icons/action/SendWorkflow.vue
    R ui/src/components/icons/action/Settings.vue
    R ui/src/components/icons/action/Share.vue
    R ui/src/components/icons/action/Sort.vue
    R ui/src/components/icons/action/Subscriptions.vue
    R ui/src/components/icons/action/SupportCenter.vue
    R ui/src/components/icons/action/Unlock.vue
    R ui/src/components/icons/action/UpdateSchedules.vue
    R ui/src/components/icons/action/UpdateUtilities.vue
    R ui/src/components/icons/action/UploadFile.vue
    R ui/src/components/icons/action/VerifedUser.vue
    R ui/src/components/icons/action/View.vue
    R ui/src/components/icons/action/ViewDetails.vue
    R ui/src/components/icons/action/Workflow.vue
    R ui/src/components/icons/communication/Certificate.vue
    R ui/src/components/icons/communication/CertificateAlt.vue
    R ui/src/components/icons/communication/Chat.vue
    R ui/src/components/icons/communication/Contacts.vue
    R ui/src/components/icons/communication/Documentation.vue
    R ui/src/components/icons/communication/IdCard.vue
    R ui/src/components/icons/communication/Phone.vue
    R ui/src/components/icons/content/BlogArticle.vue
    R ui/src/components/icons/content/Video.vue
    R ui/src/components/icons/datavis/AreaChart.vue
    R ui/src/components/icons/datavis/BarChart.vue
    R ui/src/components/icons/datavis/ColumnChart.vue
    R ui/src/components/icons/datavis/DonutChart.vue
    R ui/src/components/icons/datavis/Gauge.vue
    R ui/src/components/icons/datavis/LineChart.vue
    R ui/src/components/icons/datavis/PieChart.vue
    R ui/src/components/icons/datavis/PolarChart.vue
    R ui/src/components/icons/datavis/Reporting.vue
    R ui/src/components/icons/datavis/StackedBarChart.vue
    R ui/src/components/icons/datavis/StackedColumnChart.vue
    R ui/src/components/icons/datavis/TreeDiagram.vue
    R ui/src/components/icons/file/Attachment.vue
    R ui/src/components/icons/file/Folder.vue
    R ui/src/components/icons/file/FolderAdd.vue
    R ui/src/components/icons/file/FolderLocked.vue
    R ui/src/components/icons/file/FolderOpen.vue
    R ui/src/components/icons/file/Generic.vue
    R ui/src/components/icons/file/Image.vue
    R ui/src/components/icons/file/Pdf.vue
    R ui/src/components/icons/file/Text.vue
    R ui/src/components/icons/file/WordDoc.vue
    R ui/src/components/icons/file/Xls.vue
    R ui/src/components/icons/file/Zip.vue
    R ui/src/components/icons/hardware/ApplianceProfiles.vue
    R ui/src/components/icons/hardware/Appliances.vue
    R ui/src/components/icons/hardware/AppliancesAlt.vue
    R ui/src/components/icons/hardware/DesktopWindows.vue
    R ui/src/components/icons/hardware/Instances.vue
    R ui/src/components/icons/hardware/KeyboardArrowDown.vue
    R ui/src/components/icons/hardware/KeyboardArrowUp.vue
    R ui/src/components/icons/hardware/Laptop.vue
    R ui/src/components/icons/hardware/MinionProfiles.vue
    R ui/src/components/icons/hardware/Network.vue
    R ui/src/components/icons/hardware/NetworkProfiles.vue
    R ui/src/components/icons/hardware/Router.vue
    R ui/src/components/icons/hardware/Security.vue
    R ui/src/components/icons/hardware/Server.vue
    R ui/src/components/icons/hardware/VirtualMachine.vue
    R ui/src/components/icons/hardware/VirtualMachineAlt.vue
    R ui/src/components/icons/medical/Ambulance.vue
    R ui/src/components/icons/medical/CostSavings.vue
    R ui/src/components/icons/medical/Drug.vue
    R ui/src/components/icons/medical/DrugGroupId.vue
    R ui/src/components/icons/medical/Hospital.vue
    R ui/src/components/icons/medical/Patient.vue
    R ui/src/components/icons/medical/Payor.vue
    R ui/src/components/icons/medical/Provider.vue
    R ui/src/components/icons/medical/ProviderOffice.vue
    R ui/src/components/icons/medical/Treatment.vue
    R ui/src/components/icons/medical/TreatmentCycle.vue
    R ui/src/components/icons/medical/TreatmentSchedule.vue
    R ui/src/components/icons/medical/Vitals.vue
    R ui/src/components/icons/navigation/Apps.vue
    R ui/src/components/icons/navigation/AppsGetMore.vue
    R ui/src/components/icons/navigation/ArrowBack.vue
    R ui/src/components/icons/navigation/ArrowDropDown.vue
    R ui/src/components/icons/navigation/Cancel.vue
    R ui/src/components/icons/navigation/ChevronLeft.vue
    R ui/src/components/icons/navigation/ChevronRight.vue
    R ui/src/components/icons/navigation/ExpandLess.vue
    R ui/src/components/icons/navigation/ExpandMore.vue
    R ui/src/components/icons/navigation/FirstPage.vue
    R ui/src/components/icons/navigation/Fullscreen.vue
    R ui/src/components/icons/navigation/FullscreenExit.vue
    R ui/src/components/icons/navigation/GridView.vue
    R ui/src/components/icons/navigation/LastPage.vue
    R ui/src/components/icons/navigation/Menu.vue
    R ui/src/components/icons/navigation/MenuClose.vue
    R ui/src/components/icons/navigation/MenuOpen.vue
    R ui/src/components/icons/navigation/MoreHoriz.vue
    R ui/src/components/icons/navigation/MoreVert.vue
    R ui/src/components/icons/navigation/Refresh.vue
    R ui/src/components/icons/navigation/SubdirectoryArrowLeft.vue
    R ui/src/components/icons/navigation/SubdirectoryArrowRight.vue
    R ui/src/components/icons/navigation/UnfoldLess.vue
    R ui/src/components/icons/navigation/UnfoldMore.vue
    R ui/src/components/icons/network/AggregationLayer.vue
    R ui/src/components/icons/network/AggregationLayerAlt1.vue
    R ui/src/components/icons/network/AggregationLayerAlt2.vue
    R ui/src/components/icons/network/AggregationLayerAlt3.vue
    R ui/src/components/icons/network/AggregationLayerAlt4.vue
    R ui/src/components/icons/network/AggregationLayerAlt5.vue
    R ui/src/components/icons/network/ApiConfig.vue
    R ui/src/components/icons/network/ApiEndpoints.vue
    R ui/src/components/icons/network/ApplianceProfiles.vue
    R ui/src/components/icons/network/Appliances.vue
    R ui/src/components/icons/network/AppliancesAlt.vue
    R ui/src/components/icons/network/Build.vue
    R ui/src/components/icons/network/CertificateAlt.vue
    R ui/src/components/icons/network/Cloud.vue
    R ui/src/components/icons/network/CloudBackUp.vue
    R ui/src/components/icons/network/CloudDownload.vue
    R ui/src/components/icons/network/CloudService.vue
    R ui/src/components/icons/network/CloudUpload.vue
    R ui/src/components/icons/network/Code.vue
    R ui/src/components/icons/network/Compare.vue
    R ui/src/components/icons/network/Compare1.vue
    R ui/src/components/icons/network/Compliance.vue
    R ui/src/components/icons/network/Configuration.vue
    R ui/src/components/icons/network/Connection.vue
    R ui/src/components/icons/network/ContainerAdd.vue
    R ui/src/components/icons/network/ContainerTransient.vue
    R ui/src/components/icons/network/ContainerUnknown.vue
    R ui/src/components/icons/network/Database.vue
    R ui/src/components/icons/network/Desktop.vue
    R ui/src/components/icons/network/Digitize.vue
    R ui/src/components/icons/network/DistributedMonitoring.vue
    R ui/src/components/icons/network/ElectricalServices.vue
    R ui/src/components/icons/network/EndUser.vue
    R ui/src/components/icons/network/ExitCompare.vue
    R ui/src/components/icons/network/ExitCompareModeAlt.vue
    R ui/src/components/icons/network/ExtractData.vue
    R ui/src/components/icons/network/Firewall.vue
    R ui/src/components/icons/network/Instances.vue
    R ui/src/components/icons/network/Inventory.vue
    R ui/src/components/icons/network/InventoryAdd.vue
    R ui/src/components/icons/network/InventoryAlt.vue
    R ui/src/components/icons/network/InventoryConfirm.vue
    R ui/src/components/icons/network/InventoryDelete.vue
    R ui/src/components/icons/network/Laptop.vue
    R ui/src/components/icons/network/LogFile.vue
    R ui/src/components/icons/network/LoggerConfigs.vue
    R ui/src/components/icons/network/Logs.vue
    R ui/src/components/icons/network/LogsAlt.vue
    R ui/src/components/icons/network/Microservices.vue
    R ui/src/components/icons/network/Minion.vue
    R ui/src/components/icons/network/MinionProfiles.vue
    R ui/src/components/icons/network/Monitoring.vue
    R ui/src/components/icons/network/NetworkProfiles.vue
    R ui/src/components/icons/network/Nodes.vue
    R ui/src/components/icons/network/Policy.vue
    R ui/src/components/icons/network/Power.vue
    R ui/src/components/icons/network/RouterLan.vue
    R ui/src/components/icons/network/RouterWan.vue
    R ui/src/components/icons/network/Security.vue
    R ui/src/components/icons/network/SecurityScan.vue
    R ui/src/components/icons/network/Server.vue
    R ui/src/components/icons/network/ServerClock.vue
    R ui/src/components/icons/network/Switch.vue
    R ui/src/components/icons/network/Terminal.vue
    R ui/src/components/icons/network/UpdateUtilities.vue
    R ui/src/components/icons/network/Utilities.vue
    R ui/src/components/icons/network/ViewCode.vue
    R ui/src/components/icons/network/VirtualMachine.vue
    R ui/src/components/icons/network/VirtualMachineAlt.vue
    R ui/src/components/icons/network/VirtualMachineAlt2.vue
    R ui/src/components/icons/network/WifiRouter.vue
    R ui/src/components/icons/notification/Connected.vue
    R ui/src/components/icons/notification/Error.vue
    R ui/src/components/icons/notification/NotificationSelected.vue
    R ui/src/components/icons/notification/NotificationSoundSelected.vue
    R ui/src/components/icons/notification/NotificationsOff.vue
    R ui/src/components/icons/notification/Unconnected.vue
    R ui/src/components/icons/notification/Warning.vue
    R ui/src/components/icons/notification/Wifi.vue
    R ui/src/components/icons/notification/WifiNoConnection.vue
    R ui/src/components/icons/notification/WifiOff.vue
    R ui/src/components/icons/notification/WifiSignalBad.vue
    R ui/src/components/icons/notification/WifiStatusBar.vue
    R ui/src/components/icons/status/Available.vue
    R ui/src/components/icons/status/Unavailable.vue
    M ui/src/containers/EventConfigurationDetail.vue
    M ui/src/containers/SnmpDataCollection.vue
    M ui/src/containers/SnmpDataCollectionSourceDetail.vue
    M ui/tests/components/AdhocGraphs/AdhocGraphBuilder.test.ts

  Log Message:
  -----------
  NMS-20243: Move icons to onms-ui (#8793)

* NMS-20243: Move icons into the @opennms/onms-ui seam package

Icons were vendored at ui/src/components/icons/, reachable only through
the core app's own Vite alias. That left OnmsIcon shipping the renderer
while the app shipped every payload, and meant no plugin could import an
icon at all. They now live alongside OnmsIcon at
packages/onms-ui/src/icons/<category>/<Name>.vue.

Exposed via a new "./icons/*" subpath export rather than the package
barrel.

Also folds in SearchGlyph.vue, which the package had vendored by hand and
which was byte-identical to action/Search.vue.

* NMS-20243: Register onms-tooltip in AdhocGraphBuilder tests (pre-existing issue, cleans up test noise).

* NMS-20243: Update stale src/components/icons references after the icon move


  Commit: 3d12cc77248140bee93b4557fb1b931abf8d1d97
      https://github.com/OpenNMS/opennms/commit/3d12cc77248140bee93b4557fb1b931abf8d1d97
  Author: Christian Pape <[email protected]>
  Date:   2026-08-18 (Tue, 18 Aug 2026)

  Changed paths:
    M container/karaf/pom.xml
    M container/karaf/src/main/filtered-resources/etc/org.ops4j.pax.logging.cfg
    M container/karaf/src/main/filtered-resources/etc/overrides.properties
    M container/karaf/src/main/internal/features-processing.xml
    M container/shared/pom.xml
    M container/shared/src/main/filtered-resources/etc/overrides.properties
    M container/shared/src/main/internal/features-processing.xml
    M container/shared/src/main/resources/etc/org.ops4j.pax.logging.cfg
    M pom.xml

  Log Message:
  -----------
  NMS-20177: Updated log4j version


  Commit: a845cc20986154061cfaaf4a08131e519ebe29eb
      https://github.com/OpenNMS/opennms/commit/a845cc20986154061cfaaf4a08131e519ebe29eb
  Author: CI/CD System <[email protected]>
  Date:   2026-08-18 (Tue, 18 Aug 2026)

  Changed paths:
    M container/features/src/main/resources/overrides.properties
    M container/karaf/pom.xml
    M container/karaf/src/main/filtered-resources/etc/org.ops4j.pax.logging.cfg
    M container/karaf/src/main/internal/features-processing.xml
    M container/shared/pom.xml
    M container/shared/src/main/filtered-resources/etc/overrides.properties
    M container/shared/src/main/internal/features-processing.xml
    M container/shared/src/main/resources/etc/org.ops4j.pax.logging.cfg
    M pom.xml

  Log Message:
  -----------
  Merge remote-tracking branch 'origin/foundation-2024' into foundation-2025


  Commit: 146d78018632ee545c5436d924bf12d0fc847d8d
      https://github.com/OpenNMS/opennms/commit/146d78018632ee545c5436d924bf12d0fc847d8d
  Author: Jose Anes <[email protected]>
  Date:   2026-08-18 (Tue, 18 Aug 2026)

  Changed paths:
    M .circleci/README.md
    M .circleci/config.yml
    M .circleci/epoch
    M .circleci/main/jobs/build/build-ui.yml
    M .circleci/main/jobs/publish.yml
    M .circleci/main/jobs/tests/integration/integration-test.yml
    M .circleci/main/parameters.yml
    M .circleci/main/workflows/workflows_v2.json
    M .circleci/pyscripts/library/cci_components/workflow.py
    M .circleci/pyscripts/process_generate.py
    M .circleci/trivy-config/trivyignore
    M .gitignore
    R bin/adoc-to-markdown.sh
    R bin/bamboo.pl
    R bin/deploy.pl
    R bin/nightly-debian.sh
    R bin/nightly-jar.sh
    R bin/nightly-rpm.sh
    R bin/repo.spec
    R bin/run-tests.pl
    R bin/seriallist.sh
    M container/features/pom.xml
    M container/features/src/main/resources/features-core.xml
    M container/features/src/main/resources/features-sentinel.xml
    M container/features/src/main/resources/features.xml
    M container/karaf/pom.xml
    M container/karaf/src/main/filtered-resources/etc/custom.properties
    M container/karaf/src/main/internal/features-processing.xml
    A container/pax-url-aether-patch/pom.xml
    A container/plexus-utils-relocated/pom.xml
    M container/pom.xml
    M container/shared/pom.xml
    M container/shared/src/main/internal/features-processing.xml
    M core/daemon/pom.xml
    M core/daemon/src/main/java/org/opennms/netmgt/vmmgr/Invoker.java
    M core/daemon/src/main/java/org/opennms/netmgt/vmmgr/Manager.java
    M core/daemon/src/main/java/org/opennms/netmgt/vmmgr/Starter.java
    A core/daemon/src/main/java/org/opennms/netmgt/vmmgr/StartupLifecycleHook.java
    M core/ipc/sink/kafka/itests/src/test/java/org/opennms/core/ipc/sink/kafka/itests/HeartbeatSinkIT.java
    M core/ipc/sink/kafka/server/src/main/java/org/opennms/core/ipc/sink/kafka/server/KafkaMessageConsumerManager.java
    M core/lib/src/main/java/org/opennms/core/utils/ConfigFileConstants.java
    M core/tracing/jaeger-osgi/pom.xml
    M core/upgrade/src/test/java/org/opennms/upgrade/implementations/EOLServiceConfigMigratorOfflineTest.java
    M core/upgrade/src/test/java/org/opennms/upgrade/implementations/ServiceConfig1701MigratorOfflineTest.java
    M core/upgrade/src/test/java/org/opennms/upgrade/implementations/ServiceConfigMigratorOfflineTest.java
    M core/web-assets/.node-version
    M core/web-assets/package.json
    M core/web-assets/pnpm-lock.yaml
    M core/web-assets/src/main/assets/js/apps/notifications/index.js
    M core/web-assets/src/main/assets/js/vendor/ipaddress-js.js
    M core/web-assets/src/main/assets/style/opennms-theme.scss
    M core/web-assets/src/test/javascript/ipaddress.test.js
    M debian/changelog
    R debian/opennms-contrib.dirs
    R dependencies/activemq-web/pom.xml
    R dependencies/activemq-web/src/license/THIRD-PARTY.properties
    M dependencies/activemq/pom.xml
    A dependencies/angus-mail-shaded/pom.xml
    R dependencies/asterisk/pom.xml
    M dependencies/cxf/pom.xml
    R dependencies/javamail/pom.xml
    R dependencies/javamail/src/license/THIRD-PARTY.properties
    M dependencies/jaxb/pom.xml
    M dependencies/pom.xml
    R dependencies/smack/pom.xml
    M dependencies/spring-security/pom.xml
    R dependencies/twitter4j/pom.xml
    M docs/antora.yml
    M docs/modules/development/pages/rest/info.adoc
    M docs/modules/operation/nav.adoc
    M docs/modules/operation/pages/deep-dive/admin/configuration/token-authentication.adoc
    A docs/modules/operation/pages/deep-dive/admin/high-availability.adoc
    M docs/modules/operation/pages/deep-dive/events/event-tokens.adoc
    M docs/modules/operation/pages/deep-dive/events/scriptd.adoc
    M docs/modules/operation/pages/deep-dive/meta-data.adoc
    M docs/modules/operation/pages/deep-dive/notifications/bonus-strategies.adoc
    M docs/modules/operation/pages/deep-dive/notifications/commands.adoc
    M docs/modules/operation/pages/deep-dive/notifications/configuration.adoc
    M docs/modules/operation/pages/deep-dive/notifications/introduction.adoc
    R docs/modules/operation/pages/deep-dive/notifications/strategies/mattermost.adoc
    A docs/modules/operation/pages/deep-dive/notifications/strategies/scripting.adoc
    R docs/modules/operation/pages/deep-dive/notifications/strategies/slack.adoc
    A docs/modules/operation/pages/deep-dive/notifications/strategies/ticket.adoc
    A docs/modules/operation/pages/deep-dive/notifications/strategies/webhook.adoc
    M docs/modules/operation/pages/quick-start/beyond-qs.adoc
    M docs/modules/operation/pages/quick-start/notifications.adoc
    M docs/modules/reference/pages/configuration/system-properties.adoc
    M docs/modules/reference/pages/daemons/daemon-config-files/notifd.adoc
    M docs/modules/reference/pages/daemons/introduction.adoc
    M docs/modules/reference/pages/karaf-shell/karaf-shell.adoc
    M docs/modules/reference/pages/provisioning/detectors/BsfDetector.adoc
    M docs/modules/reference/pages/service-assurance/monitors/BSFMonitor.adoc
    M docs/modules/reference/pages/service-assurance/monitors/MailTransportMonitor.adoc
    M docs/modules/releasenotes/pages/changelog.adoc
    M docs/modules/releasenotes/pages/whatsnew.adoc
    M features/config/pom.xml
    M features/config/test/src/test/java/org/opennms/features/config/service/util/BeanFieldCopyUtilTest.java
    R features/config/util/pom.xml
    R features/config/util/src/license/THIRD-PARTY.properties
    R features/config/util/src/main/java/org/opennms/features/config/util/json/YesNoDeserializer.java
    R features/config/util/src/test/java/org/opennms/features/config/util/YesNoDeserializerTest.java
    M features/distributed/dao/api/pom.xml
    M features/distributed/dao/impl/pom.xml
    M features/distributed/kv-store/blob/blob-itests/pom.xml
    M features/events/daemon/src/main/java/org/opennms/netmgt/eventd/Eventd.java
    M features/events/syslog/pom.xml
    M features/events/syslog/src/main/java/org/opennms/netmgt/syslogd/RadixTreeParser.java
    M features/events/syslog/src/test/java/org/opennms/netmgt/syslogd/SyslogMessageTest.java
    R features/executor-factory/cassandra/pom.xml
    R features/executor-factory/cassandra/src/license/THIRD-PARTY.properties
    R features/executor-factory/cassandra/src/main/java/org/opennms/core/concurrent/cassandra/ExecutorFactoryCassandraSEPImpl.java
    R features/executor-factory/pom.xml
    A features/ha-management/ha-api/pom.xml
    A features/ha-management/ha-api/src/main/java/org/opennms/netmgt/ha/HaConfiguration.java
    A features/ha-management/ha-api/src/main/java/org/opennms/netmgt/ha/HaInstanceState.java
    A features/ha-management/ha-api/src/main/java/org/opennms/netmgt/ha/HaMode.java
    A features/ha-management/ha-api/src/main/java/org/opennms/netmgt/ha/HaRole.java
    A features/ha-management/ha-daemon/pom.xml
    A features/ha-management/ha-daemon/src/main/java/org/opennms/netmgt/ha/DbConnectionFactory.java
    A features/ha-management/ha-daemon/src/main/java/org/opennms/netmgt/ha/HaConfigSyncer.java
    A features/ha-management/ha-daemon/src/main/java/org/opennms/netmgt/ha/HaHeartbeatWriter.java
    A features/ha-management/ha-daemon/src/main/java/org/opennms/netmgt/ha/HaStartupCoordinator.java
    A features/ha-management/ha-daemon/src/main/java/org/opennms/netmgt/ha/HaStartupLifecycleHook.java
    A features/ha-management/ha-daemon/src/main/java/org/opennms/netmgt/ha/HaStatusSchema.java
    A features/ha-management/ha-daemon/src/main/java/org/opennms/netmgt/ha/HaSyncFiles.java
    A features/ha-management/ha-daemon/src/main/resources/META-INF/services/org.opennms.netmgt.vmmgr.StartupLifecycleHook
    A features/ha-management/ha-daemon/src/test/java/org/opennms/netmgt/ha/DbConnectionFactoryTest.java
    A features/ha-management/ha-daemon/src/test/java/org/opennms/netmgt/ha/HaConfigSyncerTest.java
    A features/ha-management/ha-daemon/src/test/java/org/opennms/netmgt/ha/HaStartupCoordinatorTest.java
    A features/ha-management/ha-daemon/src/test/java/org/opennms/netmgt/ha/HaStartupLifecycleHookTest.java
    A features/ha-management/ha-rest/pom.xml
    A features/ha-management/ha-rest/src/main/java/org/opennms/netmgt/ha/rest/HaRestService.java
    A features/ha-management/ha-rest/src/main/java/org/opennms/netmgt/ha/rest/dto/HaInstanceStatusDto.java
    A features/ha-management/ha-rest/src/main/java/org/opennms/netmgt/ha/rest/dto/HaStatusCollectionDto.java
    A features/ha-management/ha-rest/src/main/java/org/opennms/netmgt/ha/rest/impl/HaRestServiceImpl.java
    A features/ha-management/ha-rest/src/main/resources/OSGI-INF/blueprint/blueprint.xml
    A features/ha-management/ha-shell/pom.xml
    A features/ha-management/ha-shell/src/main/java/org/opennms/netmgt/ha/shell/HaConfigCommand.java
    A features/ha-management/ha-shell/src/main/java/org/opennms/netmgt/ha/shell/HaFailoverCommand.java
    A features/ha-management/ha-shell/src/main/java/org/opennms/netmgt/ha/shell/HaStatusCommand.java
    A features/ha-management/pom.xml
    M features/jest/dependencies/pom.xml
    M features/jest/feature/pom.xml
    M features/minion/repository/pom.xml
    M features/minion/repository/src/assembly/repo.xml
    M features/newts-repository-converter/pom.xml
    M features/newts/pom.xml
    M features/notifications/ticket-strategy/src/main/java/org/opennms/netmgt/notifd/TicketNotificationStrategy.java
    M features/notifications/ticket-strategy/src/test/java/org/opennms/netmgt/notifd/TicketNotificationStrategyTest.java
    R features/nrtg/commander/logs/NRTCollector/NRTCollector.log
    R features/nrtg/commander/pom.xml
    R features/nrtg/commander/src/license/THIRD-PARTY.properties
    R features/nrtg/commander/src/main/java/org/opennms/nrtg/commander/internal/CollectionCommanderStarter.java
    R features/nrtg/commander/src/main/java/org/opennms/nrtg/commander/internal/JmsExceptionListener.java
    R features/nrtg/commander/src/main/java/org/opennms/nrtg/commander/internal/JobPublisher.java
    R features/nrtg/commander/src/main/java/org/opennms/nrtg/commander/internal/PooledJobPublisher.java
    R features/nrtg/commander/src/main/java/org/opennms/nrtg/commander/internal/SimpleJobPublisher.java
    R features/nrtg/commander/src/main/java/org/opennms/nrtg/commander/internal/config/AppConfig.java
    R features/nrtg/commander/src/main/resources/logback.xml
    R features/nrtg/commander/src/test/resources/logback-test.xml
    R features/nrtg/jar/nrtcollector/logs/NRTCollector/NRTCollector.log
    R features/nrtg/jar/nrtcollector/pom.xml
    R features/nrtg/jar/nrtcollector/src/license/THIRD-PARTY.properties
    R features/nrtg/jar/nrtcollector/src/main/java/org/opennms/nrtg/jar/nrtcollector/AppConfig.java
    R features/nrtg/jar/nrtcollector/src/main/java/org/opennms/nrtg/jar/nrtcollector/NrtCollectorStarter.java
    R features/nrtg/jar/nrtcollector/src/main/resources/OSGI-INF/blueprint/blueprint.xml
    R features/nrtg/jar/nrtcollector/src/main/resources/logback.xml
    R features/nrtg/jar/pom.xml
    M features/nrtg/nrtcollector/pom.xml
    M features/nrtg/pom.xml
    M features/nrtg/protocolcollector/tca/pom.xml
    R features/nrtg/system-exports/pom.xml
    M features/poller/monitors/core/pom.xml
    M features/poller/monitors/core/src/main/java/org/opennms/netmgt/poller/monitors/MailTransportMonitor.java
    M features/poller/pom.xml
    R features/poller/runtime/pom.xml
    M features/pom.xml
    M features/reporting/dao/pom.xml
    M features/reporting/sdo/pom.xml
    M features/springframework-security/src/main/java/org/opennms/web/springframework/security/LoginModuleUtils.java
    A features/springframework-security/src/test/java/org/opennms/web/springframework/security/LoginModuleUtilsTest.java
    M features/ticketing/jira-client/pom.xml
    M features/topology-map/poms/pom.xml
    R features/topology-map/poms/wrappers/pom.xml
    M features/wsman/pom.xml
    M integration-tests/config/pom.xml
    M integration-tests/config/src/test/java/org/opennms/netmgt/config/WillItUnmarshalIT.java
    M opennms-ackd/pom.xml
    M opennms-ackd/src/main/java/org/opennms/netmgt/ackd/readers/MailAckProcessor.java
    M opennms-ackd/src/test/java/org/opennms/netmgt/ackd/readers/JavaMailAckReaderIT.java
    M opennms-alarms/bsf-northbounder/pom.xml
    M opennms-alarms/bsf-northbounder/src/main/java/org/opennms/netmgt/alarmd/northbounder/bsf/BSFEngineHandler.java
    M opennms-alarms/bsf-northbounder/src/main/resources/xsds/bsf-northbounder-configuration.xsd
    R opennms-alarms/http-northbounder/pom.xml
    R opennms-alarms/http-northbounder/src/license/THIRD-PARTY.properties
    R opennms-alarms/http-northbounder/src/main/java/org/opennms/netmgt/alarmd/northbounder/http/HttpNorthbounder.java
    R opennms-alarms/http-northbounder/src/main/java/org/opennms/netmgt/alarmd/northbounder/http/HttpNorthbounderConfig.java
    R opennms-alarms/http-northbounder/src/main/resources/META-INF/opennms/component-dao.xml
    R opennms-alarms/http-northbounder/src/test/java/org/opennms/netmgt/alarmd/northbounder/http/HttpNorthBounderTest.java
    R opennms-alarms/http-northbounder/src/test/java/org/opennms/netmgt/alarmd/northbounder/http/JAXBTest.java
    R opennms-alarms/http-northbounder/src/test/resources/test-context.xml
    M opennms-alarms/pom.xml
    M opennms-assemblies/minion/src/main/filtered/debian/changelog
    M opennms-assemblies/sentinel/src/main/filtered/debian/changelog
    M opennms-assemblies/webapp-full/pom.xml
    R opennms-asterisk/pom.xml
    R opennms-asterisk/src/license/THIRD-PARTY.properties
    R opennms-asterisk/src/main/java/org/opennms/netmgt/asterisk/agi/AsteriskGateway.java
    R opennms-asterisk/src/main/java/org/opennms/netmgt/asterisk/agi/jmx/AsteriskGateway.java
    R opennms-asterisk/src/main/java/org/opennms/netmgt/asterisk/agi/jmx/AsteriskGatewayMBean.java
    R opennms-asterisk/src/main/java/org/opennms/netmgt/asterisk/agi/scripts/BaseOnmsAgiScript.java
    R opennms-asterisk/src/main/java/org/opennms/netmgt/asterisk/agi/scripts/LouieLouieLyricsAgiScript.java
    R opennms-asterisk/src/main/java/org/opennms/netmgt/asterisk/agi/scripts/ReadNoticeDetailsAgiScript.java
    R opennms-asterisk/src/main/java/org/opennms/netmgt/asterisk/monitor/AsteriskSIPPeerMonitor.java
    R opennms-asterisk/src/main/java/org/opennms/netmgt/asterisk/utils/AsteriskConfig.java
    R opennms-asterisk/src/main/java/org/opennms/netmgt/asterisk/utils/AsteriskOriginator.java
    R opennms-asterisk/src/main/java/org/opennms/netmgt/asterisk/utils/AsteriskOriginatorException.java
    R opennms-asterisk/src/main/java/org/opennms/netmgt/asterisk/utils/AsteriskUtils.java
    R opennms-asterisk/src/main/java/org/opennms/netmgt/notifd/asterisk/AsteriskOriginateNotificationStrategy.java
    R opennms-asterisk/src/main/resources/META-INF/opennms/applicationContext-asteriskGateway.xml
    R opennms-asterisk/src/main/resources/META-INF/services/org.opennms.netmgt.poller.ServiceMonitor
    R opennms-asterisk/src/main/resources/beanRefContext.xml
    M opennms-base-assembly/pom.xml
    A opennms-base-assembly/src/main/filtered-meridian/etc/ha-configuration.xml
    R opennms-base-assembly/src/main/filtered/bin/microblog-auth
    M opennms-base-assembly/src/main/filtered/bin/newts-repository-converter
    R opennms-base-assembly/src/main/filtered/etc/actiond-configuration.xml
    R opennms-base-assembly/src/main/filtered/etc/ami-config.xml
    R opennms-base-assembly/src/main/filtered/etc/asterisk-configuration.properties
    M opennms-base-assembly/src/main/filtered/etc/bsf-northbounder-configuration.xml
    M opennms-base-assembly/src/main/filtered/etc/examples/destinationPaths.xml
    M opennms-base-assembly/src/main/filtered/etc/examples/event-proxy/scriptd-configuration.xml
    M opennms-base-assembly/src/main/filtered/etc/examples/javamail-configuration.properties
    M opennms-base-assembly/src/main/filtered/etc/examples/notificationCommands.xml
    M opennms-base-assembly/src/main/filtered/etc/examples/scriptd-configuration.xml
    R opennms-base-assembly/src/main/filtered/etc/examples/scriptd-event-forwarder.bsh
    A opennms-base-assembly/src/main/filtered/etc/examples/scriptd-event-forwarder.groovy
    M opennms-base-assembly/src/main/filtered/etc/examples/service-configuration.xml.default
    M opennms-base-assembly/src/main/filtered/etc/javamail-configuration.properties
    M opennms-base-assembly/src/main/filtered/etc/javamail-configuration.xml
    M opennms-base-assembly/src/main/filtered/etc/log4j2.xml
    R opennms-base-assembly/src/main/filtered/etc/microblog-configuration.xml
    M opennms-base-assembly/src/main/filtered/etc/notificationCommands.xml
    M opennms-base-assembly/src/main/filtered/etc/opennms.properties
    M opennms-base-assembly/src/main/filtered/etc/opennms.service
    M opennms-base-assembly/src/main/filtered/etc/scriptd-configuration.xml
    M opennms-base-assembly/src/main/filtered/etc/service-configuration.xml
    R opennms-base-assembly/src/main/filtered/etc/xmpp-configuration.properties
    M opennms-config-api/src/main/java/org/opennms/netmgt/config/api/UserConfig.java
    M opennms-config-model/pom.xml
    R opennms-config-model/src/main/java/org/opennms/netmgt/config/actiond/ActiondConfiguration.java
    R opennms-config-model/src/main/java/org/opennms/netmgt/config/actiond/package-info.java
    R opennms-config-model/src/main/java/org/opennms/netmgt/config/ami/AmiAgentConfig.java
    R opennms-config-model/src/main/java/org/opennms/netmgt/config/ami/AmiConfig.java
    R opennms-config-model/src/main/java/org/opennms/netmgt/config/ami/Definition.java
    R opennms-config-model/src/main/java/org/opennms/netmgt/config/ami/Range.java
    R opennms-config-model/src/main/java/org/opennms/netmgt/config/ami/package-info.java
    R opennms-config-model/src/main/java/org/opennms/netmgt/config/microblog/MicroblogConfiguration.java
    R opennms-config-model/src/main/java/org/opennms/netmgt/config/microblog/MicroblogProfile.java
    R opennms-config-model/src/main/java/org/opennms/netmgt/config/microblog/package-info.java
    M opennms-config-model/src/main/resources/defaults/service-configuration.xml
    R opennms-config-model/src/main/resources/xsds/actiond-configuration.xsd
    R opennms-config-model/src/main/resources/xsds/ami-config.xsd
    R opennms-config-model/src/main/resources/xsds/microblog-configuration.xsd
    M opennms-config-model/src/main/resources/xsds/users.xsd
    R opennms-config-model/src/test/java/org/opennms/netmgt/config/actiond/ActiondConfigurationTest.java
    R opennms-config-model/src/test/java/org/opennms/netmgt/config/ami/AmiConfigTest.java
    R opennms-config-model/src/test/java/org/opennms/netmgt/config/microblog/MicroblogConfigurationTest.java
    M opennms-config-model/src/test/java/org/opennms/netmgt/config/scriptd/ScriptdConfigurationTest.java
    M opennms-config-tester/src/main/resources/META-INF/opennms/applicationContext-configTester.xml
    M opennms-config-tester/src/test/java/org/opennms/netmgt/config/tester/ConfigTesterTest.java
    R opennms-config/src/main/java/org/opennms/netmgt/config/ActiondConfigFactory.java
    R opennms-config/src/main/java/org/opennms/netmgt/config/AmiPeerFactory.java
    M opennms-config/src/main/java/org/opennms/netmgt/config/NotificationManager.java
    M opennms-config/src/main/java/org/opennms/netmgt/config/UserManager.java
    A opennms-config/src/main/java/org/opennms/netmgt/config/tokenauth/TokenScope.java
    M opennms-config/src/main/resources/META-INF/opennms/applicationContext-token-auth.xml
    M opennms-config/src/main/resources/META-INF/opennms/component-dao.xml
    R opennms-config/src/test/java/org/opennms/netmgt/config/AmiPeerFactoryTest.java
    A opennms-config/src/test/java/org/opennms/netmgt/config/tokenauth/TokenScopeTest.java
    R opennms-config/src/test/resources/etc/ami-config.xml
    M opennms-container/common.mk
    M opennms-container/core/Dockerfile
    M opennms-container/core/container-fs/confd/templates/service-configuration.xml.tmpl
    M opennms-container/core/container-fs/health.sh
    M opennms-container/minion/Dockerfile
    M opennms-container/sentinel/Dockerfile
    M opennms-correlation/drools-correlation-engine/pom.xml
    M opennms-correlation/drools-correlation-engine/src/test/java/org/opennms/netmgt/correlation/drools/DroolsConfigurationTest.java
    R opennms-dao-api/src/main/java/org/opennms/netmgt/dao/api/MicroblogConfigurationDao.java
    R opennms-dao/src/main/java/org/opennms/netmgt/dao/jaxb/DefaultMicroblogConfigurationDao.java
    M opennms-enterprise-reporting/opennms-reportd/pom.xml
    M opennms-enterprise-reporting/opennms-reportd/src/main/java/org/opennms/netmgt/reporting/service/JavaMailDeliveryService.java
    M opennms-full-assembly/pom.xml
    M opennms-full-assembly/src/assembly/components/osgi.xml
    M opennms-full-assembly/src/license/THIRD-PARTY.properties
    M opennms-javamail/opennms-javamail-api/pom.xml
    M opennms-javamail/opennms-javamail-api/src/main/java/org/opennms/javamail/JavaMailer.java
    M opennms-javamail/opennms-javamail-api/src/main/java/org/opennms/javamail/JavaMailer2.java
    M opennms-javamail/opennms-javamail-api/src/main/java/org/opennms/javamail/JavaMailerConfig.java
    M opennms-javamail/opennms-javamail-api/src/main/java/org/opennms/javamail/JavaReadMailer.java
    M opennms-javamail/opennms-javamail-api/src/main/java/org/opennms/javamail/JavaSendMailer.java
    A opennms-javamail/opennms-javamail-api/src/test/java/org/opennms/javamail/JavaMailerConfigTokenTest.java
    M opennms-javamail/opennms-javamail-api/src/test/java/org/opennms/javamail/JavaMailerTest.java
    A opennms-javamail/opennms-javamail-api/src/test/java/org/opennms/javamail/JavaMailerWireTest.java
    M opennms-javamail/opennms-javamail-api/src/test/java/org/opennms/javamail/JavaReadMailerTest.java
    M opennms-javamail/opennms-javamail-api/src/test/java/org/opennms/javamail/JavaSendMailerTest.java
    A opennms-openapi-docs/README.adoc
    A opennms-openapi-docs/pom.xml
    A opennms-openapi-docs/src/main/java/org/opennms/openapi/OpenApiDocGenerator.java
    A opennms-openapi-docs/src/main/java/org/opennms/openapi/OpenApiDocWriter.java
    A opennms-openapi-docs/src/test/java/org/opennms/openapi/OpenApiDocsContentTest.java
    A opennms-openapi-docs/src/test/java/org/opennms/openapi/OpenApiResourceCoverageTest.java
    R opennms-provision/opennms-snmp-scanners/pom.xml
    R opennms-provision/opennms-snmp-scanners/src/license/THIRD-PARTY.properties
    R opennms-provision/opennms-snmp-scanners/src/main/java/org/opennms/netmgt/provision/scan/snmp/AbstractSnmpScanner.java
    R opennms-provision/opennms-snmp-scanners/src/main/java/org/opennms/netmgt/provision/scan/snmp/SnmpNodeScanner.java
    R opennms-provision/opennms-snmp-scanners/src/test/java/org/opennms/netmgt/provision/scan/snmp/SnmpNodeScannerTest.java
    R opennms-provision/opennms-snmp-scanners/src/test/resources/emptyContext.xml
    R opennms-provision/opennms-snmp-scanners/src/test/resources/org/opennms/netmgt/provision/scan/snmp/snmpTestData1.properties
    M opennms-provision/pom.xml
    M opennms-services/pom.xml
    R opennms-services/src/main/java/org/opennms/netmgt/actiond/Actiond.java
    R opennms-services/src/main/java/org/opennms/netmgt/actiond/BroadcastEventProcessor.java
    R opennms-services/src/main/java/org/opennms/netmgt/actiond/Executor.java
    R opennms-services/src/main/java/org/opennms/netmgt/actiond/jmx/Actiond.java
    R opennms-services/src/main/java/org/opennms/netmgt/actiond/jmx/ActiondMBean.java
    R opennms-services/src/main/java/org/opennms/netmgt/notifd/AbstractSlackCompatibleNotificationStrategy.java
    M opennms-services/src/main/java/org/opennms/netmgt/notifd/BSFNotificationStrategy.java
    M opennms-services/src/main/java/org/opennms/netmgt/notifd/BrowserNotificationStrategy.java
    M opennms-services/src/main/java/org/opennms/netmgt/notifd/HttpNotificationStrategy.java
    R opennms-services/src/main/java/org/opennms/netmgt/notifd/IrcCatNotificationStrategy.java
    R opennms-services/src/main/java/org/opennms/netmgt/notifd/MattermostNotificationStrategy.java
    R opennms-services/src/main/java/org/opennms/netmgt/notifd/MicroblogAuthorization.java
    R opennms-services/src/main/java/org/opennms/netmgt/notifd/MicroblogClient.java
    R opennms-services/src/main/java/org/opennms/netmgt/notifd/MicroblogDMNotificationStrategy.java
    R opennms-services/src/main/java/org/opennms/netmgt/notifd/MicroblogNotificationStrategy.java
    R opennms-services/src/main/java/org/opennms/netmgt/notifd/MicroblogReplyNotificationStrategy.java
    M opennms-services/src/main/java/org/opennms/netmgt/notifd/NotificationTask.java
    R opennms-services/src/main/java/org/opennms/netmgt/notifd/SlackNotificationStrategy.java
    A opennms-services/src/main/java/org/opennms/netmgt/notifd/WebhookNotificationStrategy.java
    R opennms-services/src/main/java/org/opennms/netmgt/notifd/XMPPGroupNotificationStrategy.java
    R opennms-services/src/main/java/org/opennms/netmgt/notifd/XMPPNotificationManager.java
    R opennms-services/src/main/java/org/opennms/netmgt/notifd/XMPPNotificationStrategy.java
    M opennms-services/src/main/java/org/opennms/netmgt/notifd/browser/BrowserNotificationMessage.java
    M opennms-services/src/main/java/org/opennms/netmgt/scriptd/helper/SnmpTrapHelper.java
    M opennms-services/src/test/java/org/opennms/netmgt/notifd/BSFNotificationStrategyIT.java
    R opennms-services/src/test/java/org/opennms/netmgt/notifd/IrcCatNotificationStrategyTest.java
    R opennms-services/src/test/java/org/opennms/netmgt/notifd/MattermostNotificationStrategyIT.java
    R opennms-services/src/test/java/org/opennms/netmgt/notifd/MattermostNotificationStrategyTestServlet.java
    R opennms-services/src/test/java/org/opennms/netmgt/notifd/MicroblogClientTest.java
    R opennms-services/src/test/java/org/opennms/netmgt/notifd/SlackCompatibleNotificationStrategyTest.java
    R opennms-services/src/test/java/org/opennms/netmgt/notifd/SlackNotificationStrategyIT.java
    A opennms-services/src/test/java/org/opennms/netmgt/notifd/WebhookNotificationStrategyIT.java
    A opennms-services/src/test/java/org/opennms/netmgt/notifd/WebhookNotificationStrategyTest.java
    A opennms-services/src/test/java/org/opennms/netmgt/notifd/WebhookNotificationStrategyTestServlet.java
    R opennms-services/src/test/java/org/opennms/netmgt/notifd/XMPPNotificationTest.java
    R opennms-services/src/test/resources/MattermostNotificationStrategyTest/WEB-INF/web.xml
    A opennms-services/src/test/resources/WebhookNotificationStrategyTest/WEB-INF/web.xml
    R opennms-services/src/test/resources/microblog-configuration.xml
    M opennms-services/src/test/resources/opennmsPageSequence.xml
    M opennms-util/src/main/java/org/opennms/core/utils/jexl/OnmsJexlUberspect.java
    A opennms-util/src/test/java/org/opennms/core/utils/jexl/OnmsJexlSandboxBypassTest.java
    M opennms-web-api/pom.xml
    M opennms-web-api/src/main/java/org/opennms/web/api/RestUtils.java
    R opennms-web-api/src/main/java/org/opennms/web/svclayer/NodeListService.java
    R opennms-web-api/src/main/java/org/opennms/web/svclayer/model/NodeListCommand.java
    R opennms-web-api/src/main/java/org/opennms/web/svclayer/model/NodeListModel.java
    R opennms-web-api/src/main/java/org/opennms/web/svclayer/support/DefaultNodeListService.java
    M opennms-web-api/src/main/java/org/opennms/web/svclayer/support/DefaultRequisitionAccessService.java
    M opennms-web-api/src/main/java/org/opennms/web/svclayer/support/DefaultSchedulerService.java
    A opennms-web-api/src/test/java/org/opennms/web/api/RestUtilsTest.java
    M opennms-web-dependencies/pom.xml
    M opennms-webapp-rest/pom.xml
    A opennms-webapp-rest/src/main/java/org/opennms/web/rest/support/openapi/AbstractStaticOpenApiResource.java
    A opennms-webapp-rest/src/main/java/org/opennms/web/rest/support/openapi/AbstractSwaggerUiResource.java
    M opennms-webapp-rest/src/main/java/org/opennms/web/rest/v1/AssetRecordResource.java
    M opennms-webapp-rest/src/main/java/org/opennms/web/rest/v1/CategoryRestService.java
    M opennms-webapp-rest/src/main/java/org/opennms/web/rest/v1/NodeRestService.java
    M opennms-webapp-rest/src/main/java/org/opennms/web/rest/v1/OnmsIpInterfaceResource.java
    M opennms-webapp-rest/src/main/java/org/opennms/web/rest/v1/OnmsMonitoredServiceResource.java
    M opennms-webapp-rest/src/main/java/org/opennms/web/rest/v1/OnmsSnmpInterfaceResource.java
    A opennms-webapp-rest/src/main/java/org/opennms/web/rest/v1/OpenApiResource.java
    A opennms-webapp-rest/src/main/java/org/opennms/web/rest/v1/SwaggerUiResource.java
    M opennms-webapp-rest/src/main/java/org/opennms/web/rest/v2/AbstractDaoRestServiceWithDTO.java
    M opennms-webapp-rest/src/main/java/org/opennms/web/rest/v2/AlarmRestService.java
    M opennms-webapp-rest/src/main/java/org/opennms/web/rest/v2/NodeCategoriesRestService.java
    M opennms-webapp-rest/src/main/java/org/opennms/web/rest/v2/NodeIpInterfacesRestService.java
    M opennms-webapp-rest/src/main/java/org/opennms/web/rest/v2/NodeRestService.java
    M opennms-webapp-rest/src/main/java/org/opennms/web/rest/v2/NodeSnmpInterfacesRestService.java
    A opennms-webapp-rest/src/main/java/org/opennms/web/rest/v2/OpenApiResource.java
    A opennms-webapp-rest/src/main/java/org/opennms/web/rest/v2/SwaggerUiResource.java
    A opennms-webapp-rest/src/main/resources/openapi/swagger-ui.properties
    M opennms-webapp-rest/src/main/webapp/WEB-INF/applicationContext-cxf-rest-v1.xml
    M opennms-webapp-rest/src/main/webapp/WEB-INF/applicationContext-cxf-rest-v2.xml
    M opennms-webapp-rest/src/main/webapp/WEB-INF/menu/menu-template-alt.json
    M opennms-webapp-rest/src/main/webapp/WEB-INF/menu/menu-template-default.json
    M opennms-webapp-rest/src/main/webapp/WEB-INF/menu/menu-template-legacy.json
    M opennms-webapp-rest/src/main/webapp/WEB-INF/menu/menu-template.json
    M opennms-webapp-rest/src/test/java/org/opennms/web/rest/support/menu/MenuProviderTest.java
    A opennms-webapp-rest/src/test/java/org/opennms/web/rest/support/openapi/StaticOpenApiResourceTest.java
    A opennms-webapp-rest/src/test/java/org/opennms/web/rest/support/openapi/SwaggerUiResourceTest.java
    M opennms-webapp-rest/src/test/java/org/opennms/web/rest/v1/CategoryRestServiceIT.java
    M opennms-webapp-rest/src/test/java/org/opennms/web/rest/v1/NodeRestServiceIT.java
    M opennms-webapp-rest/src/test/java/org/opennms/web/rest/v2/AlarmRestServiceIT.java
    M opennms-webapp-rest/src/test/java/org/opennms/web/rest/v2/MonitoringLocationRestServiceIT.java
    M opennms-webapp-rest/src/test/java/org/opennms/web/rest/v2/NodeRestServiceIT.java
    R opennms-webapp-rest/src/test/java/org/opennms/web/rest/v2/OpenApiIT.java
    M opennms-webapp-rest/src/test/java/org/opennms/web/rest/v2/SnmpInterfaceRestServiceIT.java
    M opennms-webapp-rest/src/test/resources/dispatcher-servlet.xml
    M opennms-webapp-rest/src/test/resources/menu/menu-template.json
    A opennms-webapp-rest/src/test/resources/openapi/openapi-stub.json
    M opennms-webapp/src/main/java/org/opennms/web/admin/users/UpdateUserServlet.java
    M opennms-webapp/src/main/java/org/opennms/web/admin/users/parsers/NotificationInfo.java
    R opennms-webapp/src/main/java/org/opennms/web/controller/node/NodeListController.java
    M opennms-webapp/src/main/java/org/opennms/web/element/ElementIdNotFoundException.java
    M opennms-webapp/src/main/java/org/opennms/web/element/ElementUtil.java
    M opennms-webapp/src/main/java/org/opennms/web/notification/NotificationStreamServlet.java
    M opennms-webapp/src/main/resources/org/opennms/web/svclayer/applicationContext-svclayer.xml
    M opennms-webapp/src/main/webapp/WEB-INF/applicationContext-spring-security.xml
    R opennms-webapp/src/main/webapp/WEB-INF/jsp/element/nodeList.jsp
    R opennms-webapp/src/main/webapp/WEB-INF/tags/element/nodelist.tag
    R opennms-webapp/src/main/webapp/WEB-INF/tags/element/pagedList.tag
    M opennms-webapp/src/main/webapp/WEB-INF/web.xml
    M opennms-webapp/src/main/webapp/account/selfService/index.jsp
    M opennms-webapp/src/main/webapp/admin/userGroupView/users/list.jsp
    M opennms-webapp/src/main/webapp/admin/userGroupView/users/modifyUser.jsp
    M opennms-webapp/src/main/webapp/admin/userGroupView/users/userDetail.jsp
    M opennms-webapp/src/main/webapp/includes/bootstrap.jsp
    M opennms-webapp/src/main/webapp/includes/help-documentation.jsp
    A opennms-webapp/src/main/webapp/includes/notification-optin.jsp
    A opennms-webapp/src/main/webapp/notification-sw.js
    M opennms-webapp/src/main/webapp/notification/index.jsp
    M pom.xml
    M runtests.sh
    M smoke-test/pom.xml
    M smoke-test/src/main/java/org/opennms/smoketest/containers/MockCloudContainer.java
    M smoke-test/src/main/java/org/opennms/smoketest/selenium/AbstractOpenNMSSeleniumHelper.java
    M smoke-test/src/main/resources/opennms-overlay/etc/notificationCommands.xml
    M smoke-test/src/main/resources/opennms-overlay/etc/service-configuration.xml
    M smoke-test/src/test/java/org/opennms/smoketest/AdminPasswordGateIT.java
    M smoke-test/src/test/java/org/opennms/smoketest/MenuHeaderIT.java
    R smoke-test/src/test/java/org/opennms/smoketest/NodeListPageIT.java
    M smoke-test/src/test/java/org/opennms/smoketest/NotificationsPageIT.java
    M smoke-test/src/test/java/org/opennms/smoketest/ProvisioningNewUIIT.java
    M smoke-test/src/test/java/org/opennms/smoketest/UsageStatisticsIT.java
    M smoke-test/src/test/java/org/opennms/smoketest/UserIT.java
    A smoke-test/src/test/java/org/opennms/smoketest/rest/OpenApiRestIT.java
    M smoke-test/src/test/java/org/opennms/smoketest/ui/NodeListIT.java
    R src/site/site.xml
    A ui/CLAUDE.md
    M ui/eslint.config.js
    M ui/package.json
    A ui/packages/onms-ui-example-plugin/README.md
    A ui/packages/onms-ui-example-plugin/package.json
    A ui/packages/onms-ui-example-plugin/scripts/verify-dist.mjs
    A ui/packages/onms-ui-example-plugin/src/ExampleApp.vue
    A ui/packages/onms-ui-example-plugin/src/main.ts
    A ui/packages/onms-ui-example-plugin/tsconfig.json
    A ui/packages/onms-ui-example-plugin/vite.config.ts
    M ui/packages/onms-ui/README.md
    M ui/packages/onms-ui/package.json
    M ui/packages/onms-ui/src/components/OnmsAutoComplete.vue
    M ui/packages/onms-ui/src/components/OnmsListbox.vue
    M ui/packages/onms-ui/src/components/OnmsTabs.vue
    A ui/packages/onms-ui/src/directives/OnmsTooltip.ts
    M ui/packages/onms-ui/src/index.ts
    M ui/pnpm-lock.yaml
    A ui/src/components/AdhocGraphs/AdhocChart.vue
    A ui/src/components/AdhocGraphs/AdhocChartToolbar.vue
    A ui/src/components/AdhocGraphs/AdhocGraphBuilder.vue
    A ui/src/components/AdhocGraphs/ExpressionEditor.vue
    A ui/src/components/AdhocGraphs/RrdDefinitionDialog.vue
    A ui/src/components/AdhocGraphs/SelectionColumn.vue
    A ui/src/components/AdhocGraphs/SeriesTable.vue
    A ui/src/components/AdhocGraphs/utils/adhocColors.ts
    A ui/src/components/AdhocGraphs/utils/adhocQuery.ts
    A ui/src/components/AdhocGraphs/utils/adhocUrlState.ts
    A ui/src/components/AdhocGraphs/utils/jexlToRpn.ts
    A ui/src/components/AdhocGraphs/utils/rrdGraphDefinition.ts
    M ui/src/components/Configuration/ConfigurationAdvancedPanel.vue
    M ui/src/components/Configuration/ConfigurationCopyPasteDisplay.vue
    M ui/src/components/Configuration/ConfigurationHelper.ts
    M ui/src/components/Configuration/ConfigurationTable.vue
    M ui/src/components/Configuration/ProvisionDForm.vue
    M ui/src/components/Device/DCBModalConfigDiffContent.vue
    M ui/src/components/Device/DCBModalViewHistoryContent.vue
    M ui/src/components/Device/DCBTable.vue
    M ui/src/components/EventConfiguration/EventConfigUploadFilesTab.vue
    M ui/src/components/FileEditor/FileSidebar.vue
    M ui/src/components/Menu/Menubar.vue
    M ui/src/components/Menu/Search.vue
    M ui/src/components/Menu/SideMenu.vue
    M ui/src/components/Menu/UserSelfServiceMenuItem.vue
    M ui/src/components/Menu/utils.ts
    M ui/src/components/Nodes/AssetFilterPanel.vue
    M ui/src/components/Nodes/ColumnSelectionDrawer.vue
    M ui/src/components/Nodes/ExtendedSearchPanel.vue
    M ui/src/components/Nodes/FlowTooltipCell.vue
    M ui/src/components/Nodes/ManagementIPTooltipCell.vue
    M ui/src/components/Nodes/NodeAdvancedFiltersDrawer.vue
    A ui/src/components/Nodes/NodeInterfacesPanel.vue
    M ui/src/components/Nodes/NodeTooltipCell.vue
    M ui/src/components/Nodes/NodesTable.vue
    M ui/src/components/Nodes/hooks/queryStringParser.ts
    A ui/src/components/Nodes/hooks/useInterfaceListing.ts
    M ui/src/components/Nodes/hooks/useNodeQuery.ts
    M ui/src/components/Nodes/utils.ts
    M ui/src/components/Resources/Graph.vue
    M ui/src/components/Resources/GraphDataTable.vue
    M ui/src/components/Resources/Graphs.vue
    M ui/src/components/Resources/TimeControls.vue
    A ui/src/components/Resources/utils/graphExport.ts
    A ui/src/components/Resources/utils/timeRangeOptions.ts
    M ui/src/components/SCV/ScvInputIcon.vue
    M ui/src/components/SnmpDataCollection/SnmpDataCollectionSourcesTable.vue
    A ui/src/composables/useClipboard.ts
    M ui/src/composables/useDownload.ts
    A ui/src/containers/AdhocGraphs.vue
    M ui/src/containers/Nodes.vue
    M ui/src/containers/OpenAPI.vue
    M ui/src/main/App.vue
    M ui/src/main/main.ts
    M ui/src/main/router/index.ts
    M ui/src/services/index.ts
    M ui/src/services/ipInterfaceService.ts
    M ui/src/services/localStorageService.ts
    M ui/src/services/resourceService.ts
    M ui/src/services/snmpDataCollectionService.ts
    A ui/src/services/snmpInterfaceService.ts
    M ui/src/services/themeService.ts
    A ui/src/stores/adhocGraphStore.ts
    A ui/src/stores/nodeListStore.ts
    M ui/src/stores/nodeStore.ts
    R ui/src/stores/nodeStructureStore.ts
    M ui/src/styles/opennms-styles.scss
    M ui/src/theme/primevue-setup.ts
    A ui/src/types/adhocGraph.ts
    M ui/src/types/index.ts
    A ui/tests/components/AdhocGraphs/AdhocGraphBuilder.test.ts
    A ui/tests/components/AdhocGraphs/RrdDefinitionDialog.test.ts
    A ui/tests/components/AdhocGraphs/adhocColors.test.ts
    A ui/tests/components/AdhocGraphs/adhocQuery.test.ts
    A ui/tests/components/AdhocGraphs/adhocUrlState.test.ts
    A ui/tests/components/AdhocGraphs/jexlToRpn.test.ts
    A ui/tests/components/AdhocGraphs/rrdGraphDefinition.test.ts
    A ui/tests/components/Device/dcbModalConfigDiffContent.test.ts
    M ui/tests/components/EventConfiguration/EventConfigUploadFilesTab.test.ts
    A ui/tests/components/Menu/SideMenu.test.ts
    A ui/tests/components/Menu/UserSelfServiceMenuItem.test.ts
    M ui/tests/components/Menu/menu-template-test.json
    M ui/tests/components/Menu/utils.test.ts
    M ui/tests/components/Nodes/AssetFilterPanel.test.ts
    M ui/tests/components/Nodes/ColumnSelectionDrawer.test.ts
    M ui/tests/components/Nodes/EventsTable.test.ts
    M ui/tests/components/Nodes/ExtendedSearchPanel.test.ts
    M ui/tests/components/Nodes/IpInterfacesTable.test.ts
    M ui/tests/components/Nodes/NodeAdvancedFiltersDrawer.test.ts
    A ui/tests/components/Nodes/NodeInterfacesPanel.test.ts
    M ui/tests/components/Nodes/NodeTooltipCell.test.ts
    M ui/tests/components/Nodes/NodesTable.test.ts
    M ui/tests/components/Nodes/OutagesTable.test.ts
    M ui/tests/components/Nodes/SnmpInterfacesTable.test.ts
    M ui/tests/components/Nodes/hooks/queryStringParser.test.ts
    A ui/tests/components/Nodes/hooks/useInterfaceListing.test.ts
    M ui/tests/components/Nodes/hooks/useNodeQuery.test.ts
    A ui/tests/components/Resources/GraphDataTable.test.ts
    A ui/tests/components/Resources/timeRangeOptions.test.ts
    M ui/tests/components/SnmpDataCollection/SnmpDataCollectionSourcesTable.test.ts
    M ui/tests/components/TrapdConfiguration/GeneralConfiguration.test.ts
    A ui/tests/composables/useClipboard.test.ts
    M ui/tests/configuration.test.ts
    A ui/tests/containers/Nodes.test.ts
    A ui/tests/containers/OpenAPI.test.ts
    A ui/tests/containers/OpenAPIFetch.test.ts
    M ui/tests/deviceConfigBackup.test.ts
    M ui/tests/deviceConfigBackupPagination.test.ts
    M ui/tests/fileEditor.test.ts
    M ui/tests/onms-ui/OnmsAutoComplete.test.ts
    M ui/tests/onms-ui/OnmsListbox.test.ts
    M ui/tests/onms-ui/OnmsTable.test.ts
    M ui/tests/onms-ui/OnmsTabs.test.ts
    A ui/tests/onms-ui/OnmsTooltip.test.ts
    A ui/tests/onms-ui/exports.test.ts
    A ui/tests/resourceGraphExport.test.ts
    A ui/tests/resourceGraphPdfExport.test.ts
    A ui/tests/services/ipInterfaceService.test.ts
    A ui/tests/services/localStorageService.test.ts
    A ui/tests/services/snmpInterfaceService.test.ts
    A ui/tests/services/themeService.test.ts
    A ui/tests/stores/adhocGraphStore.test.ts
    A ui/tests/stores/nodeListStore.test.ts
    A ui/tests/stores/nodeStore.test.ts
    R ui/tests/stores/nodeStructureStore.test.ts
    M ui/tsconfig.json
    M ui/vite.config.menu.ts
    M ui/vite.config.ts

  Log Message:
  -----------
  Merge remote-tracking branch 'origin/develop' into jira/NMS-20107-manage-groups-primevue


  Commit: 9e4f7c2ab69d636e6b2c1dd9d404e75edc61651d
      https://github.com/OpenNMS/opennms/commit/9e4f7c2ab69d636e6b2c1dd9d404e75edc61651d
  Author: Christian Pape <[email protected]>
  Date:   2026-08-18 (Tue, 18 Aug 2026)

  Changed paths:
    M .circleci/trivy-config/trivyignore

  Log Message:
  -----------
  NMS-20222: Added CVE-2025-67030 to trivyignore


  Commit: 96136d79c1a19e9e07e8ced10a4a0530362df377
      https://github.com/OpenNMS/opennms/commit/96136d79c1a19e9e07e8ced10a4a0530362df377
  Author: CI/CD System <[email protected]>
  Date:   2026-08-18 (Tue, 18 Aug 2026)

  Changed paths:
    M .circleci/trivy-config/trivyignore

  Log Message:
  -----------
  Merge remote-tracking branch 'origin/foundation-2024' into foundation-2025


  Commit: 3e84bd0c349e5d6832402c73c7167ee351b791ba
      https://github.com/OpenNMS/opennms/commit/3e84bd0c349e5d6832402c73c7167ee351b791ba
  Author: Christian Pape <[email protected]>
  Date:   2026-08-19 (Wed, 19 Aug 2026)

  Changed paths:
    M pom.xml

  Log Message:
  -----------
  NMS-20228: Using httpcore5 version 5.4.3


  Commit: 4a9b27493540937209f8ab1077aa9418e9d675a8
      https://github.com/OpenNMS/opennms/commit/4a9b27493540937209f8ab1077aa9418e9d675a8
  Author: Christian Pape <[email protected]>
  Date:   2026-08-19 (Wed, 19 Aug 2026)

  Changed paths:
    M features/container/sentinel/pom.xml

  Log Message:
  -----------
  NMS-20177: Fixed smoke tests


  Commit: df422a1923a4f21d01e05d94196eeadb6ff20d7a
      https://github.com/OpenNMS/opennms/commit/df422a1923a4f21d01e05d94196eeadb6ff20d7a
  Author: Morteza E <[email protected]>
  Date:   2026-08-19 (Wed, 19 Aug 2026)

  Changed paths:
    M pom.xml

  Log Message:
  -----------
  Merge remote-tracking branch 'origin/foundation-2024' into foundation-2025


  Commit: 439698c963ad43fce1951026e0ac276a6d2b5544
      https://github.com/OpenNMS/opennms/commit/439698c963ad43fce1951026e0ac276a6d2b5544
  Author: Christian Pape <[email protected]>
  Date:   2026-08-19 (Wed, 19 Aug 2026)

  Changed paths:
    M .circleci/trivy-config/trivyignore

  Log Message:
  -----------
  NMS-20239: Added CVE-2025-14813 and CVE-2026-5598 to trivyignore


  Commit: e4d66d1d5e667402c1c2db0b34bfc9cfe5c9f727
      https://github.com/OpenNMS/opennms/commit/e4d66d1d5e667402c1c2db0b34bfc9cfe5c9f727
  Author: CI/CD System <[email protected]>
  Date:   2026-08-19 (Wed, 19 Aug 2026)

  Changed paths:
    M .circleci/trivy-config/trivyignore

  Log Message:
  -----------
  Merge remote-tracking branch 'origin/foundation-2024' into foundation-2025


  Commit: 3095bf9cd5b9d55214f93237c546015f6fddd56e
      https://github.com/OpenNMS/opennms/commit/3095bf9cd5b9d55214f93237c546015f6fddd56e
  Author: mershad-manesh <[email protected]>
  Date:   2026-08-19 (Wed, 19 Aug 2026)

  Changed paths:
    M .circleci/epoch

  Log Message:
  -----------
  Update epoch


  Commit: b87b71647568b7fa1f8949d1b722f0b7445de3c7
      https://github.com/OpenNMS/opennms/commit/b87b71647568b7fa1f8949d1b722f0b7445de3c7
  Author: CI/CD System <[email protected]>
  Date:   2026-08-19 (Wed, 19 Aug 2026)

  Changed paths:
    M .circleci/epoch
    M features/springframework-security/src/main/java/org/opennms/web/springframework/security/AuthorityPrincipal.java
    M features/springframework-security/src/main/java/org/opennms/web/springframework/security/LoginModuleUtils.java
    M features/springframework-security/src/main/java/org/opennms/web/springframework/security/OpenNMSAuthSuccessHandler.java
    M features/springframework-security/src/test/java/org/opennms/web/springframework/security/LoginModuleUtilsTest.java
    M opennms-webapp/src/main/webapp/WEB-INF/applicationContext-spring-security.xml
    M opennms-webapp/src/main/webapp/includes/bootstrap.jsp
    M smoke-test/src/test/java/org/opennms/smoketest/WebappIT.java
    M ui/CLAUDE.md
    M ui/MENU_TEMPLATES.md
    M ui/THIRD-PARTY-LICENSE.md
    M ui/copilot-instructions.md
    M ui/packages/onms-ui/README.md
    M ui/packages/onms-ui/package.json
    M ui/packages/onms-ui/src/components/OnmsIcon.vue
    M ui/packages/onms-ui/src/components/OnmsSearchInput.vue
    R ui/packages/onms-ui/src/icons/SearchGlyph.vue
    A ui/packages/onms-ui/src/icons/account/Group.vue
    A ui/packages/onms-ui/src/icons/action/AccountCircle.vue
    A ui/packages/onms-ui/src/icons/action/Add.vue
    A ui/packages/onms-ui/src/icons/action/AddCircleAlt.vue
    A ui/packages/onms-ui/src/icons/action/AddComment.vue
    A ui/packages/onms-ui/src/icons/action/AddNote.vue
    A ui/packages/onms-ui/src/icons/action/AddUser.vue
    A ui/packages/onms-ui/src/icons/action/Archive.vue
    A ui/packages/onms-ui/src/icons/action/AssignTo.vue
    A ui/packages/onms-ui/src/icons/action/AttachEmail.vue
    A ui/packages/onms-ui/src/icons/action/AttachFile.vue
    A ui/packages/onms-ui/src/icons/action/Build.vue
    A ui/packages/onms-ui/src/icons/action/Business.vue
    A ui/packages/onms-ui/src/icons/action/Calendar.vue
    A ui/packages/onms-ui/src/icons/action/CalendarEndDate.vue
    A ui/packages/onms-ui/src/icons/action/CalendarStartDate.vue
    A ui/packages/onms-ui/src/icons/action/Cancel.vue
    A ui/packages/onms-ui/src/icons/action/ChangeOwner.vue
    A ui/packages/onms-ui/src/icons/action/CheckCircle.vue
    A ui/packages/onms-ui/src/icons/action/Cloud.vue
    A ui/packages/onms-ui/src/icons/action/CloudDownload.vue
    A ui/packages/onms-ui/src/icons/action/CloudUpload.vue
    A ui/packages/onms-ui/src/icons/action/Code.vue
    A ui/packages/onms-ui/src/icons/action/Comment.vue
    A ui/packages/onms-ui/src/icons/action/ContactSupport.vue
    A ui/packages/onms-ui/src/icons/action/ContentCopy.vue
    A ui/packages/onms-ui/src/icons/action/ContentPaste.vue
    A ui/packages/onms-ui/src/icons/action/Cycle.vue
    A ui/packages/onms-ui/src/icons/action/Dashboard.vue
    A ui/packages/onms-ui/src/icons/action/DateRange.vue
    A ui/packages/onms-ui/src/icons/action/Delete.vue
    A ui/packages/onms-ui/src/icons/action/DownloadFile.vue
    A ui/packages/onms-ui/src/icons/action/Edit.vue
    A ui/packages/onms-ui/src/icons/action/EditMode.vue
    A ui/packages/onms-ui/src/icons/action/Email.vue
    A ui/packages/onms-ui/src/icons/action/EmailDraft.vue
    A ui/packages/onms-ui/src/icons/action/EmailInbox.vue
    A ui/packages/onms-ui/src/icons/action/EmailSecure.vue
    A ui/packages/onms-ui/src/icons/action/ExitToApp.vue
    A ui/packages/onms-ui/src/icons/action/Expand.vue
    A ui/packages/onms-ui/src/icons/action/Feedback.vue
    A ui/packages/onms-ui/src/icons/action/FeedbackAlt.vue
    A ui/packages/onms-ui/src/icons/action/FileCopy.vue
    A ui/packages/onms-ui/src/icons/action/FilterAlt.vue
    A ui/packages/onms-ui/src/icons/action/Group.vue
    A ui/packages/onms-ui/src/icons/action/Help.vue
    A ui/packages/onms-ui/src/icons/action/Hide.vue
    A ui/packages/onms-ui/src/icons/action/Home.vue
    A ui/packages/onms-ui/src/icons/action/Info.vue
    A ui/packages/onms-ui/src/icons/action/InformationExchange.vue
    A ui/packages/onms-ui/src/icons/action/LightDarkMode.vue
    A ui/packages/onms-ui/src/icons/action/Link.vue
    A ui/packages/onms-ui/src/icons/action/List.vue
    A ui/packages/onms-ui/src/icons/action/Location.vue
    A ui/packages/onms-ui/src/icons/action/LocationCity.vue
    A ui/packages/onms-ui/src/icons/action/Lock.vue
    A ui/packages/onms-ui/src/icons/action/LockPasswordProtected.vue
    A ui/packages/onms-ui/src/icons/action/LogIn.vue
    A ui/packages/onms-ui/src/icons/action/LogOut.vue
    A ui/packages/onms-ui/src/icons/action/LoggerConfigs.vue
    A ui/packages/onms-ui/src/icons/action/ManageProfile.vue
    A ui/packages/onms-ui/src/icons/action/MarkComplete.vue
    A ui/packages/onms-ui/src/icons/action/MarkIncomplete.vue
    A ui/packages/onms-ui/src/icons/action/MarkRead.vue
    A ui/packages/onms-ui/src/icons/action/MarkUnread.vue
    A ui/packages/onms-ui/src/icons/action/Notifications.vue
    A ui/packages/onms-ui/src/icons/action/Options.vue
    A ui/packages/onms-ui/src/icons/action/Person.vue
    A ui/packages/onms-ui/src/icons/action/Pin.vue
    A ui/packages/onms-ui/src/icons/action/PlayCircle.vue
    A ui/packages/onms-ui/src/icons/action/Print.vue
    A ui/packages/onms-ui/src/icons/action/Remove.vue
    A ui/packages/onms-ui/src/icons/action/RemoveUser.vue
    A ui/packages/onms-ui/src/icons/action/Reporting.vue
    A ui/packages/onms-ui/src/icons/action/Restore.vue
    A ui/packages/onms-ui/src/icons/action/Search.vue
    A ui/packages/onms-ui/src/icons/action/Send.vue
    A ui/packages/onms-ui/src/icons/action/SendWorkflow.vue
    A ui/packages/onms-ui/src/icons/action/Settings.vue
    A ui/packages/onms-ui/src/icons/action/Share.vue
    A ui/packages/onms-ui/src/icons/action/Sort.vue
    A ui/packages/onms-ui/src/icons/action/Subscriptions.vue
    A ui/packages/onms-ui/src/icons/action/SupportCenter.vue
    A ui/packages/onms-ui/src/icons/action/Unlock.vue
    A ui/packages/onms-ui/src/icons/action/UpdateSchedules.vue
    A ui/packages/onms-ui/src/icons/action/UpdateUtilities.vue
    A ui/packages/onms-ui/src/icons/action/UploadFile.vue
    A ui/packages/onms-ui/src/icons/action/VerifedUser.vue
    A ui/packages/onms-ui/src/icons/action/View.vue
    A ui/packages/onms-ui/src/icons/action/ViewDetails.vue
    A ui/packages/onms-ui/src/icons/action/Workflow.vue
    A ui/packages/onms-ui/src/icons/communication/Certificate.vue
    A ui/packages/onms-ui/src/icons/communication/CertificateAlt.vue
    A ui/packages/onms-ui/src/icons/communication/Chat.vue
    A ui/packages/onms-ui/src/icons/communication/Contacts.vue
    A ui/packages/onms-ui/src/icons/communication/Documentation.vue
    A ui/packages/onms-ui/src/icons/communication/IdCard.vue
    A ui/packages/onms-ui/src/icons/communication/Phone.vue
    A ui/packages/onms-ui/src/icons/content/BlogArticle.vue
    A ui/packages/onms-ui/src/icons/content/Video.vue
    A ui/packages/onms-ui/src/icons/datavis/AreaChart.vue
    A ui/packages/onms-ui/src/icons/datavis/BarChart.vue
    A ui/packages/onms-ui/src/icons/datavis/ColumnChart.vue
    A ui/packages/onms-ui/src/icons/datavis/DonutChart.vue
    A ui/packages/onms-ui/src/icons/datavis/Gauge.vue
    A ui/packages/onms-ui/src/icons/datavis/LineChart.vue
    A ui/packages/onms-ui/src/icons/datavis/PieChart.vue
    A ui/packages/onms-ui/src/icons/datavis/PolarChart.vue
    A ui/packages/onms-ui/src/icons/datavis/Reporting.vue
    A ui/packages/onms-ui/src/icons/datavis/StackedBarChart.vue
    A ui/packages/onms-ui/src/icons/datavis/StackedColumnChart.vue
    A ui/packages/onms-ui/src/icons/datavis/TreeDiagram.vue
    A ui/packages/onms-ui/src/icons/file/Attachment.vue
    A ui/packages/onms-ui/src/icons/file/Folder.vue
    A ui/packages/onms-ui/src/icons/file/FolderAdd.vue
    A ui/packages/onms-ui/src/icons/file/FolderLocked.vue
    A ui/packages/onms-ui/src/icons/file/FolderOpen.vue
    A ui/packages/onms-ui/src/icons/file/Generic.vue
    A ui/packages/onms-ui/src/icons/file/Image.vue
    A ui/packages/onms-ui/src/icons/file/Pdf.vue
    A ui/packages/onms-ui/src/icons/file/Text.vue
    A ui/packages/onms-ui/src/icons/file/WordDoc.vue
    A ui/packages/onms-ui/src/icons/file/Xls.vue
    A ui/packages/onms-ui/src/icons/file/Zip.vue
    A ui/packages/onms-ui/src/icons/hardware/ApplianceProfiles.vue
    A ui/packages/onms-ui/src/icons/hardware/Appliances.vue
    A ui/packages/onms-ui/src/icons/hardware/AppliancesAlt.vue
    A ui/packages/onms-ui/src/icons/hardware/DesktopWindows.vue
    A ui/packages/onms-ui/src/icons/hardware/Instances.vue
    A ui/packages/onms-ui/src/icons/hardware/KeyboardArrowDown.vue
    A ui/packages/onms-ui/src/icons/hardware/KeyboardArrowUp.vue
    A ui/packages/onms-ui/src/icons/hardware/Laptop.vue
    A ui/packages/onms-ui/src/icons/hardware/MinionProfiles.vue
    A ui/packages/onms-ui/src/icons/hardware/Network.vue
    A ui/packages/onms-ui/src/icons/hardware/NetworkProfiles.vue
    A ui/packages/onms-ui/src/icons/hardware/Router.vue
    A ui/packages/onms-ui/src/icons/hardware/Security.vue
    A ui/packages/onms-ui/src/icons/hardware/Server.vue
    A ui/packages/onms-ui/src/icons/hardware/VirtualMachine.vue
    A ui/packages/onms-ui/src/icons/hardware/VirtualMachineAlt.vue
    A ui/packages/onms-ui/src/icons/medical/Ambulance.vue
    A ui/packages/onms-ui/src/icons/medical/CostSavings.vue
    A ui/packages/onms-ui/src/icons/medical/Drug.vue
    A ui/packages/onms-ui/src/icons/medical/DrugGroupId.vue
    A ui/packages/onms-ui/src/icons/medical/Hospital.vue
    A ui/packages/onms-ui/src/icons/medical/Patient.vue
    A ui/packages/onms-ui/src/icons/medical/Payor.vue
    A ui/packages/onms-ui/src/icons/medical/Provider.vue
    A ui/packages/onms-ui/src/icons/medical/ProviderOffice.vue
    A ui/packages/onms-ui/src/icons/medical/Treatment.vue
    A ui/packages/onms-ui/src/icons/medical/TreatmentCycle.vue
    A ui/packages/onms-ui/src/icons/medical/TreatmentSchedule.vue
    A ui/packages/onms-ui/src/icons/medical/Vitals.vue
    A ui/packages/onms-ui/src/icons/navigation/Apps.vue
    A ui/packages/onms-ui/src/icons/navigation/AppsGetMore.vue
    A ui/packages/onms-ui/src/icons/navigation/ArrowBack.vue
    A ui/packages/onms-ui/src/icons/navigation/ArrowDropDown.vue
    A ui/packages/onms-ui/src/icons/navigation/Cancel.vue
    A ui/packages/onms-ui/src/icons/navigation/ChevronLeft.vue
    A ui/packages/onms-ui/src/icons/navigation/ChevronRight.vue
    A ui/packages/onms-ui/src/icons/navigation/ExpandLess.vue
    A ui/packages/onms-ui/src/icons/navigation/ExpandMore.vue
    A ui/packages/onms-ui/src/icons/navigation/FirstPage.vue
    A ui/packages/onms-ui/src/icons/navigation/Fullscreen.vue
    A ui/packages/onms-ui/src/icons/navigation/FullscreenExit.vue
    A ui/packages/onms-ui/src/icons/navigation/GridView.vue
    A ui/packages/onms-ui/src/icons/navigation/LastPage.vue
    A ui/packages/onms-ui/src/icons/navigation/Menu.vue
    A ui/packages/onms-ui/src/icons/navigation/MenuClose.vue
    A ui/packages/onms-ui/src/icons/navigation/MenuOpen.vue
    A ui/packages/onms-ui/src/icons/navigation/MoreHoriz.vue
    A ui/packages/onms-ui/src/icons/navigation/MoreVert.vue
    A ui/packages/onms-ui/src/icons/navigation/Refresh.vue
    A ui/packages/onms-ui/src/icons/navigation/SubdirectoryArrowLeft.vue
    A ui/packages/onms-ui/src/icons/navigation/SubdirectoryArrowRight.vue
    A ui/packages/onms-ui/src/icons/navigation/UnfoldLess.vue
    A ui/packages/onms-ui/src/icons/navigation/UnfoldMore.vue
    A ui/packages/onms-ui/src/icons/network/AggregationLayer.vue
    A ui/packages/onms-ui/src/icons/network/AggregationLayerAlt1.vue
    A ui/packages/onms-ui/src/icons/network/AggregationLayerAlt2.vue
    A ui/packages/onms-ui/src/icons/network/AggregationLayerAlt3.vue
    A ui/packages/onms-ui/src/icons/network/AggregationLayerAlt4.vue
    A ui/packages/onms-ui/src/icons/network/AggregationLayerAlt5.vue
    A ui/packages/onms-ui/src/icons/network/ApiConfig.vue
    A ui/packages/onms-ui/src/icons/network/ApiEndpoints.vue
    A ui/packages/onms-ui/src/icons/network/ApplianceProfiles.vue
    A ui/packages/onms-ui/src/icons/network/Appliances.vue
    A ui/packages/onms-ui/src/icons/network/AppliancesAlt.vue
    A ui/packages/onms-ui/src/icons/network/Build.vue
    A ui/packages/onms-ui/src/icons/network/CertificateAlt.vue
    A ui/packages/onms-ui/src/icons/network/Cloud.vue
    A ui/packages/onms-ui/src/icons/network/CloudBackUp.vue
    A ui/packages/onms-ui/src/icons/network/CloudDownload.vue
    A ui/packages/onms-ui/src/icons/network/CloudService.vue
    A ui/packages/onms-ui/src/icons/network/CloudUpload.vue
    A ui/packages/onms-ui/src/icons/network/Code.vue
    A ui/packages/onms-ui/src/icons/network/Compare.vue
    A ui/packages/onms-ui/src/icons/network/Compare1.vue
    A ui/packages/onms-ui/src/icons/network/Compliance.vue
    A ui/packages/onms-ui/src/icons/network/Configuration.vue
    A ui/packages/onms-ui/src/icons/network/Connection.vue
    A ui/packages/onms-ui/src/icons/network/ContainerAdd.vue
    A ui/packages/onms-ui/src/icons/network/ContainerTransient.vue
    A ui/packages/onms-ui/src/icons/network/ContainerUnknown.vue
    A ui/packages/onms-ui/src/icons/network/Database.vue
    A ui/packages/onms-ui/src/icons/network/Desktop.vue
    A ui/packages/onms-ui/src/icons/network/Digitize.vue
    A ui/packages/onms-ui/src/icons/network/DistributedMonitoring.vue
    A ui/packages/onms-ui/src/icons/network/ElectricalServices.vue
    A ui/packages/onms-ui/src/icons/network/EndUser.vue
    A ui/packages/onms-ui/src/icons/network/ExitCompare.vue
    A ui/packages/onms-ui/src/icons/network/ExitCompareModeAlt.vue
    A ui/packages/onms-ui/src/icons/network/ExtractData.vue
    A ui/packages/onms-ui/src/icons/network/Firewall.vue
    A ui/packages/onms-ui/src/icons/network/Instances.vue
    A ui/packages/onms-ui/src/icons/network/Inventory.vue
    A ui/packages/onms-ui/src/icons/network/InventoryAdd.vue
    A ui/packages/onms-ui/src/icons/network/InventoryAlt.vue
    A ui/packages/onms-ui/src/icons/network/InventoryConfirm.vue
    A ui/packages/onms-ui/src/icons/network/InventoryDelete.vue
    A ui/packages/onms-ui/src/icons/network/Laptop.vue
    A ui/packages/onms-ui/src/icons/network/LogFile.vue
    A ui/packages/onms-ui/src/icons/network/LoggerConfigs.vue
    A ui/packages/onms-ui/src/icons/network/Logs.vue
    A ui/packages/onms-ui/src/icons/network/LogsAlt.vue
    A ui/packages/onms-ui/src/icons/network/Microservices.vue
    A ui/packages/onms-ui/src/icons/network/Minion.vue
    A ui/packages/onms-ui/src/icons/network/MinionProfiles.vue
    A ui/packages/onms-ui/src/icons/network/Monitoring.vue
    A ui/packages/onms-ui/src/icons/network/NetworkProfiles.vue
    A ui/packages/onms-ui/src/icons/network/Nodes.vue
    A ui/packages/onms-ui/src/icons/network/Policy.vue
    A ui/packages/onms-ui/src/icons/network/Power.vue
    A ui/packages/onms-ui/src/icons/network/RouterLan.vue
    A ui/packages/onms-ui/src/icons/network/RouterWan.vue
    A ui/packages/onms-ui/src/icons/network/Security.vue
    A ui/packages/onms-ui/src/icons/network/SecurityScan.vue
    A ui/packages/onms-ui/src/icons/network/Server.vue
    A ui/packages/onms-ui/src/icons/network/ServerClock.vue
    A ui/packages/onms-ui/src/icons/network/Switch.vue
    A ui/packages/onms-ui/src/icons/network/Terminal.vue
    A ui/packages/onms-ui/src/icons/network/UpdateUtilities.vue
    A ui/packages/onms-ui/src/icons/network/Utilities.vue
    A ui/packages/onms-ui/src/icons/network/ViewCode.vue
    A ui/packages/onms-ui/src/icons/network/VirtualMachine.vue
    A ui/packages/onms-ui/src/icons/network/VirtualMachineAlt.vue
    A ui/packages/onms-ui/src/icons/network/VirtualMachineAlt2.vue
    A ui/packages/onms-ui/src/icons/network/WifiRouter.vue
    A ui/packages/onms-ui/src/icons/notification/Connected.vue
    A ui/packages/onms-ui/src/icons/notification/Error.vue
    A ui/packages/onms-ui/src/icons/notification/NotificationSelected.vue
    A ui/packages/onms-ui/src/icons/notification/NotificationSoundSelected.vue
    A ui/packages/onms-ui/src/icons/notification/NotificationsOff.vue
    A ui/packages/onms-ui/src/icons/notification/Unconnected.vue
    A ui/packages/onms-ui/src/icons/notification/Warning.vue
    A ui/packages/onms-ui/src/icons/notification/Wifi.vue
    A ui/packages/onms-ui/src/icons/notification/WifiNoConnection.vue
    A ui/packages/onms-ui/src/icons/notification/WifiOff.vue
    A ui/packages/onms-ui/src/icons/notification/WifiSignalBad.vue
    A ui/packages/onms-ui/src/icons/notification/WifiStatusBar.vue
    A ui/packages/onms-ui/src/icons/status/Available.vue
    A ui/packages/onms-ui/src/icons/status/Unavailable.vue
    M ui/scripts/generate-icons.mjs
    M ui/src/components/AdhocGraphs/AdhocChartToolbar.vue
    M ui/src/components/AdhocGraphs/AdhocGraphBuilder.vue
    M ui/src/components/AdhocGraphs/ExpressionEditor.vue
    M ui/src/components/AdhocGraphs/SeriesTable.vue
    M ui/src/components/Configuration/ConfigurationAdvancedPanel.vue
    M ui/src/components/Configuration/ConfigurationCopyPasteDisplay.vue
    M ui/src/components/Configuration/ConfigurationDrawer.vue
    M ui/src/components/Configuration/ConfigurationHelpPanel.vue
    M ui/src/components/Configuration/ConfigurationTable.vue
    M ui/src/components/Configuration/ProvisionDForm.vue
    M ui/src/components/Device/DCBGroupFilters.vue
    M ui/src/components/Device/DCBModalConfigDiffContent.vue
    M ui/src/components/Device/DCBModalViewHistoryContent.vue
    M ui/src/components/Device/DCBTable.vue
    M ui/src/components/Device/DCBTableStatusDropdown.vue
    M ui/src/components/EventConfigEventCreate/BasicInformation.vue
    M ui/src/components/EventConfigEventCreate/MaskElements.vue
    M ui/src/components/EventConfigEventCreate/MaskVarbinds.vue
    M ui/src/components/EventConfigEventCreate/VarbindsDecode.vue
    M ui/src/components/EventConfiguration/EventConfigSourceTable.vue
    M ui/src/components/EventConfiguration/EventConfigUploadFilesTab.vue
    M ui/src/components/EventConfigurationDetail/EventConfigEventTable.vue
    M ui/src/components/FileEditor/Console.vue
    M ui/src/components/FileEditor/FileSidebar.vue
    M ui/src/components/FileEditor/FileTreeItem.vue
    M ui/src/components/FileEditor/Help.vue
    M ui/src/components/FileEditor/TopBar.vue
    M ui/src/components/Logs/Editor.vue
    M ui/src/components/Map/MarkerClusterPopupContent.vue
    M ui/src/components/Map/MarkerPopup.vue
    M ui/src/components/Menu/Menubar.vue
    M ui/src/components/Menu/Search.vue
    M ui/src/components/Menu/SearchResult.vue
    M ui/src/components/Menu/SideMenu.vue
    M ui/src/components/Menu/UserNotificationsMenuItem.vue
    M ui/src/components/Menu/UserSelfServiceMenuItem.vue
    M ui/src/components/Menu/useMenuIcons.ts
    M ui/src/components/Menu/utils.ts
    M ui/src/components/Nodes/AssetFilterPanel.vue
    M ui/src/components/Nodes/ColumnSelectionDrawer.vue
    M ui/src/components/Nodes/ExtendedSearchPanel.vue
    M ui/src/components/Nodes/FlowTooltipCell.vue
    M ui/src/components/Nodes/NodeActionsDropdown.vue
    M ui/src/components/Nodes/NodeAdvancedFiltersDrawer.vue
    M ui/src/components/Nodes/NodeDownloadDropdown.vue
    M ui/src/components/Nodes/NodesTable.vue
    M ui/src/components/Resources/TimeControls.vue
    M ui/src/components/SCV/SCVAttribute.vue
    M ui/src/components/SCV/SCVForm.vue
    M ui/src/components/SCV/ScvInputIcon.vue
    M ui/src/components/SnmpConfiguration/SnmpConfigDefaultsPanel.vue
    M ui/src/components/SnmpConfiguration/SnmpConfigDefinitionBasicInformation.vue
    M ui/src/components/SnmpConfiguration/SnmpConfigDefinitionsTab.vue
    M ui/src/components/SnmpConfiguration/SnmpConfigDefinitionsTable.vue
    M ui/src/components/SnmpConfiguration/SnmpConfigLookupPanel.vue
    M ui/src/components/SnmpConfiguration/SnmpConfigProfileBasicInformation.vue
    M ui/src/components/SnmpConfiguration/SnmpConfigProfilesTab.vue
    M ui/src/components/SnmpConfiguration/SnmpConfigProfilesTable.vue
    M ui/src/components/SnmpConfiguration/SnmpConfigUploadDownloadTab.vue
    M ui/src/components/SnmpDataCollection/SnmpDataCollectionProfile/ProfileRrdSettingsTab.vue
    M ui/src/components/SnmpDataCollection/SnmpDataCollectionProfile/ProfileSourcesTab.vue
    M ui/src/components/SnmpDataCollection/SnmpDataCollectionProfile/SnmpDataCollectionProfileDetails.vue
    M ui/src/components/SnmpDataCollection/SnmpDataCollectionProfilesTable.vue
    M ui/src/components/SnmpDataCollection/SnmpDataCollectionSourceDetail/Drawer/MibGroupCreationDrawer.vue
    M ui/src/components/SnmpDataCollection/SnmpDataCollectionSourceDetail/Drawer/ResourceTypeCreationDrawer.vue
    M ui/src/components/SnmpDataCollection/SnmpDataCollectionSourceDetail/MibGroupsTable.vue
    M ui/src/components/SnmpDataCollection/SnmpDataCollectionSourceDetail/ResourceTypesTable.vue
    M ui/src/components/SnmpDataCollection/SnmpDataCollectionSourceDetail/SystemDefinitionsTable.vue
    M ui/src/components/SnmpDataCollection/SnmpDataCollectionSourceImport.vue
    M ui/src/components/SnmpDataCollection/SnmpDataCollectionSourcesTable.vue
    M ui/src/components/TrapdConfiguration/CreateSnmpV3User.vue
    M ui/src/components/TrapdConfiguration/GeneralConfiguration.vue
    M ui/src/components/TrapdConfiguration/SnmpV3UserManagement.vue
    M ui/src/components/TrapdConfiguration/TrapdAdvancedConfiguration.vue
    M ui/src/components/UsageStatistics/UsageStatisticsHeader.vue
    M ui/src/components/ZenithConnect/ZenithConnectRegisterResult.vue
    M ui/src/components/ZenithConnect/ZenithConnectView.vue
    R ui/src/components/icons/account/Group.vue
    R ui/src/components/icons/action/AccountCircle.vue
    R ui/src/components/icons/action/Add.vue
    R ui/src/components/icons/action/AddCircleAlt.vue
    R ui/src/components/icons/action/AddComment.vue
    R ui/src/components/icons/action/AddNote.vue
    R ui/src/components/icons/action/AddUser.vue
    R ui/src/components/icons/action/Archive.vue
    R ui/src/components/icons/action/AssignTo.vue
    R ui/src/components/icons/action/AttachEmail.vue
    R ui/src/components/icons/action/AttachFile.vue
    R ui/src/components/icons/action/Build.vue
    R ui/src/components/icons/action/Business.vue
    R ui/src/components/icons/action/Calendar.vue
    R ui/src/components/icons/action/CalendarEndDate.vue
    R ui/src/components/icons/action/CalendarStartDate.vue
    R ui/src/components/icons/action/Cancel.vue
    R ui/src/components/icons/action/ChangeOwner.vue
    R ui/src/components/icons/action/CheckCircle.vue
    R ui/src/components/icons/action/Cloud.vue
    R ui/src/components/icons/action/CloudDownload.vue
    R ui/src/components/icons/action/CloudUpload.vue
    R ui/src/components/icons/action/Code.vue
    R ui/src/components/icons/action/Comment.vue
    R ui/src/components/icons/action/ContactSupport.vue
    R ui/src/components/icons/action/ContentCopy.vue
    R ui/src/components/icons/action/ContentPaste.vue
    R ui/src/components/icons/action/Cycle.vue
    R ui/src/components/icons/action/Dashboard.vue
    R ui/src/components/icons/action/DateRange.vue
    R ui/src/components/icons/action/Delete.vue
    R ui/src/components/icons/action/DownloadFile.vue
    R ui/src/components/icons/action/Edit.vue
    R ui/src/components/icons/action/EditMode.vue
    R ui/src/components/icons/action/Email.vue
    R ui/src/components/icons/action/EmailDraft.vue
    R ui/src/components/icons/action/EmailInbox.vue
    R ui/src/components/icons/action/EmailSecure.vue
    R ui/src/components/icons/action/ExitToApp.vue
    R ui/src/components/icons/action/Expand.vue
    R ui/src/components/icons/action/Feedback.vue
    R ui/src/components/icons/action/FeedbackAlt.vue
    R ui/src/components/icons/action/FileCopy.vue
    R ui/src/components/icons/action/FilterAlt.vue
    R ui/src/components/icons/action/Group.vue
    R ui/src/components/icons/action/Help.vue
    R ui/src/components/icons/action/Hide.vue
    R ui/src/components/icons/action/Home.vue
    R ui/src/components/icons/action/Info.vue
    R ui/src/components/icons/action/InformationExchange.vue
    R ui/src/components/icons/action/LightDarkMode.vue
    R ui/src/components/icons/action/Link.vue
    R ui/src/components/icons/action/List.vue
    R ui/src/components/icons/action/Location.vue
    R ui/src/components/icons/action/LocationCity.vue
    R ui/src/components/icons/action/Lock.vue
    R ui/src/components/icons/action/LockPasswordProtected.vue
    R ui/src/components/icons/action/LogIn.vue
    R ui/src/components/icons/action/LogOut.vue
    R ui/src/components/icons/action/LoggerConfigs.vue
    R ui/src/components/icons/action/ManageProfile.vue
    R ui/src/components/icons/action/MarkComplete.vue
    R ui/src/components/icons/action/MarkIncomplete.vue
    R ui/src/components/icons/action/MarkRead.vue
    R ui/src/components/icons/action/MarkUnread.vue
    R ui/src/components/icons/action/Notifications.vue
    R ui/src/components/icons/action/Options.vue
    R ui/src/components/icons/action/Person.vue
    R ui/src/components/icons/action/Pin.vue
    R ui/src/components/icons/action/PlayCircle.vue
    R ui/src/components/icons/action/Print.vue
    R ui/src/components/icons/action/Remove.vue
    R ui/src/components/icons/action/RemoveUser.vue
    R ui/src/components/icons/action/Reporting.vue
    R ui/src/components/icons/action/Restore.vue
    R ui/src/components/icons/action/Search.vue
    R ui/src/components/icons/action/Send.vue
    R ui/src/components/icons/action/SendWorkflow.vue
    R ui/src/components/icons/action/Settings.vue
    R ui/src/components/icons/action/Share.vue
    R ui/src/components/icons/action/Sort.vue
    R ui/src/components/icons/action/Subscriptions.vue
    R ui/src/components/icons/action/SupportCenter.vue
    R ui/src/components/icons/action/Unlock.vue
    R ui/src/components/icons/action/UpdateSchedules.vue
    R ui/src/components/icons/action/UpdateUtilities.vue
    R ui/src/components/icons/action/UploadFile.vue
    R ui/src/components/icons/action/VerifedUser.vue
    R ui/src/components/icons/action/View.vue
    R ui/src/components/icons/action/ViewDetails.vue
    R ui/src/components/icons/action/Workflow.vue
    R ui/src/components/icons/communication/Certificate.vue
    R ui/src/components/icons/communication/CertificateAlt.vue
    R ui/src/components/icons/communication/Chat.vue
    R ui/src/components/icons/communication/Contacts.vue
    R ui/src/components/icons/communication/Documentation.vue
    R ui/src/components/icons/communication/IdCard.vue
    R ui/src/components/icons/communication/Phone.vue
    R ui/src/components/icons/content/BlogArticle.vue
    R ui/src/components/icons/content/Video.vue
    R ui/src/components/icons/datavis/AreaChart.vue
    R ui/src/components/icons/datavis/BarChart.vue
    R ui/src/components/icons/datavis/ColumnChart.vue
    R ui/src/components/icons/datavis/DonutChart.vue
    R ui/src/components/icons/datavis/Gauge.vue
    R ui/src/components/icons/datavis/LineChart.vue
    R ui/src/components/icons/datavis/PieChart.vue
    R ui/src/components/icons/datavis/PolarChart.vue
    R ui/src/components/icons/datavis/Reporting.vue
    R ui/src/components/icons/datavis/StackedBarChart.vue
    R ui/src/components/icons/datavis/StackedColumnChart.vue
    R ui/src/components/icons/datavis/TreeDiagram.vue
    R ui/src/components/icons/file/Attachment.vue
    R ui/src/components/icons/file/Folder.vue
    R ui/src/components/icons/file/FolderAdd.vue
    R ui/src/components/icons/file/FolderLocked.vue
    R ui/src/components/icons/file/FolderOpen.vue
    R ui/src/components/icons/file/Generic.vue
    R ui/src/components/icons/file/Image.vue
    R ui/src/components/icons/file/Pdf.vue
    R ui/src/components/icons/file/Text.vue
    R ui/src/components/icons/file/WordDoc.vue
    R ui/src/components/icons/file/Xls.vue
    R ui/src/components/icons/file/Zip.vue
    R ui/src/components/icons/hardware/ApplianceProfiles.vue
    R ui/src/components/icons/hardware/Appliances.vue
    R ui/src/components/icons/hardware/AppliancesAlt.vue
    R ui/src/components/icons/hardware/DesktopWindows.vue
    R ui/src/components/icons/hardware/Instances.vue
    R ui/src/components/icons/hardware/KeyboardArrowDown.vue
    R ui/src/components/icons/hardware/KeyboardArrowUp.vue
    R ui/src/components/icons/hardware/Laptop.vue
    R ui/src/components/icons/hardware/MinionProfiles.vue
    R ui/src/components/icons/hardware/Network.vue
    R ui/src/components/icons/hardware/NetworkProfiles.vue
    R ui/src/components/icons/hardware/Router.vue
    R ui/src/components/icons/hardware/Security.vue
    R ui/src/components/icons/hardware/Server.vue
    R ui/src/components/icons/hardware/VirtualMachine.vue
    R ui/src/components/icons/hardware/VirtualMachineAlt.vue
    R ui/src/components/icons/medical/Ambulance.vue
    R ui/src/components/icons/medical/CostSavings.vue
    R ui/src/components/icons/medical/Drug.vue
    R ui/src/components/icons/medical/DrugGroupId.vue
    R ui/src/components/icons/medical/Hospital.vue
    R ui/src/components/icons/medical/Patient.vue
    R ui/src/components/icons/medical/Payor.vue
    R ui/src/components/icons/medical/Provider.vue
    R ui/src/components/icons/medical/ProviderOffice.vue
    R ui/src/components/icons/medical/Treatment.vue
    R ui/src/components/icons/medical/TreatmentCycle.vue
    R ui/src/components/icons/medical/TreatmentSchedule.vue
    R ui/src/components/icons/medical/Vitals.vue
    R ui/src/components/icons/navigation/Apps.vue
    R ui/src/components/icons/navigation/AppsGetMore.vue
    R ui/src/components/icons/navigation/ArrowBack.vue
    R ui/src/components/icons/navigation/ArrowDropDown.vue
    R ui/src/components/icons/navigation/Cancel.vue
    R ui/src/components/icons/navigation/ChevronLeft.vue
    R ui/src/components/icons/navigation/ChevronRight.vue
    R ui/src/components/icons/navigation/ExpandLess.vue
    R ui/src/components/icons/navigation/ExpandMore.vue
    R ui/src/components/icons/navigation/FirstPage.vue
    R ui/src/components/icons/navigation/Fullscreen.vue
    R ui/src/components/icons/navigation/FullscreenExit.vue
    R ui/src/components/icons/navigation/GridView.vue
    R ui/src/components/icons/navigation/LastPage.vue
    R ui/src/components/icons/navigation/Menu.vue
    R ui/src/components/icons/navigation/MenuClose.vue
    R ui/src/components/icons/navigation/MenuOpen.vue
    R ui/src/components/icons/navigation/MoreHoriz.vue
    R ui/src/components/icons/navigation/MoreVert.vue
    R ui/src/components/icons/navigation/Refresh.vue
    R ui/src/components/icons/navigation/SubdirectoryArrowLeft.vue
    R ui/src/components/icons/navigation/SubdirectoryArrowRight.vue
    R ui/src/components/icons/navigation/UnfoldLess.vue
    R ui/src/components/icons/navigation/UnfoldMore.vue
    R ui/src/components/icons/network/AggregationLayer.vue
    R ui/src/components/icons/network/AggregationLayerAlt1.vue
    R ui/src/components/icons/network/AggregationLayerAlt2.vue
    R ui/src/components/icons/network/AggregationLayerAlt3.vue
    R ui/src/components/icons/network/AggregationLayerAlt4.vue
    R ui/src/components/icons/network/AggregationLayerAlt5.vue
    R ui/src/components/icons/network/ApiConfig.vue
    R ui/src/components/icons/network/ApiEndpoints.vue
    R ui/src/components/icons/network/ApplianceProfiles.vue
    R ui/src/components/icons/network/Appliances.vue
    R ui/src/components/icons/network/AppliancesAlt.vue
    R ui/src/components/icons/network/Build.vue
    R ui/src/components/icons/network/CertificateAlt.vue
    R ui/src/components/icons/network/Cloud.vue
    R ui/src/components/icons/network/CloudBackUp.vue
    R ui/src/components/icons/network/CloudDownload.vue
    R ui/src/components/icons/network/CloudService.vue
    R ui/src/components/icons/network/CloudUpload.vue
    R ui/src/components/icons/network/Code.vue
    R ui/src/components/icons/network/Compare.vue
    R ui/src/components/icons/network/Compare1.vue
    R ui/src/components/icons/network/Compliance.vue
    R ui/src/components/icons/network/Configuration.vue
    R ui/src/components/icons/network/Connection.vue
    R ui/src/components/icons/network/ContainerAdd.vue
    R ui/src/components/icons/network/ContainerTransient.vue
    R ui/src/components/icons/network/ContainerUnknown.vue
    R ui/src/components/icons/network/Database.vue
    R ui/src/components/icons/network/Desktop.vue
    R ui/src/components/icons/network/Digitize.vue
    R ui/src/components/icons/network/DistributedMonitoring.vue
    R ui/src/components/icons/network/ElectricalServices.vue
    R ui/src/components/icons/network/EndUser.vue
    R ui/src/components/icons/network/ExitCompare.vue
    R ui/src/components/icons/network/ExitCompareModeAlt.vue
    R ui/src/components/icons/network/ExtractData.vue
    R ui/src/components/icons/network/Firewall.vue
    R ui/src/components/icons/network/Instances.vue
    R ui/src/components/icons/network/Inventory.vue
    R ui/src/components/icons/network/InventoryAdd.vue
    R ui/src/components/icons/network/InventoryAlt.vue
    R ui/src/components/icons/network/InventoryConfirm.vue
    R ui/src/components/icons/network/InventoryDelete.vue
    R ui/src/components/icons/network/Laptop.vue
    R ui/src/components/icons/network/LogFile.vue
    R ui/src/components/icons/network/LoggerConfigs.vue
    R ui/src/components/icons/network/Logs.vue
    R ui/src/components/icons/network/LogsAlt.vue
    R ui/src/components/icons/network/Microservices.vue
    R ui/src/components/icons/network/Minion.vue
    R ui/src/components/icons/network/MinionProfiles.vue
    R ui/src/components/icons/network/Monitoring.vue
    R ui/src/components/icons/network/NetworkProfiles.vue
    R ui/src/components/icons/network/Nodes.vue
    R ui/src/components/icons/network/Policy.vue
    R ui/src/components/icons/network/Power.vue
    R ui/src/components/icons/network/RouterLan.vue
    R ui/src/components/icons/network/RouterWan.vue
    R ui/src/components/icons/network/Security.vue
    R ui/src/components/icons/network/SecurityScan.vue
    R ui/src/components/icons/network/Server.vue
    R ui/src/components/icons/network/ServerClock.vue
    R ui/src/components/icons/network/Switch.vue
    R ui/src/components/icons/network/Terminal.vue
    R ui/src/components/icons/network/UpdateUtilities.vue
    R ui/src/components/icons/network/Utilities.vue
    R ui/src/components/icons/network/ViewCode.vue
    R ui/src/components/icons/network/VirtualMachine.vue
    R ui/src/components/icons/network/VirtualMachineAlt.vue
    R ui/src/components/icons/network/VirtualMachineAlt2.vue
    R ui/src/components/icons/network/WifiRouter.vue
    R ui/src/components/icons/notification/Connected.vue
    R ui/src/components/icons/notification/Error.vue
    R ui/src/components/icons/notification/NotificationSelected.vue
    R ui/src/components/icons/notification/NotificationSoundSelected.vue
    R ui/src/components/icons/notification/NotificationsOff.vue
    R ui/src/components/icons/notification/Unconnected.vue
    R ui/src/components/icons/notification/Warning.vue
    R ui/src/components/icons/notification/Wifi.vue
    R ui/src/components/icons/notification/WifiNoConnection.vue
    R ui/src/components/icons/notification/WifiOff.vue
    R ui/src/components/icons/notification/WifiSignalBad.vue
    R ui/src/components/icons/notification/WifiStatusBar.vue
    R ui/src/components/icons/status/Available.vue
    R ui/src/components/icons/status/Unavailable.vue
    M ui/src/containers/EventConfigurationDetail.vue
    M ui/src/containers/SnmpDataCollection.vue
    M ui/src/containers/SnmpDataCollectionSourceDetail.vue
    M ui/tests/components/AdhocGraphs/AdhocGraphBuilder.test.ts
    M ui/tests/components/Menu/UserSelfServiceMenuItem.test.ts

  Log Message:
  -----------
  Merge remote-tracking branch 'origin/foundation-2026' into release-36.x


  Commit: 3aea4e669b70591e2ab0b9f71849057fd60ff217
      https://github.com/OpenNMS/opennms/commit/3aea4e669b70591e2ab0b9f71849057fd60ff217
  Author: Morteza E <[email protected]>
  Date:   2026-08-19 (Wed, 19 Aug 2026)

  Changed paths:
    M .circleci/trivy-config/trivyignore
    M container/features/src/main/resources/overrides.properties
    M container/karaf/pom.xml
    M container/karaf/src/main/filtered-resources/etc/org.ops4j.pax.logging.cfg
    M container/karaf/src/main/internal/features-processing.xml
    M container/shared/pom.xml
    M container/shared/src/main/filtered-resources/etc/overrides.properties
    M container/shared/src/main/internal/features-processing.xml
    M container/shared/src/main/resources/etc/org.ops4j.pax.logging.cfg
    M features/container/sentinel/pom.xml
    M pom.xml

  Log Message:
  -----------
  Merge remote-tracking branch 'origin/foundation-2025' into foundation-2026


  Commit: 68ce806c47f57f35b581a889592639295ff7db62
      https://github.com/OpenNMS/opennms/commit/68ce806c47f57f35b581a889592639295ff7db62
  Author: Scott Theleman <[email protected]>
  Date:   2026-08-19 (Wed, 19 Aug 2026)

  Changed paths:
    A opennms-webapp/src/test/java/org/opennms/web/StaticAssetReferenceTest.java

  Log Message:
  -----------
  NMS-20246: Fail the build on dangling static image references in the webapp (#8802)

* NMS-20246: Fail the build on dangling static image references in the webapp
* NMS-20246: Only treat images/ as local when it is a whole path segment


  Commit: 0a9983aa2918cbb3a5878193547cb972fa810773
      https://github.com/OpenNMS/opennms/commit/0a9983aa2918cbb3a5878193547cb972fa810773
  Author: Scott Theleman <[email protected]>
  Date:   2026-08-19 (Wed, 19 Aug 2026)

  Changed paths:
    M ui/CLAUDE.md
    M ui/packages/onms-ui/README.md
    M ui/packages/onms-ui/src/components/OnmsAutoComplete.vue
    M ui/packages/onms-ui/src/components/OnmsIconButton.vue
    M ui/packages/onms-ui/src/components/OnmsSearchInput.vue
    M ui/packages/onms-ui/src/directives/OnmsTooltip.ts
    M ui/src/components/AdhocGraphs/AdhocChartToolbar.vue
    M ui/src/components/Configuration/ConfigurationAdvancedPanel.vue
    M ui/src/components/Configuration/ConfigurationCopyPasteDisplay.vue
    M ui/src/components/Configuration/ConfigurationTable.vue
    M ui/src/components/Configuration/ProvisionDForm.vue
    M ui/src/components/Device/DCBModalConfigDiffContent.vue
    M ui/src/components/Device/DCBModalViewHistoryContent.vue
    M ui/src/components/Device/DCBSearch.vue
    M ui/src/components/EventConfiguration/EventConfigSourceTable.vue
    M ui/src/components/EventConfiguration/EventConfigUploadFilesTab.vue
    M ui/src/components/FileEditor/FileSidebar.vue
    M ui/src/components/FileEditor/Search.vue
    M ui/src/components/Map/MapSearch.vue
    M ui/src/components/Menu/Menubar.vue
    M ui/src/components/Menu/Search.vue
    M ui/src/components/Menu/SideMenu.vue
    M ui/src/components/Nodes/NodesTable.vue
    M ui/src/components/SCV/ScvInputIcon.vue
    M ui/src/components/SCV/ScvSearchDrawer.vue
    M ui/src/components/SnmpConfiguration/SnmpConfigDefinitionsTable.vue
    M ui/src/components/SnmpConfiguration/SnmpConfigProfilesTable.vue
    M ui/src/styles/opennms-styles.scss
    M ui/tests/components/EventConfiguration/EventConfigUploadFilesTab.test.ts
    A ui/tests/components/Map/MapSearch.test.ts
    A ui/tests/components/Menu/Menubar.test.ts
    M ui/tests/components/Menu/SideMenu.test.ts
    M ui/tests/onms-ui/OnmsAutoComplete.test.ts
    M ui/tests/onms-ui/OnmsIconButton.test.ts
    M ui/tests/onms-ui/OnmsSearchInput.test.ts
    M ui/tests/onms-ui/OnmsTooltip.test.ts

  Log Message:
  -----------
  NMS-20160 / NMS-20162 — Search field clear button, map search icons, first-class tooltips (#8797)

* NMS-20160: Add a clear button to OnmsSearchInput and move the search icon left

Also fixes a pre-existing Menubar bug found on the way: useOutsideClick was
called with `outsideClick.value` (undefined at setup — the composable reads
.value when the click arrives) and its returned `active` ref was never set,
so the listener had never run.

* NMS-20160: Give the map search a seam search icon and a clear control

* NMS-20162: Make tooltip a first-class prop on OnmsIconButton


* Update DCBTable to use OnmsIconButton

* NMS-20162: Correct the Menubar date-tooltip comment

* NMS-20162: Use OnmsIconButton for the duplicate-file action on the upload tab

* NMS-20160: Fix the search/autocomplete clear affordances


* NMS-20162: Keep the DCB config-type indicator a plain icon

Also drop the stray empty plugin/config from the OnmsIconButton test mount.

* NMS-20160: Make the map search clear control a real button

* NMS-20162: Capture the tooltip z-index for late values, drop the remount

* NMS-20160: Own the search field's icon size and its padding reservation

* NMS-20160: Keep the expanded side menu clear of the Vaadin topology page

* NMS-20160: Make the search field's padding survive host page CSS


  Commit: 1bf64761ed2a66500b47ff3249b82ae12f0ec90f
      https://github.com/OpenNMS/opennms/commit/1bf64761ed2a66500b47ff3249b82ae12f0ec90f
  Author: mershad-manesh <[email protected]>
  Date:   2026-08-19 (Wed, 19 Aug 2026)

  Changed paths:
    M .circleci/epoch

  Log Message:
  -----------
  Update epoch


  Commit: a49a5f5ce6b50468871d7733f7de0f70faa1cfbf
      https://github.com/OpenNMS/opennms/commit/a49a5f5ce6b50468871d7733f7de0f70faa1cfbf
  Author: CI/CD System <[email protected]>
  Date:   2026-08-19 (Wed, 19 Aug 2026)

  Changed paths:
    M .circleci/epoch
    M features/springframework-security/src/main/java/org/opennms/web/springframework/security/AuthorityPrincipal.java
    M features/springframework-security/src/main/java/org/opennms/web/springframework/security/LoginModuleUtils.java
    M features/springframework-security/src/main/java/org/opennms/web/springframework/security/OpenNMSAuthSuccessHandler.java
    M features/springframework-security/src/test/java/org/opennms/web/springframework/security/LoginModuleUtilsTest.java
    M opennms-webapp/src/main/webapp/WEB-INF/applicationContext-spring-security.xml
    M opennms-webapp/src/main/webapp/includes/bootstrap.jsp
    M smoke-test/src/test/java/org/opennms/smoketest/WebappIT.java
    M ui/CLAUDE.md
    M ui/MENU_TEMPLATES.md
    M ui/THIRD-PARTY-LICENSE.md
    M ui/copilot-instructions.md
    M ui/packages/onms-ui/README.md
    M ui/packages/onms-ui/package.json
    M ui/packages/onms-ui/src/components/OnmsIcon.vue
    M ui/packages/onms-ui/src/components/OnmsSearchInput.vue
    R ui/packages/onms-ui/src/icons/SearchGlyph.vue
    A ui/packages/onms-ui/src/icons/account/Group.vue
    A ui/packages/onms-ui/src/icons/action/AccountCircle.vue
    A ui/packages/onms-ui/src/icons/action/Add.vue
    A ui/packages/onms-ui/src/icons/action/AddCircleAlt.vue
    A ui/packages/onms-ui/src/icons/action/AddComment.vue
    A ui/packages/onms-ui/src/icons/action/AddNote.vue
    A ui/packages/onms-ui/src/icons/action/AddUser.vue
    A ui/packages/onms-ui/src/icons/action/Archive.vue
    A ui/packages/onms-ui/src/icons/action/AssignTo.vue
    A ui/packages/onms-ui/src/icons/action/AttachEmail.vue
    A ui/packages/onms-ui/src/icons/action/AttachFile.vue
    A ui/packages/onms-ui/src/icons/action/Build.vue
    A ui/packages/onms-ui/src/icons/action/Business.vue
    A ui/packages/onms-ui/src/icons/action/Calendar.vue
    A ui/packages/onms-ui/src/icons/action/CalendarEndDate.vue
    A ui/packages/onms-ui/src/icons/action/CalendarStartDate.vue
    A ui/packages/onms-ui/src/icons/action/Cancel.vue
    A ui/packages/onms-ui/src/icons/action/ChangeOwner.vue
    A ui/packages/onms-ui/src/icons/action/CheckCircle.vue
    A ui/packages/onms-ui/src/icons/action/Cloud.vue
    A ui/packages/onms-ui/src/icons/action/CloudDownload.vue
    A ui/packages/onms-ui/src/icons/action/CloudUpload.vue
    A ui/packages/onms-ui/src/icons/action/Code.vue
    A ui/packages/onms-ui/src/icons/action/Comment.vue
    A ui/packages/onms-ui/src/icons/action/ContactSupport.vue
    A ui/packages/onms-ui/src/icons/action/ContentCopy.vue
    A ui/packages/onms-ui/src/icons/action/ContentPaste.vue
    A ui/packages/onms-ui/src/icons/action/Cycle.vue
    A ui/packages/onms-ui/src/icons/action/Dashboard.vue
    A ui/packages/onms-ui/src/icons/action/DateRange.vue
    A ui/packages/onms-ui/src/icons/action/Delete.vue
    A ui/packages/onms-ui/src/icons/action/DownloadFile.vue
    A ui/packages/onms-ui/src/icons/action/Edit.vue
    A ui/packages/onms-ui/src/icons/action/EditMode.vue
    A ui/packages/onms-ui/src/icons/action/Email.vue
    A ui/packages/onms-ui/src/icons/action/EmailDraft.vue
    A ui/packages/onms-ui/src/icons/action/EmailInbox.vue
    A ui/packages/onms-ui/src/icons/action/EmailSecure.vue
    A ui/packages/onms-ui/src/icons/action/ExitToApp.vue
    A ui/packages/onms-ui/src/icons/action/Expand.vue
    A ui/packages/onms-ui/src/icons/action/Feedback.vue
    A ui/packages/onms-ui/src/icons/action/FeedbackAlt.vue
    A ui/packages/onms-ui/src/icons/action/FileCopy.vue
    A ui/packages/onms-ui/src/icons/action/FilterAlt.vue
    A ui/packages/onms-ui/src/icons/action/Group.vue
    A ui/packages/onms-ui/src/icons/action/Help.vue
    A ui/packages/onms-ui/src/icons/action/Hide.vue
    A ui/packages/onms-ui/src/icons/action/Home.vue
    A ui/packages/onms-ui/src/icons/action/Info.vue
    A ui/packages/onms-ui/src/icons/action/InformationExchange.vue
    A ui/packages/onms-ui/src/icons/action/LightDarkMode.vue
    A ui/packages/onms-ui/src/icons/action/Link.vue
    A ui/packages/onms-ui/src/icons/action/List.vue
    A ui/packages/onms-ui/src/icons/action/Location.vue
    A ui/packages/onms-ui/src/icons/action/LocationCity.vue
    A ui/packages/onms-ui/src/icons/action/Lock.vue
    A ui/packages/onms-ui/src/icons/action/LockPasswordProtected.vue
    A ui/packages/onms-ui/src/icons/action/LogIn.vue
    A ui/packages/onms-ui/src/icons/action/LogOut.vue
    A ui/packages/onms-ui/src/icons/action/LoggerConfigs.vue
    A ui/packages/onms-ui/src/icons/action/ManageProfile.vue
    A ui/packages/onms-ui/src/icons/action/MarkComplete.vue
    A ui/packages/onms-ui/src/icons/action/MarkIncomplete.vue
    A ui/packages/onms-ui/src/icons/action/MarkRead.vue
    A ui/packages/onms-ui/src/icons/action/MarkUnread.vue
    A ui/packages/onms-ui/src/icons/action/Notifications.vue
    A ui/packages/onms-ui/src/icons/action/Options.vue
    A ui/packages/onms-ui/src/icons/action/Person.vue
    A ui/packages/onms-ui/src/icons/action/Pin.vue
    A ui/packages/onms-ui/src/icons/action/PlayCircle.vue
    A ui/packages/onms-ui/src/icons/action/Print.vue
    A ui/packages/onms-ui/src/icons/action/Remove.vue
    A ui/packages/onms-ui/src/icons/action/RemoveUser.vue
    A ui/packages/onms-ui/src/icons/action/Reporting.vue
    A ui/packages/onms-ui/src/icons/action/Restore.vue
    A ui/packages/onms-ui/src/icons/action/Search.vue
    A ui/packages/onms-ui/src/icons/action/Send.vue
    A ui/packages/onms-ui/src/icons/action/SendWorkflow.vue
    A ui/packages/onms-ui/src/icons/action/Settings.vue
    A ui/packages/onms-ui/src/icons/action/Share.vue
    A ui/packages/onms-ui/src/icons/action/Sort.vue
    A ui/packages/onms-ui/src/icons/action/Subscriptions.vue
    A ui/packages/onms-ui/src/icons/action/SupportCenter.vue
    A ui/packages/onms-ui/src/icons/action/Unlock.vue
    A ui/packages/onms-ui/src/icons/action/UpdateSchedules.vue
    A ui/packages/onms-ui/src/icons/action/UpdateUtilities.vue
    A ui/packages/onms-ui/src/icons/action/UploadFile.vue
    A ui/packages/onms-ui/src/icons/action/VerifedUser.vue
    A ui/packages/onms-ui/src/icons/action/View.vue
    A ui/packages/onms-ui/src/icons/action/ViewDetails.vue
    A ui/packages/onms-ui/src/icons/action/Workflow.vue
    A ui/packages/onms-ui/src/icons/communication/Certificate.vue
    A ui/packages/onms-ui/src/icons/communication/CertificateAlt.vue
    A ui/packages/onms-ui/src/icons/communication/Chat.vue
    A ui/packages/onms-ui/src/icons/communication/Contacts.vue
    A ui/packages/onms-ui/src/icons/communication/Documentation.vue
    A ui/packages/onms-ui/src/icons/communication/IdCard.vue
    A ui/packages/onms-ui/src/icons/communication/Phone.vue
    A ui/packages/onms-ui/src/icons/content/BlogArticle.vue
    A ui/packages/onms-ui/src/icons/content/Video.vue
    A ui/packages/onms-ui/src/icons/datavis/AreaChart.vue
    A ui/packages/onms-ui/src/icons/datavis/BarChart.vue
    A ui/packages/onms-ui/src/icons/datavis/ColumnChart.vue
    A ui/packages/onms-ui/src/icons/datavis/DonutChart.vue
    A ui/packages/onms-ui/src/icons/datavis/Gauge.vue
    A ui/packages/onms-ui/src/icons/datavis/LineChart.vue
    A ui/packages/onms-ui/src/icons/datavis/PieChart.vue
    A ui/packages/onms-ui/src/icons/datavis/PolarChart.vue
    A ui/packages/onms-ui/src/icons/datavis/Reporting.vue
    A ui/packages/onms-ui/src/icons/datavis/StackedBarChart.vue
    A ui/packages/onms-ui/src/icons/datavis/StackedColumnChart.vue
    A ui/packages/onms-ui/src/icons/datavis/TreeDiagram.vue
    A ui/packages/onms-ui/src/icons/file/Attachment.vue
    A ui/packages/onms-ui/src/icons/file/Folder.vue
    A ui/packages/onms-ui/src/icons/file/FolderAdd.vue
    A ui/packages/onms-ui/src/icons/file/FolderLocked.vue
    A ui/packages/onms-ui/src/icons/file/FolderOpen.vue
    A ui/packages/onms-ui/src/icons/file/Generic.vue
    A ui/packages/onms-ui/src/icons/file/Image.vue
    A ui/packages/onms-ui/src/icons/file/Pdf.vue
    A ui/packages/onms-ui/src/icons/file/Text.vue
    A ui/packages/onms-ui/src/icons/file/WordDoc.vue
    A ui/packages/onms-ui/src/icons/file/Xls.vue
    A ui/packages/onms-ui/src/icons/file/Zip.vue
    A ui/packages/onms-ui/src/icons/hardware/ApplianceProfiles.vue
    A ui/packages/onms-ui/src/icons/hardware/Appliances.vue
    A ui/packages/onms-ui/src/icons/hardware/AppliancesAlt.vue
    A ui/packages/onms-ui/src/icons/hardware/DesktopWindows.vue
    A ui/packages/onms-ui/src/icons/hardware/Instances.vue
    A ui/packages/onms-ui/src/icons/hardware/KeyboardArrowDown.vue
    A ui/packages/onms-ui/src/icons/hardware/KeyboardArrowUp.vue
    A ui/packages/onms-ui/src/icons/hardware/Laptop.vue
    A ui/packages/onms-ui/src/icons/hardware/MinionProfiles.vue
    A ui/packages/onms-ui/src/icons/hardware/Network.vue
    A ui/packages/onms-ui/src/icons/hardware/NetworkProfiles.vue
    A ui/packages/onms-ui/src/icons/hardware/Router.vue
    A ui/packages/onms-ui/src/icons/hardware/Security.vue
    A ui/packages/onms-ui/src/icons/hardware/Server.vue
    A ui/packages/onms-ui/src/icons/hardware/VirtualMachine.vue
    A ui/packages/onms-ui/src/icons/hardware/VirtualMachineAlt.vue
    A ui/packages/onms-ui/src/icons/medical/Ambulance.vue
    A ui/packages/onms-ui/src/icons/medical/CostSavings.vue
    A ui/packages/onms-ui/src/icons/medical/Drug.vue
    A ui/packages/onms-ui/src/icons/medical/DrugGroupId.vue
    A ui/packages/onms-ui/src/icons/medical/Hospital.vue
    A ui/packages/onms-ui/src/icons/medical/Patient.vue
    A ui/packages/onms-ui/src/icons/medical/Payor.vue
    A ui/packages/onms-ui/src/icons/medical/Provider.vue
    A ui/packages/onms-ui/src/icons/medical/ProviderOffice.vue
    A ui/packages/onms-ui/src/icons/medical/Treatment.vue
    A ui/packages/onms-ui/src/icons/medical/TreatmentCycle.vue
    A ui/packages/onms-ui/src/icons/medical/TreatmentSchedule.vue
    A ui/packages/onms-ui/src/icons/medical/Vitals.vue
    A ui/packages/onms-ui/src/icons/navigation/Apps.vue
    A ui/packages/onms-ui/src/icons/navigation/AppsGetMore.vue
    A ui/packages/onms-ui/src/icons/navigation/ArrowBack.vue
    A ui/packages/onms-ui/src/icons/navigation/ArrowDropDown.vue
    A ui/packages/onms-ui/src/icons/navigation/Cancel.vue
    A ui/packages/onms-ui/src/icons/navigation/ChevronLeft.vue
    A ui/packages/onms-ui/src/icons/navigation/ChevronRight.vue
    A ui/packages/onms-ui/src/icons/navigation/ExpandLess.vue
    A ui/packages/onms-ui/src/icons/navigation/ExpandMore.vue
    A ui/packages/onms-ui/src/icons/navigation/FirstPage.vue
    A ui/packages/onms-ui/src/icons/navigation/Fullscreen.vue
    A ui/packages/onms-ui/src/icons/navigation/FullscreenExit.vue
    A ui/packages/onms-ui/src/icons/navigation/GridView.vue
    A ui/packages/onms-ui/src/icons/navigation/LastPage.vue
    A ui/packages/onms-ui/src/icons/navigation/Menu.vue
    A ui/packages/onms-ui/src/icons/navigation/MenuClose.vue
    A ui/packages/onms-ui/src/icons/navigation/MenuOpen.vue
    A ui/packages/onms-ui/src/icons/navigation/MoreHoriz.vue
    A ui/packages/onms-ui/src/icons/navigation/MoreVert.vue
    A ui/packages/onms-ui/src/icons/navigation/Refresh.vue
    A ui/packages/onms-ui/src/icons/navigation/SubdirectoryArrowLeft.vue
    A ui/packages/onms-ui/src/icons/navigation/SubdirectoryArrowRight.vue
    A ui/packages/onms-ui/src/icons/navigation/UnfoldLess.vue
    A ui/packages/onms-ui/src/icons/navigation/UnfoldMore.vue
    A ui/packages/onms-ui/src/icons/network/AggregationLayer.vue
    A ui/packages/onms-ui/src/icons/network/AggregationLayerAlt1.vue
    A ui/packages/onms-ui/src/icons/network/AggregationLayerAlt2.vue
    A ui/packages/onms-ui/src/icons/network/AggregationLayerAlt3.vue
    A ui/packages/onms-ui/src/icons/network/AggregationLayerAlt4.vue
    A ui/packages/onms-ui/src/icons/network/AggregationLayerAlt5.vue
    A ui/packages/onms-ui/src/icons/network/ApiConfig.vue
    A ui/packages/onms-ui/src/icons/network/ApiEndpoints.vue
    A ui/packages/onms-ui/src/icons/network/ApplianceProfiles.vue
    A ui/packages/onms-ui/src/icons/network/Appliances.vue
    A ui/packages/onms-ui/src/icons/network/AppliancesAlt.vue
    A ui/packages/onms-ui/src/icons/network/Build.vue
    A ui/packages/onms-ui/src/icons/network/CertificateAlt.vue
    A ui/packages/onms-ui/src/icons/network/Cloud.vue
    A ui/packages/onms-ui/src/icons/network/CloudBackUp.vue
    A ui/packages/onms-ui/src/icons/network/CloudDownload.vue
    A ui/packages/onms-ui/src/icons/network/CloudService.vue
    A ui/packages/onms-ui/src/icons/network/CloudUpload.vue
    A ui/packages/onms-ui/src/icons/network/Code.vue
    A ui/packages/onms-ui/src/icons/network/Compare.vue
    A ui/packages/onms-ui/src/icons/network/Compare1.vue
    A ui/packages/onms-ui/src/icons/network/Compliance.vue
    A ui/packages/onms-ui/src/icons/network/Configuration.vue
    A ui/packages/onms-ui/src/icons/network/Connection.vue
    A ui/packages/onms-ui/src/icons/network/ContainerAdd.vue
    A ui/packages/onms-ui/src/icons/network/ContainerTransient.vue
    A ui/packages/onms-ui/src/icons/network/ContainerUnknown.vue
    A ui/packages/onms-ui/src/icons/network/Database.vue
    A ui/packages/onms-ui/src/icons/network/Desktop.vue
    A ui/packages/onms-ui/src/icons/network/Digitize.vue
    A ui/packages/onms-ui/src/icons/network/DistributedMonitoring.vue
    A ui/packages/onms-ui/src/icons/network/ElectricalServices.vue
    A ui/packages/onms-ui/src/icons/network/EndUser.vue
    A ui/packages/onms-ui/src/icons/network/ExitCompare.vue
    A ui/packages/onms-ui/src/icons/network/ExitCompareModeAlt.vue
    A ui/packages/onms-ui/src/icons/network/ExtractData.vue
    A ui/packages/onms-ui/src/icons/network/Firewall.vue
    A ui/packages/onms-ui/src/icons/network/Instances.vue
    A ui/packages/onms-ui/src/icons/network/Inventory.vue
    A ui/packages/onms-ui/src/icons/network/InventoryAdd.vue
    A ui/packages/onms-ui/src/icons/network/InventoryAlt.vue
    A ui/packages/onms-ui/src/icons/network/InventoryConfirm.vue
    A ui/packages/onms-ui/src/icons/network/InventoryDelete.vue
    A ui/packages/onms-ui/src/icons/network/Laptop.vue
    A ui/packages/onms-ui/src/icons/network/LogFile.vue
    A ui/packages/onms-ui/src/icons/network/LoggerConfigs.vue
    A ui/packages/onms-ui/src/icons/network/Logs.vue
    A ui/packages/onms-ui/src/icons/network/LogsAlt.vue
    A ui/packages/onms-ui/src/icons/network/Microservices.vue
    A ui/packages/onms-ui/src/icons/network/Minion.vue
    A ui/packages/onms-ui/src/icons/network/MinionProfiles.vue
    A ui/packages/onms-ui/src/icons/network/Monitoring.vue
    A ui/packages/onms-ui/src/icons/network/NetworkProfiles.vue
    A ui/packages/onms-ui/src/icons/network/Nodes.vue
    A ui/packages/onms-ui/src/icons/network/Policy.vue
    A ui/packages/onms-ui/src/icons/network/Power.vue
    A ui/packages/onms-ui/src/icons/network/RouterLan.vue
    A ui/packages/onms-ui/src/icons/network/RouterWan.vue
    A ui/packages/onms-ui/src/icons/network/Security.vue
    A ui/packages/onms-ui/src/icons/network/SecurityScan.vue
    A ui/packages/onms-ui/src/icons/network/Server.vue
    A ui/packages/onms-ui/src/icons/network/ServerClock.vue
    A ui/packages/onms-ui/src/icons/network/Switch.vue
    A ui/packages/onms-ui/src/icons/network/Terminal.vue
    A ui/packages/onms-ui/src/icons/network/UpdateUtilities.vue
    A ui/packages/onms-ui/src/icons/network/Utilities.vue
    A ui/packages/onms-ui/src/icons/network/ViewCode.vue
    A ui/packages/onms-ui/src/icons/network/VirtualMachine.vue
    A ui/packages/onms-ui/src/icons/network/VirtualMachineAlt.vue
    A ui/packages/onms-ui/src/icons/network/VirtualMachineAlt2.vue
    A ui/packages/onms-ui/src/icons/network/WifiRouter.vue
    A ui/packages/onms-ui/src/icons/notification/Connected.vue
    A ui/packages/onms-ui/src/icons/notification/Error.vue
    A ui/packages/onms-ui/src/icons/notification/NotificationSelected.vue
    A ui/packages/onms-ui/src/icons/notification/NotificationSoundSelected.vue
    A ui/packages/onms-ui/src/icons/notification/NotificationsOff.vue
    A ui/packages/onms-ui/src/icons/notification/Unconnected.vue
    A ui/packages/onms-ui/src/icons/notification/Warning.vue
    A ui/packages/onms-ui/src/icons/notification/Wifi.vue
    A ui/packages/onms-ui/src/icons/notification/WifiNoConnection.vue
    A ui/packages/onms-ui/src/icons/notification/WifiOff.vue
    A ui/packages/onms-ui/src/icons/notification/WifiSignalBad.vue
    A ui/packages/onms-ui/src/icons/notification/WifiStatusBar.vue
    A ui/packages/onms-ui/src/icons/status/Available.vue
    A ui/packages/onms-ui/src/icons/status/Unavailable.vue
    M ui/scripts/generate-icons.mjs
    M ui/src/components/AdhocGraphs/AdhocChartToolbar.vue
    M ui/src/components/AdhocGraphs/AdhocGraphBuilder.vue
    M ui/src/components/AdhocGraphs/ExpressionEditor.vue
    M ui/src/components/AdhocGraphs/SeriesTable.vue
    M ui/src/components/Configuration/ConfigurationAdvancedPanel.vue
    M ui/src/components/Configuration/ConfigurationCopyPasteDisplay.vue
    M ui/src/components/Configuration/ConfigurationDrawer.vue
    M ui/src/components/Configuration/ConfigurationHelpPanel.vue
    M ui/src/components/Configuration/ConfigurationTable.vue
    M ui/src/components/Configuration/ProvisionDForm.vue
    M ui/src/components/Device/DCBGroupFilters.vue
    M ui/src/components/Device/DCBModalConfigDiffContent.vue
    M ui/src/components/Device/DCBModalViewHistoryContent.vue
    M ui/src/components/Device/DCBTable.vue
    M ui/src/components/Device/DCBTableStatusDropdown.vue
    M ui/src/components/EventConfigEventCreate/BasicInformation.vue
    M ui/src/components/EventConfigEventCreate/MaskElements.vue
    M ui/src/components/EventConfigEventCreate/MaskVarbinds.vue
    M ui/src/components/EventConfigEventCreate/VarbindsDecode.vue
    M ui/src/components/EventConfiguration/EventConfigSourceTable.vue
    M ui/src/components/EventConfiguration/EventConfigUploadFilesTab.vue
    M ui/src/components/EventConfigurationDetail/EventConfigEventTable.vue
    M ui/src/components/FileEditor/Console.vue
    M ui/src/components/FileEditor/FileSidebar.vue
    M ui/src/components/FileEditor/FileTreeItem.vue
    M ui/src/components/FileEditor/Help.vue
    M ui/src/components/FileEditor/TopBar.vue
    M ui/src/components/Logs/Editor.vue
    M ui/src/components/Map/MarkerClusterPopupContent.vue
    M ui/src/components/Map/MarkerPopup.vue
    M ui/src/components/Menu/Menubar.vue
    M ui/src/components/Menu/Search.vue
    M ui/src/components/Menu/SearchResult.vue
    M ui/src/components/Menu/SideMenu.vue
    M ui/src/components/Menu/UserNotificationsMenuItem.vue
    M ui/src/components/Menu/UserSelfServiceMenuItem.vue
    M ui/src/components/Menu/useMenuIcons.ts
    M ui/src/components/Menu/utils.ts
    M ui/src/components/Nodes/AssetFilterPanel.vue
    M ui/src/components/Nodes/ColumnSelectionDrawer.vue
    M ui/src/components/Nodes/ExtendedSearchPanel.vue
    M ui/src/components/Nodes/FlowTooltipCell.vue
    M ui/src/components/Nodes/NodeActionsDropdown.vue
    M ui/src/components/Nodes/NodeAdvancedFiltersDrawer.vue
    M ui/src/components/Nodes/NodeDownloadDropdown.vue
    M ui/src/components/Nodes/NodesTable.vue
    M ui/src/components/Resources/TimeControls.vue
    M ui/src/components/SCV/SCVAttribute.vue
    M ui/src/components/SCV/SCVForm.vue
    M ui/src/components/SCV/ScvInputIcon.vue
    M ui/src/components/SnmpConfiguration/SnmpConfigDefaultsPanel.vue
    M ui/src/components/SnmpConfiguration/SnmpConfigDefinitionBasicInformation.vue
    M ui/src/components/SnmpConfiguration/SnmpConfigDefinitionsTab.vue
    M ui/src/components/SnmpConfiguration/SnmpConfigDefinitionsTable.vue
    M ui/src/components/SnmpConfiguration/SnmpConfigLookupPanel.vue
    M ui/src/components/SnmpConfiguration/SnmpConfigProfileBasicInformation.vue
    M ui/src/components/SnmpConfiguration/SnmpConfigProfilesTab.vue
    M ui/src/components/SnmpConfiguration/SnmpConfigProfilesTable.vue
    M ui/src/components/SnmpConfiguration/SnmpConfigUploadDownloadTab.vue
    M ui/src/components/SnmpDataCollection/SnmpDataCollectionProfile/ProfileRrdSettingsTab.vue
    M ui/src/components/SnmpDataCollection/SnmpDataCollectionProfile/ProfileSourcesTab.vue
    M ui/src/components/SnmpDataCollection/SnmpDataCollectionProfile/SnmpDataCollectionProfileDetails.vue
    M ui/src/components/SnmpDataCollection/SnmpDataCollectionProfilesTable.vue
    M ui/src/components/SnmpDataCollection/SnmpDataCollectionSourceDetail/Drawer/MibGroupCreationDrawer.vue
    M ui/src/components/SnmpDataCollection/SnmpDataCollectionSourceDetail/Drawer/ResourceTypeCreationDrawer.vue
    M ui/src/components/SnmpDataCollection/SnmpDataCollectionSourceDetail/MibGroupsTable.vue
    M ui/src/components/SnmpDataCollection/SnmpDataCollectionSourceDetail/ResourceTypesTable.vue
    M ui/src/components/SnmpDataCollection/SnmpDataCollectionSourceDetail/SystemDefinitionsTable.vue
    M ui/src/components/SnmpDataCollection/SnmpDataCollectionSourceImport.vue
    M ui/src/components/SnmpDataCollection/SnmpDataCollectionSourcesTable.vue
    M ui/src/components/TrapdConfiguration/CreateSnmpV3User.vue
    M ui/src/components/TrapdConfiguration/GeneralConfiguration.vue
    M ui/src/components/TrapdConfiguration/SnmpV3UserManagement.vue
    M ui/src/components/TrapdConfiguration/TrapdAdvancedConfiguration.vue
    M ui/src/components/UsageStatistics/UsageStatisticsHeader.vue
    M ui/src/components/ZenithConnect/ZenithConnectRegisterResult.vue
    M ui/src/components/ZenithConnect/ZenithConnectView.vue
    R ui/src/components/icons/account/Group.vue
    R ui/src/components/icons/action/AccountCircle.vue
    R ui/src/components/icons/action/Add.vue
    R ui/src/components/icons/action/AddCircleAlt.vue
    R ui/src/components/icons/action/AddComment.vue
    R ui/src/components/icons/action/AddNote.vue
    R ui/src/components/icons/action/AddUser.vue
    R ui/src/components/icons/action/Archive.vue
    R ui/src/components/icons/action/AssignTo.vue
    R ui/src/components/icons/action/AttachEmail.vue
    R ui/src/components/icons/action/AttachFile.vue
    R ui/src/components/icons/action/Build.vue
    R ui/src/components/icons/action/Business.vue
    R ui/src/components/icons/action/Calendar.vue
    R ui/src/components/icons/action/CalendarEndDate.vue
    R ui/src/components/icons/action/CalendarStartDate.vue
    R ui/src/components/icons/action/Cancel.vue
    R ui/src/components/icons/action/ChangeOwner.vue
    R ui/src/components/icons/action/CheckCircle.vue
    R ui/src/components/icons/action/Cloud.vue
    R ui/src/components/icons/action/CloudDownload.vue
    R ui/src/components/icons/action/CloudUpload.vue
    R ui/src/components/icons/action/Code.vue
    R ui/src/components/icons/action/Comment.vue
    R ui/src/components/icons/action/ContactSupport.vue
    R ui/src/components/icons/action/ContentCopy.vue
    R ui/src/components/icons/action/ContentPaste.vue
    R ui/src/components/icons/action/Cycle.vue
    R ui/src/components/icons/action/Dashboard.vue
    R ui/src/components/icons/action/DateRange.vue
    R ui/src/components/icons/action/Delete.vue
    R ui/src/components/icons/action/DownloadFile.vue
    R ui/src/components/icons/action/Edit.vue
    R ui/src/components/icons/action/EditMode.vue
    R ui/src/components/icons/action/Email.vue
    R ui/src/components/icons/action/EmailDraft.vue
    R ui/src/components/icons/action/EmailInbox.vue
    R ui/src/components/icons/action/EmailSecure.vue
    R ui/src/components/icons/action/ExitToApp.vue
    R ui/src/components/icons/action/Expand.vue
    R ui/src/components/icons/action/Feedback.vue
    R ui/src/components/icons/action/FeedbackAlt.vue
    R ui/src/components/icons/action/FileCopy.vue
    R ui/src/components/icons/action/FilterAlt.vue
    R ui/src/components/icons/action/Group.vue
    R ui/src/components/icons/action/Help.vue
    R ui/src/components/icons/action/Hide.vue
    R ui/src/components/icons/action/Home.vue
    R ui/src/components/icons/action/Info.vue
    R ui/src/components/icons/action/InformationExchange.vue
    R ui/src/components/icons/action/LightDarkMode.vue
    R ui/src/components/icons/action/Link.vue
    R ui/src/components/icons/action/List.vue
    R ui/src/components/icons/action/Location.vue
    R ui/src/components/icons/action/LocationCity.vue
    R ui/src/components/icons/action/Lock.vue
    R ui/src/components/icons/action/LockPasswordProtected.vue
    R ui/src/components/icons/action/LogIn.vue
    R ui/src/components/icons/action/LogOut.vue
    R ui/src/components/icons/action/LoggerConfigs.vue
    R ui/src/components/icons/action/ManageProfile.vue
    R ui/src/components/icons/action/MarkComplete.vue
    R ui/src/components/icons/action/MarkIncomplete.vue
    R ui/src/components/icons/action/MarkRead.vue
    R ui/src/components/icons/action/MarkUnread.vue
    R ui/src/components/icons/action/Notifications.vue
    R ui/src/components/icons/action/Options.vue
    R ui/src/components/icons/action/Person.vue
    R ui/src/components/icons/action/Pin.vue
    R ui/src/components/icons/action/PlayCircle.vue
    R ui/src/components/icons/action/Print.vue
    R ui/src/components/icons/action/Remove.vue
    R ui/src/components/icons/action/RemoveUser.vue
    R ui/src/components/icons/action/Reporting.vue
    R ui/src/components/icons/action/Restore.vue
    R ui/src/components/icons/action/Search.vue
    R ui/src/components/icons/action/Send.vue
    R ui/src/components/icons/action/SendWorkflow.vue
    R ui/src/components/icons/action/Settings.vue
    R ui/src/components/icons/action/Share.vue
    R ui/src/components/icons/action/Sort.vue
    R ui/src/components/icons/action/Subscriptions.vue
    R ui/src/components/icons/action/SupportCenter.vue
    R ui/src/components/icons/action/Unlock.vue
    R ui/src/components/icons/action/UpdateSchedules.vue
    R ui/src/components/icons/action/UpdateUtilities.vue
    R ui/src/components/icons/action/UploadFile.vue
    R ui/src/components/icons/action/VerifedUser.vue
    R ui/src/components/icons/action/View.vue
    R ui/src/components/icons/action/ViewDetails.vue
    R ui/src/components/icons/action/Workflow.vue
    R ui/src/components/icons/communication/Certificate.vue
    R ui/src/components/icons/communication/CertificateAlt.vue
    R ui/src/components/icons/communication/Chat.vue
    R ui/src/components/icons/communication/Contacts.vue
    R ui/src/components/icons/communication/Documentation.vue
    R ui/src/components/icons/communication/IdCard.vue
    R ui/src/components/icons/communication/Phone.vue
    R ui/src/components/icons/content/BlogArticle.vue
    R ui/src/components/icons/content/Video.vue
    R ui/src/components/icons/datavis/AreaChart.vue
    R ui/src/components/icons/datavis/BarChart.vue
    R ui/src/components/icons/datavis/ColumnChart.vue
    R ui/src/components/icons/datavis/DonutChart.vue
    R ui/src/components/icons/datavis/Gauge.vue
    R ui/src/components/icons/datavis/LineChart.vue
    R ui/src/components/icons/datavis/PieChart.vue
    R ui/src/components/icons/datavis/PolarChart.vue
    R ui/src/components/icons/datavis/Reporting.vue
    R ui/src/components/icons/datavis/StackedBarChart.vue
    R ui/src/components/icons/datavis/StackedColumnChart.vue
    R ui/src/components/icons/datavis/TreeDiagram.vue
    R ui/src/components/icons/file/Attachment.vue
    R ui/src/components/icons/file/Folder.vue
    R ui/src/components/icons/file/FolderAdd.vue
    R ui/src/components/icons/file/FolderLocked.vue
    R ui/src/components/icons/file/FolderOpen.vue
    R ui/src/components/icons/file/Generic.vue
    R ui/src/components/icons/file/Image.vue
    R ui/src/components/icons/file/Pdf.vue
    R ui/src/components/icons/file/Text.vue
    R ui/src/components/icons/file/WordDoc.vue
    R ui/src/components/icons/file/Xls.vue
    R ui/src/components/icons/file/Zip.vue
    R ui/src/components/icons/hardware/ApplianceProfiles.vue
    R ui/src/components/icons/hardware/Appliances.vue
    R ui/src/components/icons/hardware/AppliancesAlt.vue
    R ui/src/components/icons/hardware/DesktopWindows.vue
    R ui/src/components/icons/hardware/Instances.vue
    R ui/src/components/icons/hardware/KeyboardArrowDown.vue
    R ui/src/components/icons/hardware/KeyboardArrowUp.vue
    R ui/src/components/icons/hardware/Laptop.vue
    R ui/src/components/icons/hardware/MinionProfiles.vue
    R ui/src/components/icons/hardware/Network.vue
    R ui/src/components/icons/hardware/NetworkProfiles.vue
    R ui/src/components/icons/hardware/Router.vue
    R ui/src/components/icons/hardware/Security.vue
    R ui/src/components/icons/hardware/Server.vue
    R ui/src/components/icons/hardware/VirtualMachine.vue
    R ui/src/components/icons/hardware/VirtualMachineAlt.vue
    R ui/src/components/icons/medical/Ambulance.vue
    R ui/src/components/icons/medical/CostSavings.vue
    R ui/src/components/icons/medical/Drug.vue
    R ui/src/components/icons/medical/DrugGroupId.vue
    R ui/src/components/icons/medical/Hospital.vue
    R ui/src/components/icons/medical/Patient.vue
    R ui/src/components/icons/medical/Payor.vue
    R ui/src/components/icons/medical/Provider.vue
    R ui/src/components/icons/medical/ProviderOffice.vue
    R ui/src/components/icons/medical/Treatment.vue
    R ui/src/components/icons/medical/TreatmentCycle.vue
    R ui/src/components/icons/medical/TreatmentSchedule.vue
    R ui/src/components/icons/medical/Vitals.vue
    R ui/src/components/icons/navigation/Apps.vue
    R ui/src/components/icons/navigation/AppsGetMore.vue
    R ui/src/components/icons/navigation/ArrowBack.vue
    R ui/src/components/icons/navigation/ArrowDropDown.vue
    R ui/src/components/icons/navigation/Cancel.vue
    R ui/src/components/icons/navigation/ChevronLeft.vue
    R ui/src/components/icons/navigation/ChevronRight.vue
    R ui/src/components/icons/navigation/ExpandLess.vue
    R ui/src/components/icons/navigation/ExpandMore.vue
    R ui/src/components/icons/navigation/FirstPage.vue
    R ui/src/components/icons/navigation/Fullscreen.vue
    R ui/src/components/icons/navigation/FullscreenExit.vue
    R ui/src/components/icons/navigation/GridView.vue
    R ui/src/components/icons/navigation/LastPage.vue
    R ui/src/components/icons/navigation/Menu.vue
    R ui/src/components/icons/navigation/MenuClose.vue
    R ui/src/components/icons/navigation/MenuOpen.vue
    R ui/src/components/icons/navigation/MoreHoriz.vue
    R ui/src/components/icons/navigation/MoreVert.vue
    R ui/src/components/icons/navigation/Refresh.vue
    R ui/src/components/icons/navigation/SubdirectoryArrowLeft.vue
    R ui/src/components/icons/navigation/SubdirectoryArrowRight.vue
    R ui/src/components/icons/navigation/UnfoldLess.vue
    R ui/src/components/icons/navigation/UnfoldMore.vue
    R ui/src/components/icons/network/AggregationLayer.vue
    R ui/src/components/icons/network/AggregationLayerAlt1.vue
    R ui/src/components/icons/network/AggregationLayerAlt2.vue
    R ui/src/components/icons/network/AggregationLayerAlt3.vue
    R ui/src/components/icons/network/AggregationLayerAlt4.vue
    R ui/src/components/icons/network/AggregationLayerAlt5.vue
    R ui/src/components/icons/network/ApiConfig.vue
    R ui/src/components/icons/network/ApiEndpoints.vue
    R ui/src/components/icons/network/ApplianceProfiles.vue
    R ui/src/components/icons/network/Appliances.vue
    R ui/src/components/icons/network/AppliancesAlt.vue
    R ui/src/components/icons/network/Build.vue
    R ui/src/components/icons/network/CertificateAlt.vue
    R ui/src/components/icons/network/Cloud.vue
    R ui/src/components/icons/network/CloudBackUp.vue
    R ui/src/components/icons/network/CloudDownload.vue
    R ui/src/components/icons/network/CloudService.vue
    R ui/src/components/icons/network/CloudUpload.vue
    R ui/src/components/icons/network/Code.vue
    R ui/src/components/icons/network/Compare.vue
    R ui/src/components/icons/network/Compare1.vue
    R ui/src/components/icons/network/Compliance.vue
    R ui/src/components/icons/network/Configuration.vue
    R ui/src/components/icons/network/Connection.vue
    R ui/src/components/icons/network/ContainerAdd.vue
    R ui/src/components/icons/network/ContainerTransient.vue
    R ui/src/components/icons/network/ContainerUnknown.vue
    R ui/src/components/icons/network/Database.vue
    R ui/src/components/icons/network/Desktop.vue
    R ui/src/components/icons/network/Digitize.vue
    R ui/src/components/icons/network/DistributedMonitoring.vue
    R ui/src/components/icons/network/ElectricalServices.vue
    R ui/src/components/icons/network/EndUser.vue
    R ui/src/components/icons/network/ExitCompare.vue
    R ui/src/components/icons/network/ExitCompareModeAlt.vue
    R ui/src/components/icons/network/ExtractData.vue
    R ui/src/components/icons/network/Firewall.vue
    R ui/src/components/icons/network/Instances.vue
    R ui/src/components/icons/network/Inventory.vue
    R ui/src/components/icons/network/InventoryAdd.vue
    R ui/src/components/icons/network/InventoryAlt.vue
    R ui/src/components/icons/network/InventoryConfirm.vue
    R ui/src/components/icons/network/InventoryDelete.vue
    R ui/src/components/icons/network/Laptop.vue
    R ui/src/components/icons/network/LogFile.vue
    R ui/src/components/icons/network/LoggerConfigs.vue
    R ui/src/components/icons/network/Logs.vue
    R ui/src/components/icons/network/LogsAlt.vue
    R ui/src/components/icons/network/Microservices.vue
    R ui/src/components/icons/network/Minion.vue
    R ui/src/components/icons/network/MinionProfiles.vue
    R ui/src/components/icons/network/Monitoring.vue
    R ui/src/components/icons/network/NetworkProfiles.vue
    R ui/src/components/icons/network/Nodes.vue
    R ui/src/components/icons/network/Policy.vue
    R ui/src/components/icons/network/Power.vue
    R ui/src/components/icons/network/RouterLan.vue
    R ui/src/components/icons/network/RouterWan.vue
    R ui/src/components/icons/network/Security.vue
    R ui/src/components/icons/network/SecurityScan.vue
    R ui/src/components/icons/network/Server.vue
    R ui/src/components/icons/network/ServerClock.vue
    R ui/src/components/icons/network/Switch.vue
    R ui/src/components/icons/network/Terminal.vue
    R ui/src/components/icons/network/UpdateUtilities.vue
    R ui/src/components/icons/network/Utilities.vue
    R ui/src/components/icons/network/ViewCode.vue
    R ui/src/components/icons/network/VirtualMachine.vue
    R ui/src/components/icons/network/VirtualMachineAlt.vue
    R ui/src/components/icons/network/VirtualMachineAlt2.vue
    R ui/src/components/icons/network/WifiRouter.vue
    R ui/src/components/icons/notification/Connected.vue
    R ui/src/components/icons/notification/Error.vue
    R ui/src/components/icons/notification/NotificationSelected.vue
    R ui/src/components/icons/notification/NotificationSoundSelected.vue
    R ui/src/components/icons/notification/NotificationsOff.vue
    R ui/src/components/icons/notification/Unconnected.vue
    R ui/src/components/icons/notification/Warning.vue
    R ui/src/components/icons/notification/Wifi.vue
    R ui/src/components/icons/notification/WifiNoConnection.vue
    R ui/src/components/icons/notification/WifiOff.vue
    R ui/src/components/icons/notification/WifiSignalBad.vue
    R ui/src/components/icons/notification/WifiStatusBar.vue
    R ui/src/components/icons/status/Available.vue
    R ui/src/components/icons/status/Unavailable.vue
    M ui/src/containers/EventConfigurationDetail.vue
    M ui/src/containers/SnmpDataCollection.vue
    M ui/src/containers/SnmpDataCollectionSourceDetail.vue
    M ui/tests/components/AdhocGraphs/AdhocGraphBuilder.test.ts
    M ui/tests/components/Menu/UserSelfServiceMenuItem.test.ts

  Log Message:
  -----------
  Merge remote-tracking branch 'origin/release-36.x' into develop


  Commit: c947aa613e7c3350c4c989d854abd4060faf8de5
      https://github.com/OpenNMS/opennms/commit/c947aa613e7c3350c4c989d854abd4060faf8de5
  Author: Christian Pape <[email protected]>
  Date:   2026-08-20 (Thu, 20 Aug 2026)

  Changed paths:
    M .circleci/trivy-config/trivyignore

  Log Message:
  -----------
  NMS-20223: Added CVEs to trivyignore


  Commit: 31b00dd9ac8052da8b50d396bc85c6c4b1e7cee6
      https://github.com/OpenNMS/opennms/commit/31b00dd9ac8052da8b50d396bc85c6c4b1e7cee6
  Author: CI/CD System <[email protected]>
  Date:   2026-08-20 (Thu, 20 Aug 2026)

  Changed paths:
    M .circleci/trivy-config/trivyignore

  Log Message:
  -----------
  Merge remote-tracking branch 'origin/foundation-2024' into foundation-2025


  Commit: 5347f805d05eb60308978fa259b2bee9c75852d2
      https://github.com/OpenNMS/opennms/commit/5347f805d05eb60308978fa259b2bee9c75852d2
  Author: Christian Pape <[email protected]>
  Date:   2026-08-20 (Thu, 20 Aug 2026)

  Changed paths:
    M container/features/pom.xml

  Log Message:
  -----------
  NMS-20237: Use our netty4 version


  Commit: aec9d3dc57a622dbc4c8c751910f324671f2541e
      https://github.com/OpenNMS/opennms/commit/aec9d3dc57a622dbc4c8c751910f324671f2541e
  Author: CI/CD System <[email protected]>
  Date:   2026-08-20 (Thu, 20 Aug 2026)

  Changed paths:
    M .circleci/trivy-config/trivyignore

  Log Message:
  -----------
  Merge remote-tracking branch 'origin/foundation-2025' into foundation-2026


  Commit: 450f4916ef0e6e4d30b270a9d276d125aaf43eb6
      https://github.com/OpenNMS/opennms/commit/450f4916ef0e6e4d30b270a9d276d125aaf43eb6
  Author: CI/CD System <[email protected]>
  Date:   2026-08-20 (Thu, 20 Aug 2026)

  Changed paths:
    M container/features/pom.xml

  Log Message:
  -----------
  Merge remote-tracking branch 'origin/foundation-2024' into foundation-2025


  Commit: 6c9050a2bacd9c1cb1a2b858877b329eff3e822f
      https://github.com/OpenNMS/opennms/commit/6c9050a2bacd9c1cb1a2b858877b329eff3e822f
  Author: Morteza E <[email protected]>
  Date:   2026-08-20 (Thu, 20 Aug 2026)

  Changed paths:
    M ui/src/components/Resources/Graph.vue
    M ui/src/components/Resources/Graphs.vue

  Log Message:
  -----------
  Update path to `opennms/onms-ui` in Graph


  Commit: a2fb99634f00ed70f9c4c61b655340c265984b25
      https://github.com/OpenNMS/opennms/commit/a2fb99634f00ed70f9c4c61b655340c265984b25
  Author: Christian Pape <[email protected]>
  Date:   2026-08-20 (Thu, 20 Aug 2026)

  Changed paths:
    M container/features/pom.xml
    M container/features/src/main/resources/features-core.xml
    M container/features/src/main/resources/features-experimental.xml
    M container/features/src/main/resources/features-sentinel.xml
    M container/features/src/main/resources/features.xml
    M container/karaf/pom.xml
    M container/karaf/src/main/filtered-resources/etc/overrides.properties
    M container/shared/pom.xml
    M container/shared/src/main/filtered-resources/etc/overrides.properties
    M container/shared/src/main/filtered-resources/etc/startup.properties
    M dependencies/jackson2/pom.xml
    M features/minion/core/features/src/main/resources/features.xml
    M features/minion/repository/src/assembly/repo.xml
    M features/sentinel/repository/src/assembly/repo.xml
    M opennms-full-assembly/pom.xml
    M opennms-full-assembly/src/assembly/components/osgi.xml
    M pom.xml
    M smoke-test/pom.xml

  Log Message:
  -----------
  NMS-20226: Bumped jackson version


  Commit: 51c9c1102324e54314b98f396f7cced014d7cba9
      https://github.com/OpenNMS/opennms/commit/51c9c1102324e54314b98f396f7cced014d7cba9
  Author: Morteza E <[email protected]>
  Date:   2026-08-20 (Thu, 20 Aug 2026)

  Changed paths:
    M opennms-container/common.mk
    M opennms-container/core/Dockerfile
    M opennms-container/minion/Dockerfile
    M opennms-container/sentinel/Dockerfile
    M smoke-test/src/main/java/org/opennms/smoketest/containers/MockCloudContainer.java

  Log Message:
  -----------
  Upgrade our base images


  Commit: 4b4cfa78bdb544bec838ac2d48a039a999963818
      https://github.com/OpenNMS/opennms/commit/4b4cfa78bdb544bec838ac2d48a039a999963818
  Author: Morteza E <[email protected]>
  Date:   2026-08-20 (Thu, 20 Aug 2026)

  Changed paths:
    M opennms-container/common.mk
    M opennms-container/core/Dockerfile
    M opennms-container/minion/Dockerfile
    M opennms-container/sentinel/Dockerfile
    M smoke-test/src/main/java/org/opennms/smoketest/containers/MockCloudContainer.java

  Log Message:
  -----------
  Upgrade our base images


  Commit: b448e2a6f7591d2fede6cc0a89c366128647b871
      https://github.com/OpenNMS/opennms/commit/b448e2a6f7591d2fede6cc0a89c366128647b871
  Author: mershad-manesh <[email protected]>
  Date:   2026-08-20 (Thu, 20 Aug 2026)

  Changed paths:
    A container/karaf-features-core-patch/pom.xml
    A container/karaf-features-core-patch/src/main/java/org/apache/karaf/features/internal/download/impl/SimpleDownloadTask.java
    M container/karaf/pom.xml
    M container/pom.xml
    M container/shared/pom.xml

  Log Message:
  -----------
  NMS-19841: Karaf's SimpleDownloadTask race causes intermittent FileNotFoundException (#8804)

* Karaf, SimpleDownloadTask race causes intermittent FileNotFoundException

* Minion,Sentinel: Karaf, SimpleDownloadTask race causes intermittent FileNotFoundException


  Commit: aac7080a886a061df2f2d5a3e7165718dead085d
      https://github.com/OpenNMS/opennms/commit/aac7080a886a061df2f2d5a3e7165718dead085d
  Author: CI/CD System <[email protected]>
  Date:   2026-08-20 (Thu, 20 Aug 2026)

  Changed paths:
    M container/features/pom.xml

  Log Message:
  -----------
  Merge remote-tracking branch 'origin/foundation-2025' into foundation-2026


  Commit: a77516a33f327cad81d610b7e50e20861ad92c61
      https://github.com/OpenNMS/opennms/commit/a77516a33f327cad81d610b7e50e20861ad92c61
  Author: Morteza E <[email protected]>
  Date:   2026-08-20 (Thu, 20 Aug 2026)

  Changed paths:
    M container/features/pom.xml
    M container/features/src/main/resources/features-core.xml
    M container/features/src/main/resources/features-experimental.xml
    M container/features/src/main/resources/features-sentinel.xml
    M container/features/src/main/resources/features.xml
    M container/features/src/main/resources/overrides.properties
    M container/karaf/pom.xml
    M container/shared/pom.xml
    M container/shared/src/main/filtered-resources/etc/overrides.properties
    M container/shared/src/main/filtered-resources/etc/startup.properties
    M dependencies/jackson2/pom.xml
    M features/minion/core/features/src/main/resources/features.xml
    M features/minion/repository/src/assembly/repo.xml
    M opennms-container/common.mk
    M opennms-container/core/Dockerfile
    M opennms-container/minion/Dockerfile
    M opennms-container/sentinel/Dockerfile
    M opennms-full-assembly/pom.xml
    M opennms-full-assembly/src/assembly/components/osgi.xml
    M pom.xml
    M smoke-test/pom.xml
    M smoke-test/src/main/java/org/opennms/smoketest/containers/MockCloudContainer.java

  Log Message:
  -----------
  Merge remote-tracking branch 'origin/foundation-2024' into foundation-2025


  Commit: f97200f01127524bb011673fb2c1b78d6ba47521
      https://github.com/OpenNMS/opennms/commit/f97200f01127524bb011673fb2c1b78d6ba47521
  Author: Morteza E <[email protected]>
  Date:   2026-08-20 (Thu, 20 Aug 2026)

  Changed paths:
    M features/container/sentinel/src/main/internal/features-processing.xml

  Log Message:
  -----------
  missed update


  Commit: 73f55a77211c185537f6c2a6de2a512de4735efc
      https://github.com/OpenNMS/opennms/commit/73f55a77211c185537f6c2a6de2a512de4735efc
  Author: mershad-manesh <[email protected]>
  Date:   2026-08-20 (Thu, 20 Aug 2026)

  Changed paths:
    M docs/modules/operation/pages/deep-dive/admin/configuration/startup.adoc
    M docs/modules/reference/pages/configuration/core-docker.adoc
    M docs/modules/releasenotes/pages/whatsnew.adoc
    M opennms-base-assembly/src/main/filtered/bin/opennms
    M opennms-base-assembly/src/main/filtered/etc/opennms-activemq.xml
    M opennms-container/core/Dockerfile
    M opennms-container/core/container-fs/entrypoint.sh
    M smoke-test/src/main/resources/opennms-overlay/etc/opennms-activemq.xml

  Log Message:
  -----------
  NMS-19841: Move java.io.tmpdir and activemq.data out of Karaf's data directory (#8807)

* Move java.io.tmpdir and activemq.data out of Karaf's data directory

* Let upgrade script handle moving data for activemq; add docs

* remove the migrator

* Fix whatsnew page


  Commit: a49d84c71a2ba681a4ba760c673f3a8c6542486d
      https://github.com/OpenNMS/opennms/commit/a49d84c71a2ba681a4ba760c673f3a8c6542486d
  Author: Marshall Massengill <[email protected]>
  Date:   2026-08-20 (Thu, 20 Aug 2026)

  Changed paths:
    M opennms-config/src/main/java/org/opennms/netmgt/config/EventTranslatorConfigFactory.java
    A opennms-config/src/test/java/org/opennms/netmgt/config/EventTranslatorCloneEventTest.java
    A opennms-config/src/test/java/org/opennms/netmgt/config/EventTranslatorSqlValueTest.java

  Log Message:
  -----------
  NMS-20204: Reduce per-event overhead in the event translator (#8779)

* NMS-20204: Reduce per-event overhead in the event translator

EventTranslatorConfigFactory repeated most of its work on every event.

Value specs exposed matches() and getResult() as separate calls, and
TranslationMapping.translate() invoked both, so each value was resolved
twice per event. For a sql value that meant two connection checkouts,
two prepared statements and two round trips, and nested values were
evaluated three times. ValueSpec now exposes a single evaluate() that
returns whether the value matched along with the value to assign.
EvaluationResult carries the two separately rather than collapsing into
an Optional, because a sql lookup that finds a row with a null column is
a match whose value is null, which must not fall through to the
assignment default.

The matches regex was recompiled on every evaluation, and a "~"-prefixed
parameter name was recompiled once per parm scanned via String.matches.
Both are now compiled once when the value spec is constructed.

translate() cloned the event before running any assignment, so a mapping
that rejected the event still paid for the clone. Assignments are now
resolved against the source event first, which is safe because value
specs only ever read the source event, and the clone happens only once
the mapping is known to match. The early exit on the first assignment
that neither matches nor has a default is preserved, so a rejecting
mapping does no more work than before.

cloneEvent() deep-copied through a Java serialization round trip, which
spent most of its time re-writing class descriptors: 52 us/op against
0.74 us/op for a field copy through the immutable event model. Event
does not implement IEvent, so the copy goes via ImmutableMapper. Both
mappers cover all 34 of Event's fields.

m_translationSpecs is now volatile, since update() clears it while
translateEvent() reads it without synchronization.

No configuration, schema or interface changes.

* NMS-20204: Address review findings in the event translator

Read m_translationSpecs into a local before the null check. Returning the
field directly hands back null when update() clears it in between, and
translateEvent() iterates the result. Two threads racing a reload may now
each construct a list, which is cheaper than putting a lock on the
per-event path.

Fix the misplaced quotes in the two getAttributeValue() debug messages.


  Commit: 9fb0962c2b70773fe5faefe9b9070ea490db426a
      https://github.com/OpenNMS/opennms/commit/9fb0962c2b70773fe5faefe9b9070ea490db426a
  Author: Morteza E <[email protected]>
  Date:   2026-08-20 (Thu, 20 Aug 2026)

  Changed paths:
    M container/features/pom.xml
    M container/features/src/main/resources/features-core.xml
    M container/features/src/main/resources/features-experimental.xml
    M container/features/src/main/resources/features-sentinel.xml
    M container/features/src/main/resources/features.xml
    M container/features/src/main/resources/overrides.properties
    M container/karaf/pom.xml
    M container/shared/pom.xml
    M container/shared/src/main/filtered-resources/etc/overrides.properties
    M container/shared/src/main/filtered-resources/etc/startup.properties
    M dependencies/jackson2/pom.xml
    M features/container/sentinel/src/main/internal/features-processing.xml
    M features/minion/core/features/src/main/resources/features.xml
    M features/minion/repository/src/assembly/repo.xml
    M opennms-config/src/main/java/org/opennms/netmgt/config/EventTranslatorConfigFactory.java
    A opennms-config/src/test/java/org/opennms/netmgt/config/EventTranslatorCloneEventTest.java
    A opennms-config/src/test/java/org/opennms/netmgt/config/EventTranslatorSqlValueTest.java
    M opennms-full-assembly/pom.xml
    M opennms-full-assembly/src/assembly/components/osgi.xml
    M pom.xml
    M smoke-test/pom.xml

  Log Message:
  -----------
  Merge remote-tracking branch 'origin/foundation-2025' into foundation-2026


  Commit: fb9ba8bd48f27eedef18b3f0fbf0cfc8a8c22ca4
      https://github.com/OpenNMS/opennms/commit/fb9ba8bd48f27eedef18b3f0fbf0cfc8a8c22ca4
  Author: Chandra Gorantla <[email protected]>
  Date:   2026-08-21 (Fri, 21 Aug 2026)

  Changed paths:
    M docs/modules/reference/pages/performance-data-collection/collectors/xml.adoc
    M protocols/xml/src/main/java/org/opennms/protocols/xml/collector/AbstractXmlCollectionHandler.java
    M protocols/xml/src/test/java/org/opennms/protocols/xml/collector/AbstractXmlCollectionHandlerTest.java

  Log Message:
  -----------
  NMS-20206: Fix XXE in XML collector (#8782)

* NMS-20206: Fix XXE in XML collector

Disable external entity/DTD resolution in AbstractXmlCollectionHandler's
DocumentBuilderFactory and TransformerFactory so collected XML cannot read local
files or trigger out-of-band requests. Avoids disallow-doctype-decl to keep
pre-parse-html working. Adds regression tests.

* NMS-20206: Handle review comments

* NMS-20206: Handle some more review comments

Disable external entity/DTD resolution in the DocumentBuilder and, for the
xslt-source-file path, parse the stylesheet and collected source through a
hardened XMLReader (SAXSource) so XXE is blocked even under Xalan. Adds
regression tests.

* NMS-20206: Add some more protections

* NMS-20206: Update docs

* NMS-20206: Add ErrorListener


  Commit: 9dbc420da3b3039d59946b16e978fac9724809a2
      https://github.com/OpenNMS/opennms/commit/9dbc420da3b3039d59946b16e978fac9724809a2
  Author: Chandra Gorantla <[email protected]>
  Date:   2026-08-21 (Fri, 21 Aug 2026)

  Changed paths:
    M integration-tests/config/pom.xml

  Log Message:
  -----------
  NMS-20226: Updates missing jackson2AnnotationsVersion


  Commit: 2e76241023e776c97ce55792d9a4ef3af725b6ba
      https://github.com/OpenNMS/opennms/commit/2e76241023e776c97ce55792d9a4ef3af725b6ba
  Author: CI/CD System <[email protected]>
  Date:   2026-08-21 (Fri, 21 Aug 2026)

  Changed paths:
    M docs/modules/reference/pages/performance-data-collection/collectors/xml.adoc
    M protocols/xml/src/main/java/org/opennms/protocols/xml/collector/AbstractXmlCollectionHandler.java
    M protocols/xml/src/test/java/org/opennms/protocols/xml/collector/AbstractXmlCollectionHandlerTest.java

  Log Message:
  -----------
  Merge remote-tracking branch 'origin/foundation-2023' into foundation-2024


  Commit: 42f848bd56e97e86d27bdd30a4c47c4b9c76abe9
      https://github.com/OpenNMS/opennms/commit/42f848bd56e97e86d27bdd30a4c47c4b9c76abe9
  Author: CI/CD System <[email protected]>
  Date:   2026-08-21 (Fri, 21 Aug 2026)

  Changed paths:
    M docs/modules/reference/pages/performance-data-collection/collectors/xml.adoc
    M protocols/xml/src/main/java/org/opennms/protocols/xml/collector/AbstractXmlCollectionHandler.java
    M protocols/xml/src/test/java/org/opennms/protocols/xml/collector/AbstractXmlCollectionHandlerTest.java

  Log Message:
  -----------
  Merge remote-tracking branch 'origin/foundation-2024' into foundation-2025


  Commit: 0187081573367af778ae57b4893a752684835332
      https://github.com/OpenNMS/opennms/commit/0187081573367af778ae57b4893a752684835332
  Author: Chandra Gorantla <[email protected]>
  Date:   2026-08-21 (Fri, 21 Aug 2026)

  Changed paths:
    M smoke-test/src/test/java/org/opennms/smoketest/MenuHeaderIT.java

  Log Message:
  -----------
  update search element, fix MenuHeaderIT


  Commit: f69c819806b2e39ccfa7af379796a55c90df55ed
      https://github.com/OpenNMS/opennms/commit/f69c819806b2e39ccfa7af379796a55c90df55ed
  Author: CI/CD System <[email protected]>
  Date:   2026-08-21 (Fri, 21 Aug 2026)

  Changed paths:
    M .circleci/epoch
    M .circleci/trivy-config/trivyignore
    M container/features/pom.xml
    M container/features/src/main/resources/features-core.xml
    M container/features/src/main/resources/features-experimental.xml
    M container/features/src/main/resources/features-sentinel.xml
    M container/features/src/main/resources/features.xml
    M container/features/src/main/resources/overrides.properties
    A container/karaf-features-core-patch/pom.xml
    A container/karaf-features-core-patch/src/main/java/org/apache/karaf/features/internal/download/impl/SimpleDownloadTask.java
    M container/karaf/pom.xml
    M container/karaf/src/main/filtered-resources/etc/org.ops4j.pax.logging.cfg
    M container/karaf/src/main/internal/features-processing.xml
    M container/pom.xml
    M container/shared/pom.xml
    M container/shared/src/main/filtered-resources/etc/overrides.properties
    M container/shared/src/main/filtered-resources/etc/startup.properties
    M container/shared/src/main/internal/features-processing.xml
    M container/shared/src/main/resources/etc/org.ops4j.pax.logging.cfg
    M dependencies/jackson2/pom.xml
    M docs/modules/operation/pages/deep-dive/admin/configuration/startup.adoc
    M docs/modules/reference/pages/configuration/core-docker.adoc
    M docs/modules/releasenotes/pages/whatsnew.adoc
    M features/container/sentinel/pom.xml
    M features/container/sentinel/src/main/internal/features-processing.xml
    M features/minion/core/features/src/main/resources/features.xml
    M features/minion/repository/src/assembly/repo.xml
    M integration-tests/config/pom.xml
    M opennms-base-assembly/src/main/filtered/bin/opennms
    M opennms-base-assembly/src/main/filtered/etc/opennms-activemq.xml
    M opennms-config/src/main/java/org/opennms/netmgt/config/EventTranslatorConfigFactory.java
    A opennms-config/src/test/java/org/opennms/netmgt/config/EventTranslatorCloneEventTest.java
    A opennms-config/src/test/java/org/opennms/netmgt/config/EventTranslatorSqlValueTest.java
    M opennms-container/common.mk
    M opennms-container/core/Dockerfile
    M opennms-container/core/container-fs/entrypoint.sh
    M opennms-container/minion/Dockerfile
    M opennms-container/sentinel/Dockerfile
    M opennms-full-assembly/pom.xml
    M opennms-full-assembly/src/assembly/components/osgi.xml
    A opennms-webapp/src/test/java/org/opennms/web/StaticAssetReferenceTest.java
    M pom.xml
    M smoke-test/pom.xml
    M smoke-test/src/main/java/org/opennms/smoketest/containers/MockCloudContainer.java
    M smoke-test/src/main/resources/opennms-overlay/etc/opennms-activemq.xml
    M smoke-test/src/test/java/org/opennms/smoketest/MenuHeaderIT.java
    M ui/CLAUDE.md
    M ui/packages/onms-ui/README.md
    M ui/packages/onms-ui/src/components/OnmsAutoComplete.vue
    M ui/packages/onms-ui/src/components/OnmsIconButton.vue
    M ui/packages/onms-ui/src/components/OnmsSearchInput.vue
    M ui/packages/onms-ui/src/directives/OnmsTooltip.ts
    M ui/src/components/AdhocGraphs/AdhocChartToolbar.vue
    M ui/src/components/Configuration/ConfigurationAdvancedPanel.vue
    M ui/src/components/Configuration/ConfigurationCopyPasteDisplay.vue
    M ui/src/components/Configuration/ConfigurationTable.vue
    M ui/src/components/Configuration/ProvisionDForm.vue
    M ui/src/components/Device/DCBModalConfigDiffContent.vue
    M ui/src/components/Device/DCBModalViewHistoryContent.vue
    M ui/src/components/Device/DCBSearch.vue
    M ui/src/components/EventConfiguration/EventConfigSourceTable.vue
    M ui/src/components/EventConfiguration/EventConfigUploadFilesTab.vue
    M ui/src/components/FileEditor/FileSidebar.vue
    M ui/src/components/FileEditor/Search.vue
    M ui/src/components/Map/MapSearch.vue
    M ui/src/components/Menu/Menubar.vue
    M ui/src/components/Menu/Search.vue
    M ui/src/components/Menu/SideMenu.vue
    M ui/src/components/Nodes/NodesTable.vue
    M ui/src/components/SCV/ScvInputIcon.vue
    M ui/src/components/SCV/ScvSearchDrawer.vue
    M ui/src/components/SnmpConfiguration/SnmpConfigDefinitionsTable.vue
    M ui/src/components/SnmpConfiguration/SnmpConfigProfilesTable.vue
    M ui/src/styles/opennms-styles.scss
    M ui/tests/components/EventConfiguration/EventConfigUploadFilesTab.test.ts
    A ui/tests/components/Map/MapSearch.test.ts
    A ui/tests/components/Menu/Menubar.test.ts
    M ui/tests/components/Menu/SideMenu.test.ts
    M ui/tests/onms-ui/OnmsAutoComplete.test.ts
    M ui/tests/onms-ui/OnmsIconButton.test.ts
    M ui/tests/onms-ui/OnmsSearchInput.test.ts
    M ui/tests/onms-ui/OnmsTooltip.test.ts

  Log Message:
  -----------
  Merge remote-tracking branch 'origin/foundation-2026' into release-36.x


  Commit: 22c9726c5d87a5a1c5a0e5c8685a7c5e4cbf5096
      https://github.com/OpenNMS/opennms/commit/22c9726c5d87a5a1c5a0e5c8685a7c5e4cbf5096
  Author: Morteza E <[email protected]>
  Date:   2026-08-21 (Fri, 21 Aug 2026)

  Changed paths:
    M docs/modules/reference/pages/performance-data-collection/collectors/xml.adoc
    M protocols/xml/src/main/java/org/opennms/protocols/xml/collector/AbstractXmlCollectionHandler.java
    M protocols/xml/src/test/java/org/opennms/protocols/xml/collector/AbstractXmlCollectionHandlerTest.java

  Log Message:
  -----------
  Merge remote-tracking branch 'origin/foundation-2025' into foundation-2026


  Commit: a6da7a9cd9043194f0bb7a70574295fe20263d6c
      https://github.com/OpenNMS/opennms/commit/a6da7a9cd9043194f0bb7a70574295fe20263d6c
  Author: CI/CD System <[email protected]>
  Date:   2026-08-21 (Fri, 21 Aug 2026)

  Changed paths:
    M docs/modules/reference/pages/performance-data-collection/collectors/xml.adoc
    M protocols/xml/src/main/java/org/opennms/protocols/xml/collector/AbstractXmlCollectionHandler.java
    M protocols/xml/src/test/java/org/opennms/protocols/xml/collector/AbstractXmlCollectionHandlerTest.java

  Log Message:
  -----------
  Merge remote-tracking branch 'origin/foundation-2026' into release-36.x


  Commit: 3e0641c47bd89ec53ff3b425a8d94529f2ca1066
      https://github.com/OpenNMS/opennms/commit/3e0641c47bd89ec53ff3b425a8d94529f2ca1066
  Author: Morteza E <[email protected]>
  Date:   2026-08-21 (Fri, 21 Aug 2026)

  Changed paths:
    M .circleci/epoch
    M .circleci/trivy-config/trivyignore
    M container/features/pom.xml
    M container/features/src/main/resources/features-core.xml
    M container/features/src/main/resources/features-experimental.xml
    M container/features/src/main/resources/features-sentinel.xml
    M container/features/src/main/resources/features.xml
    M container/features/src/main/resources/overrides.properties
    A container/karaf-features-core-patch/pom.xml
    A container/karaf-features-core-patch/src/main/java/org/apache/karaf/features/internal/download/impl/SimpleDownloadTask.java
    M container/karaf/pom.xml
    M container/karaf/src/main/filtered-resources/etc/org.ops4j.pax.logging.cfg
    M container/karaf/src/main/internal/features-processing.xml
    M container/pom.xml
    M container/shared/pom.xml
    M container/shared/src/main/filtered-resources/etc/overrides.properties
    M container/shared/src/main/filtered-resources/etc/startup.properties
    M container/shared/src/main/internal/features-processing.xml
    M container/shared/src/main/resources/etc/org.ops4j.pax.logging.cfg
    M dependencies/jackson2/pom.xml
    M docs/modules/operation/pages/deep-dive/admin/configuration/startup.adoc
    M docs/modules/reference/pages/configuration/core-docker.adoc
    M docs/modules/reference/pages/performance-data-collection/collectors/xml.adoc
    M docs/modules/releasenotes/pages/whatsnew.adoc
    M features/container/sentinel/pom.xml
    M features/container/sentinel/src/main/internal/features-processing.xml
    M features/minion/core/features/src/main/resources/features.xml
    M features/minion/repository/src/assembly/repo.xml
    M integration-tests/config/pom.xml
    M opennms-base-assembly/src/main/filtered/bin/opennms
    M opennms-base-assembly/src/main/filtered/etc/opennms-activemq.xml
    M opennms-config/src/main/java/org/opennms/netmgt/config/EventTranslatorConfigFactory.java
    A opennms-config/src/test/java/org/opennms/netmgt/config/EventTranslatorCloneEventTest.java
    A opennms-config/src/test/java/org/opennms/netmgt/config/EventTranslatorSqlValueTest.java
    M opennms-container/common.mk
    M opennms-container/core/Dockerfile
    M opennms-container/core/container-fs/entrypoint.sh
    M opennms-container/minion/Dockerfile
    M opennms-container/sentinel/Dockerfile
    M opennms-full-assembly/pom.xml
    M opennms-full-assembly/src/assembly/components/osgi.xml
    A opennms-webapp/src/test/java/org/opennms/web/StaticAssetReferenceTest.java
    M pom.xml
    M protocols/xml/src/main/java/org/opennms/protocols/xml/collector/AbstractXmlCollectionHandler.java
    M protocols/xml/src/test/java/org/opennms/protocols/xml/collector/AbstractXmlCollectionHandlerTest.java
    M smoke-test/pom.xml
    M smoke-test/src/main/java/org/opennms/smoketest/containers/MockCloudContainer.java
    M smoke-test/src/main/resources/opennms-overlay/etc/opennms-activemq.xml
    M smoke-test/src/test/java/org/opennms/smoketest/MenuHeaderIT.java
    M ui/CLAUDE.md
    M ui/packages/onms-ui/README.md
    M ui/packages/onms-ui/src/components/OnmsAutoComplete.vue
    M ui/packages/onms-ui/src/components/OnmsIconButton.vue
    M ui/packages/onms-ui/src/components/OnmsSearchInput.vue
    M ui/packages/onms-ui/src/directives/OnmsTooltip.ts
    M ui/src/components/AdhocGraphs/AdhocChartToolbar.vue
    M ui/src/components/Configuration/ConfigurationAdvancedPanel.vue
    M ui/src/components/Configuration/ConfigurationCopyPasteDisplay.vue
    M ui/src/components/Configuration/ConfigurationTable.vue
    M ui/src/components/Configuration/ProvisionDForm.vue
    M ui/src/components/Device/DCBModalConfigDiffContent.vue
    M ui/src/components/Device/DCBModalViewHistoryContent.vue
    M ui/src/components/Device/DCBSearch.vue
    M ui/src/components/EventConfiguration/EventConfigSourceTable.vue
    M ui/src/components/EventConfiguration/EventConfigUploadFilesTab.vue
    M ui/src/components/FileEditor/FileSidebar.vue
    M ui/src/components/FileEditor/Search.vue
    M ui/src/components/Map/MapSearch.vue
    M ui/src/components/Menu/Menubar.vue
    M ui/src/components/Menu/Search.vue
    M ui/src/components/Menu/SideMenu.vue
    M ui/src/components/Nodes/NodesTable.vue
    M ui/src/components/SCV/ScvInputIcon.vue
    M ui/src/components/SCV/ScvSearchDrawer.vue
    M ui/src/components/SnmpConfiguration/SnmpConfigDefinitionsTable.vue
    M ui/src/components/SnmpConfiguration/SnmpConfigProfilesTable.vue
    M ui/src/styles/opennms-styles.scss
    M ui/tests/components/EventConfiguration/EventConfigUploadFilesTab.test.ts
    A ui/tests/components/Map/MapSearch.test.ts
    A ui/tests/components/Menu/Menubar.test.ts
    M ui/tests/components/Menu/SideMenu.test.ts
    M ui/tests/onms-ui/OnmsAutoComplete.test.ts
    M ui/tests/onms-ui/OnmsIconButton.test.ts
    M ui/tests/onms-ui/OnmsSearchInput.test.ts
    M ui/tests/onms-ui/OnmsTooltip.test.ts

  Log Message:
  -----------
  Merge remote-tracking branch 'origin/release-36.x' into develop


  Commit: 03460561a26f72c0052ef091c2809957dbb03000
      https://github.com/OpenNMS/opennms/commit/03460561a26f72c0052ef091c2809957dbb03000
  Author: Morteza E <[email protected]>
  Date:   2026-08-21 (Fri, 21 Aug 2026)

  Changed paths:
    M container/karaf-features-core-patch/pom.xml

  Log Message:
  -----------
  fix karaf-features-core-patch version


  Commit: 78b99ffc3a856bfdfec4a591c146c0715eddc903
      https://github.com/OpenNMS/opennms/commit/78b99ffc3a856bfdfec4a591c146c0715eddc903
  Author: Morteza E <[email protected]>
  Date:   2026-08-21 (Fri, 21 Aug 2026)

  Changed paths:
    M smoke-test/pom.xml

  Log Message:
  -----------
  Fix the version for jersey


  Commit: fb0600a758e5c1088bb2221815e916e2af69d5a4
      https://github.com/OpenNMS/opennms/commit/fb0600a758e5c1088bb2221815e916e2af69d5a4
  Author: Jose Anes <[email protected]>
  Date:   2026-08-21 (Fri, 21 Aug 2026)

  Changed paths:
    M opennms-webapp-rest/src/main/java/org/opennms/web/rest/v2/GroupsRestService.java
    M opennms-webapp-rest/src/test/java/org/opennms/web/rest/v2/GroupsRestServiceIT.java
    M ui/src/lib/adminValidation.ts
    M ui/src/services/groupAdminService.ts
    M ui/tests/lib/adminValidation.test.ts
    A ui/tests/services/groupAdminService.test.ts

  Log Message:
  -----------
  NMS-20107: persist category authorizations on rename/delete; fix member picker

Address the review blockers on the Manage Groups API:

- Category authorizations never reached the DB. GroupService.renameGroup and
  deleteGroup mutate managed OnmsCategory entities without an explicit save,
  and OSIV runs with MANUAL flush, so the changes were silently discarded:
  delete left orphaned authorized_group rows and rename dropped the group's
  categories. Annotate both REST methods @Transactional so the OSIV session
  flushes on commit, matching the legacy @Transactional WebGroupRepository
  path. GroupsRestServiceIT now asserts migration on rename and clearing on
  delete.
- The member picker was always empty. getGroupMemberCandidates read
  resp.data.users, but v1 /rest/users serializes the list under "user"
  (@JsonProperty). Read the correct key and cover it with a service test.

Also make the feature's UI files pass pnpm lint.


  Commit: f72ea531f67eb7b53308495557848643077ce1e5
      https://github.com/OpenNMS/opennms/commit/f72ea531f67eb7b53308495557848643077ce1e5
  Author: Morteza E <[email protected]>
  Date:   2026-08-21 (Fri, 21 Aug 2026)

  Changed paths:
    M smoke-test/pom.xml

  Log Message:
  -----------
  Fix the version for jersey


  Commit: e9f333dee36c81fac411b6ce8d2a07d1424a77c5
      https://github.com/OpenNMS/opennms/commit/e9f333dee36c81fac411b6ce8d2a07d1424a77c5
  Author: CI/CD System <[email protected]>
  Date:   2026-08-21 (Fri, 21 Aug 2026)

  Changed paths:

  Log Message:
  -----------
  Merge remote-tracking branch 'origin/merge-foundation/release-36.x-to-develop' into develop


  Commit: 0c41265c6a5635d26248021c0731cece47f9e192
      https://github.com/OpenNMS/opennms/commit/0c41265c6a5635d26248021c0731cece47f9e192
  Author: joseanesONMS <[email protected]>
  Date:   2026-08-24 (Mon, 24 Aug 2026)

  Changed paths:
    M opennms-config/src/main/java/org/opennms/netmgt/config/GroupManager.java
    A opennms-config/src/test/java/org/opennms/netmgt/config/GroupManagerRenameTest.java
    A opennms-webapp-rest/src/main/java/org/opennms/web/rest/v2/GroupsRestService.java
    A opennms-webapp-rest/src/main/java/org/opennms/web/rest/v2/api/GroupsRestApi.java
    A opennms-webapp-rest/src/main/java/org/opennms/web/rest/v2/model/GroupDto.java
    A opennms-webapp-rest/src/main/java/org/opennms/web/rest/v2/model/GroupRenameRequest.java
    M opennms-webapp-rest/src/main/webapp/WEB-INF/menu/menu-template-default.json
    M opennms-webapp-rest/src/main/webapp/WEB-INF/menu/menu-template.json
    A opennms-webapp-rest/src/test/java/org/opennms/web/rest/v2/GroupsRestServiceIT.java
    M opennms-webapp/src/main/webapp/WEB-INF/applicationContext-spring-security.xml
    M smoke-test/src/test/java/org/opennms/smoketest/MenuHeaderIT.java
    A ui/src/components/Common/AboutDialogButton.vue
    A ui/src/components/ManageGroups/GroupEditorDialog.vue
    A ui/src/components/ManageGroups/GroupRenameDialog.vue
    A ui/src/components/ManageGroups/GroupsAbout.vue
    A ui/src/components/ManageGroups/GroupsTable.vue
    A ui/src/containers/ManageGroups.vue
    A ui/src/lib/adminValidation.ts
    M ui/src/main/router/index.ts
    A ui/src/services/groupAdminService.ts
    M ui/src/services/index.ts
    A ui/src/stores/groupAdminStore.ts
    A ui/src/types/groupAdmin.ts
    A ui/tests/components/AdminDialogs/GroupEditorDialog.test.ts
    A ui/tests/lib/adminValidation.test.ts
    A ui/tests/services/groupAdminService.test.ts
    A ui/tests/stores/groupAdminStore.test.ts

  Log Message:
  -----------
  Merge pull request #8714 from OpenNMS/jira/NMS-20107-manage-groups-primevue

NMS-20107: versioned group management API and PrimeVue Manage Groups page


  Commit: 640db9afab34959a6fcdbba7187930507fb5ae2d
      https://github.com/OpenNMS/opennms/commit/640db9afab34959a6fcdbba7187930507fb5ae2d
  Author: Morteza E <[email protected]>
  Date:   2026-08-24 (Mon, 24 Aug 2026)

  Changed paths:
    M ui/src/components/Common/AboutDialogButton.vue
    M ui/src/components/ManageGroups/GroupEditorDialog.vue
    M ui/src/components/ManageGroups/GroupsTable.vue

  Log Message:
  -----------
  use icons from `opennms/onms-ui`


  Commit: 97ea5857b2de92774ad03b2691169e0d2d175110
      https://github.com/OpenNMS/opennms/commit/97ea5857b2de92774ad03b2691169e0d2d175110
  Author: Morteza E <[email protected]>
  Date:   2026-08-24 (Mon, 24 Aug 2026)

  Changed paths:
    M .circleci/epoch

  Log Message:
  -----------
  force a build


  Commit: 609bbc6034793f4c1718b661240b37de63d4aa53
      https://github.com/OpenNMS/opennms/commit/609bbc6034793f4c1718b661240b37de63d4aa53
  Author: mershad-manesh <[email protected]>
  Date:   2026-08-24 (Mon, 24 Aug 2026)

  Changed paths:
    M docs/modules/deployment/pages/repos/rhel-centos/horizon-rhel10.adoc

  Log Message:
  -----------
  update RHEL10 instructions (#8812)


  Commit: 798127593134f31e4c3ac7973dfa3a1c0952697a
      https://github.com/OpenNMS/opennms/commit/798127593134f31e4c3ac7973dfa3a1c0952697a
  Author: Morteza E <[email protected]>
  Date:   2026-08-24 (Mon, 24 Aug 2026)

  Changed paths:
    M .circleci/epoch

  Log Message:
  -----------
  force a build


  Commit: 968b4510e4361dd6696a4ec950c1fd40d4211d93
      https://github.com/OpenNMS/opennms/commit/968b4510e4361dd6696a4ec950c1fd40d4211d93
  Author: Morteza E <[email protected]>
  Date:   2026-08-24 (Mon, 24 Aug 2026)

  Changed paths:
    M .circleci/epoch
    M docs/modules/deployment/pages/repos/rhel-centos/horizon-rhel10.adoc

  Log Message:
  -----------
  Merge branch 'foundation-2026' into release-36.x


  Commit: 8ffec7276f52983f58d5b41fe9b841ed69a76c63
      https://github.com/OpenNMS/opennms/commit/8ffec7276f52983f58d5b41fe9b841ed69a76c63
  Author: Morteza E <[email protected]>
  Date:   2026-08-24 (Mon, 24 Aug 2026)

  Changed paths:
    M .circleci/epoch

  Log Message:
  -----------
  force a build


  Commit: 8860e08a486786ee0c926225d8bab38ce51b3e20
      https://github.com/OpenNMS/opennms/commit/8860e08a486786ee0c926225d8bab38ce51b3e20
  Author: Christian Pape <[email protected]>
  Date:   2026-08-25 (Tue, 25 Aug 2026)

  Changed paths:
    M core/db/pom.xml
    M dependencies/quartz/pom.xml

  Log Message:
  -----------
  NMS-20236: use mchange-commons-java version 0.6.1


  Commit: ffdd98b3ed13cd781d3531c482f0d90cd08e2dff
      https://github.com/OpenNMS/opennms/commit/ffdd98b3ed13cd781d3531c482f0d90cd08e2dff
  Author: CI/CD System <[email protected]>
  Date:   2026-08-25 (Tue, 25 Aug 2026)

  Changed paths:
    M core/db/pom.xml
    M dependencies/quartz/pom.xml

  Log Message:
  -----------
  Merge remote-tracking branch 'origin/foundation-2024' into foundation-2025


  Commit: e5d10988a35d1b80dbc7fd666e4224c4feb7de5f
      https://github.com/OpenNMS/opennms/commit/e5d10988a35d1b80dbc7fd666e4224c4feb7de5f
  Author: Morteza E <[email protected]>
  Date:   2026-08-25 (Tue, 25 Aug 2026)

  Changed paths:
    M core/db/pom.xml
    M dependencies/quartz/pom.xml

  Log Message:
  -----------
  Merge remote-tracking branch 'origin/foundation-2025' into foundation-2026


  Commit: 5d627a04e820d57ce9cfeb12556b7ae51434a4a1
      https://github.com/OpenNMS/opennms/commit/5d627a04e820d57ce9cfeb12556b7ae51434a4a1
  Author: Morteza E <[email protected]>
  Date:   2026-08-25 (Tue, 25 Aug 2026)

  Changed paths:
    M docs/modules/deployment/pages/repos/rhel-centos/horizon-rhel10.adoc

  Log Message:
  -----------
  Merge remote-tracking branch 'origin/release-36.x' into develop


  Commit: 8d0a708fb1f395e95a82668005a22eba58c168ac
      https://github.com/OpenNMS/opennms/commit/8d0a708fb1f395e95a82668005a22eba58c168ac
  Author: Marshall Massengill <[email protected]>
  Date:   2026-08-25 (Tue, 25 Aug 2026)

  Changed paths:
    M features/graph/provider/legacy/pom.xml
    M features/graph/provider/legacy/src/main/java/org/opennms/netmgt/graph/provider/legacy/LegacyEdge.java
    A features/graph/provider/legacy/src/test/java/org/opennms/netmgt/graph/provider/legacy/LegacyEdgeTest.java
    A features/topology-map/org.opennms.features.topology.api/src/main/java/org/opennms/features/topology/api/topo/LinkDetailsAware.java
    M features/topology-map/plugins/org.opennms.features.topology.plugins.topo.linkd/src/main/java/org/opennms/features/topology/plugins/topo/linkd/internal/LinkdEdge.java
    M features/topology-map/plugins/org.opennms.features.topology.plugins.topo.linkd/src/test/java/org/opennms/features/topology/plugins/topo/linkd/internal/EnhancedLinkdTopologyProviderTest.java

  Log Message:
  -----------
  NMS-20254: Expose a discovered link's interfaces on its graph API edge (#8811)

* NMS-20254: Carry a discovered link's interfaces onto its graph edge

Enlinkd resolves the interface at each end of a link: the rows are one-sided,
but the service layer pairs them and the updaters look each ifIndex up in the
SNMP interface table. The Vaadin plugin keeps that on LinkdEdge's two ports, and
it stopped there, because converting a legacy edge to a graph-API edge kept only
the id, label, namespace and endpoint node refs.

Edges that know their link now say so through LinkDetailsAware, and the
conversion copies both ifIndexes and the discovery protocol into the edge
properties. The graph REST layer already serializes that bag, so nothing there
changed. The interface, rather than an instanceof on the plugin's edge class,
keeps the generic graph module off a Vaadin plugin.

The keys live on LegacyEdge, not GenericProperties, which is offered for any
element. Values are strings because the REST converters have no case for a boxed
Integer and fall back to toString() regardless, as nodeID already does. All
three are optional, and the builder drops nulls, so an end discovery could not
resolve is absent.

Tested against real provider-built edges and their clones, which is all
getEdges() ever returns.

Unblocks the weathermap link metrics, which need (node, ifIndex) per direction.
It does not retire the UI's parseIfIndex regex on its own: that reads
/api/v2/enlinkd/{nodeId}, not /api/v2/graphs.

* Potential fix for pull request finding

Co-authored-by: Copilot Autofix powered by AI <[email protected]>

---------

Co-authored-by: Copilot Autofix powered by AI <[email protected]>


  Commit: e57195b8e6c0c914bca00145dc48ce19d843c867
      https://github.com/OpenNMS/opennms/commit/e57195b8e6c0c914bca00145dc48ce19d843c867
  Author: Scott Theleman <[email protected]>
  Date:   2026-08-25 (Tue, 25 Aug 2026)

  Changed paths:
    M core/web-assets/src/main/assets/style/opennms-theme.scss
    M opennms-base-assembly/src/main/filtered/etc/search-actions.xml
    M opennms-webapp/src/main/webapp/WEB-INF/jsp/alarm/list.jsp
    M opennms-webapp/src/main/webapp/account/selfService/passwordGate.jsp
    M opennms-webapp/src/main/webapp/includes/bootstrap-footer.jsp
    M opennms-webapp/src/main/webapp/includes/bootstrap.jsp
    M opennms-webapp/src/main/webapp/login.jsp
    M smoke-test/src/test/java/org/opennms/smoketest/AdminPageIT.java
    M smoke-test/src/test/java/org/opennms/smoketest/MenuHeaderIT.java
    M ui/packages/onms-ui/src/components/OnmsDialog.vue
    M ui/packages/onms-ui/src/components/OnmsDrawer.vue
    M ui/src/components/Common/FormField.vue
    M ui/src/components/Device/DCBTable.vue
    M ui/src/components/Layout/Footer.vue
    M ui/src/components/Logs/Editor.vue
    M ui/src/components/Logs/Logs.vue
    M ui/src/components/Nodes/ColumnSelectionDrawer.vue
    M ui/src/components/Nodes/NodeAdvancedFiltersDrawer.vue
    M ui/src/components/SCV/SCVForm.vue
    M ui/src/components/SnmpConfiguration/SnmpConfigDetailsPanel.vue
    M ui/src/containers/Map.vue
    M ui/src/main/App.vue
    M ui/src/styles/onms-base.scss
    M ui/src/styles/opennms-styles.scss
    M ui/tests/components/Common/FormField.test.ts

  Log Message:
  -----------
  NMS-20182: Various UI fixes after the PrimeVue / OnmsUI migration (#8808)

* NMS-20182: Keep legacy <textarea>s readable in dark mode

The alarm detail page's Sticky Memo and Journal Memo textareas carry no
`.form-control` class, so Bootstrap gives them no explicit background or
text color. In dark mode PrimeVue emits `color-scheme: dark` on the
document, which inherits into the legacy JSP page and makes the browser
paint those textareas with dark UA field colors on a light-only page.

Add `textarea` to the existing rule that already pins native selects,
checkboxes and radios to `color-scheme: light`, so legacy textareas stay
dark-on-light in both themes. Only the menu bundle imports this
stylesheet, so the SPA's PrimeVue Textarea (which sets its colors from
theme tokens) is unaffected.

* NMS-20182: Stop a:visited from overriding button label colors

`a:visited` has a pseudo-class in the selector, so it outranks Bootstrap's
single-class `.btn-secondary`. Any list-page menu item that was both an
anchor with an href and an already-visited URL therefore lost its white
label: "View all alarms" and "Short/Long Listing" on the alarm list,
"View all events" and the "Next" pagination button on the event list. The
items rendered as anchors without an href ("Advanced Search", "Severity
Legend", "Help") are never :visited, which is why they stayed white.

The rule was redundant anyway — the `a` rule above it already colors
visited links, since an author declaration beats the UA's visited color —
so drop it from both places it was declared and leave a note about why it
should not come back. Also drop the two `text-white` workarounds it had
prompted on the alarm list, and DCBTable's scoped `a:visited`, so its
node links keep one color in both states.

* Add Vue Resource Graphs, Geographical Map and Topological Map to 'search-actions.xml' so they are searchable.

* NMS-20182: Lock page scroll while a drawer or modal dialog is open

The drawers are modal, but PrimeVue defaults `blockScroll` to false, so the
wheel over an open drawer scrolled the node table behind it — the page's
scrollbar sat at the viewport edge and read as the drawer's. In the Advanced
Filters drawer it was worse: that drawer's own scroller made two adjacent
scrollbars, only one of which belonged to it.

Turn `blockScroll` on in the seam wrappers — unconditionally for Drawer,
tracking `modal` for Dialog, which also covers OnmsConfirmationDialog and
OnmsMessageDialog.

That alone is not enough here. `html { overflow-x: hidden }` makes <html> the
SPA's scroll container, so the body class PrimeVue toggles never reaches the
element that actually scrolls; lock <html> off that class instead. Match open
`.p-overlay-mask` elements as well, because PrimeVue's block/unblock is not
reference-counted: closing a dialog opened inside an open drawer removed the
body class and unlocked the page while the drawer was still up. Add
`scrollbar-gutter: stable` so hiding the page scrollbar does not shift the
fixed Menubar and side rail — PrimeVue's `padding-right` compensation only
moves in-flow content.

Finally, drop the two node drawers' inner `height: 100%; overflow: auto`, so
PrimeVue's `.p-drawer-content` is each drawer's single scroll container.

* NMS-20182: Align the SNMP Add button with the inputs beside it

The button sat outside any FormField, so it never skipped the vertical space
its siblings' labels occupy and its top edge landed a label-height above their
inputs. An eyeballed `margin-top` had been standing in for that space and was
too small.

Give FormField a `reserveLabelSpace` prop instead: with no label of its own it
lays out an aria-hidden, `for`-less <label> so an unlabelled field still lines
its control up with the labelled fields next to it. A real <label> element is
what makes this work — the label line box comes from the global `label`
typography, which a <span> would not pick up — and it keeps the stand-in in
step with the labelled case for free.

The Add button now sits in such a FormField and needs no offset of its own;
matching the input height keeps their centers aligned as before.

* NMS-20182: Sit the JSP footer at the bottom of a short page

JSP pages left #content a plain block, so the footer stopped wherever the
content ended: on a short page it floated hundreds of pixels above the bottom
of the window (157px into a 969px viewport on the node list). The Vue SPA does
not have this problem because its layout grid is `min-height: 100vh` with a 1fr
content row that takes up the slack.

Give #content the same shape with flexbox. Block layout has no way to push a
last child down — auto margins only work in flex and grid — so the container has
to become a flex column.

Page markup must not become flex items in the process: that stretches
inline-level children (the outage list's .btn-group grew to the full content
width), collapses ones sized by auto margins (the reports page's <hr> shrank to
nothing) and stops margin collapsing. So bootstrap.jsp wraps everything but the
footer in a new #content-body div, leaving #content with exactly two flex items
and all page markup inside a plain block, where it lays out exactly as before.
#content-body takes the slack; the footer follows it.

Also drop the SPA's default body margin, which sat outside .app-layout's
`min-height: 100vh`: it made every page overflow the viewport by ~16px, so even
a page that fit scrolled and its footer never reached the bottom of the window.
Both stacks now put the footer exactly at the bottom edge.

* NMS-20182: Drop the SPA footer's 1rem spacer div

The spacer sat inside the layout's footer row, making it 57px tall instead of
41px. A page whose content needs the full height left over from the header —
SNMP Config, OpenAPI and Resource Graphs all want exactly 868px at a 969px
viewport — therefore overflowed by the spacer's 16px and grew a scrollbar with
nothing to scroll to. Those three now fit exactly, and the footer looks the same
without it: it keeps its own 0.5rem padding and top border.

* NMS-20182: Stop Map, Logs and SCV clipping the footer

Each of these pages sizes its tall element with a hand-picked `calc(100vh - x)`,
and each x was too small for the chrome actually above and below it, so the page
overflowed the viewport and pushed the footer off the bottom of the window — most
visibly on the map, where the footer was cut in half.

Derive the subtraction instead of guessing it: the masthead comes off via
--onms-header-height, then the 41px footer band, then whatever that page stacks
around the element — a breadcrumb row, card padding, a heading, a filter box.
Each site spells the terms out so the next person can check the arithmetic
against what they see. Map was 21px over, Logs 62px, SCV 7px; all three now fit
exactly, at a 969px viewport and at 720px.

The Logs page needed both halves of its card: capping only the editor left the
log list, with its heading and filter box, as the taller column.

* NMS-20182: Address PR review on the footer and scroll-lock changes

Four fixes from review:

Wrap the custom-footer includes in a block of their own. They are emitted after
the footer, so an install's markup was landing as a direct flex item of #content
— the exact case #content-body exists to prevent. Confirmed with a test include:
as flex items a <span> stretched from 160px to the full 1562px and an <hr> sized
by auto margins collapsed to zero.

Lock page scroll on the dialog and drawer masks specifically, not on
`.p-overlay-mask` alone. DataTable, Tree, TreeTable, Image, Galleria and SpeedDial
put that class on their masks unconditionally, so the broader selector would have
frozen page scroll for the length of a table's loading state the day anyone wires
up OnmsTable's loading prop.

Replace the 41px footer band literal with an --onms-footer-height token, defined
in Footer.vue next to the element it describes and mirroring how Menubar.vue owns
--onms-header-height. `.footer` takes its min-height from the token so the two
cannot drift, and the four pages that size against it now consume it.

Close #content-body and #content on login.jsp and passwordGate.jsp. They include
bootstrap.jsp but deliberately not bootstrap-footer.jsp, so nothing else closed
the divs it opens. Both stay footer-less.

* fix smoke tests


  Commit: e2ff9f3702a99825578524f86c66d478cfa30c97
      https://github.com/OpenNMS/opennms/commit/e2ff9f3702a99825578524f86c66d478cfa30c97
  Author: CI/CD System <[email protected]>
  Date:   2026-08-25 (Tue, 25 Aug 2026)

  Changed paths:
    M core/db/pom.xml
    M core/web-assets/src/main/assets/style/opennms-theme.scss
    M dependencies/quartz/pom.xml
    M features/graph/provider/legacy/pom.xml
    M features/graph/provider/legacy/src/main/java/org/opennms/netmgt/graph/provider/legacy/LegacyEdge.java
    A features/graph/provider/legacy/src/test/java/org/opennms/netmgt/graph/provider/legacy/LegacyEdgeTest.java
    A features/topology-map/org.opennms.features.topology.api/src/main/java/org/opennms/features/topology/api/topo/LinkDetailsAware.java
    M features/topology-map/plugins/org.opennms.features.topology.plugins.topo.linkd/src/main/java/org/opennms/features/topology/plugins/topo/linkd/internal/LinkdEdge.java
    M features/topology-map/plugins/org.opennms.features.topology.plugins.topo.linkd/src/test/java/org/opennms/features/topology/plugins/topo/linkd/internal/EnhancedLinkdTopologyProviderTest.java
    M opennms-base-assembly/src/main/filtered/etc/search-actions.xml
    M opennms-webapp/src/main/webapp/WEB-INF/jsp/alarm/list.jsp
    M opennms-webapp/src/main/webapp/account/selfService/passwordGate.jsp
    M opennms-webapp/src/main/webapp/includes/bootstrap-footer.jsp
    M opennms-webapp/src/main/webapp/includes/bootstrap.jsp
    M opennms-webapp/src/main/webapp/login.jsp
    M smoke-test/src/test/java/org/opennms/smoketest/AdminPageIT.java
    M smoke-test/src/test/java/org/opennms/smoketest/MenuHeaderIT.java
    M ui/packages/onms-ui/src/components/OnmsDialog.vue
    M ui/packages/onms-ui/src/components/OnmsDrawer.vue
    M ui/src/components/Common/FormField.vue
    M ui/src/components/Device/DCBTable.vue
    M ui/src/components/Layout/Footer.vue
    M ui/src/components/Logs/Editor.vue
    M ui/src/components/Logs/Logs.vue
    M ui/src/components/Nodes/ColumnSelectionDrawer.vue
    M ui/src/components/Nodes/NodeAdvancedFiltersDrawer.vue
    M ui/src/components/SCV/SCVForm.vue
    M ui/src/components/SnmpConfiguration/SnmpConfigDetailsPanel.vue
    M ui/src/containers/Map.vue
    M ui/src/main/App.vue
    M ui/src/styles/onms-base.scss
    M ui/src/styles/opennms-styles.scss
    M ui/tests/components/Common/FormField.test.ts

  Log Message:
  -----------
  Merge remote-tracking branch 'origin/foundation-2026' into release-36.x


  Commit: 09512ffba78050f54927c28291e768e22f22b96e
      https://github.com/OpenNMS/opennms/commit/09512ffba78050f54927c28291e768e22f22b96e
  Author: Scott Theleman <[email protected]>
  Date:   2026-08-25 (Tue, 25 Aug 2026)

  Changed paths:
    M core/web-assets/package.json
    M core/web-assets/pnpm-lock.yaml
    M core/web-assets/src/main/assets/js/apps/onms-classifications/views/modals/popover.html

  Log Message:
  -----------
  NMS-20250: Dependabot security triage for 'core/web-assets' (August 2026) (#8813)

* NMS-20250: Render confirm-popover text with ng-bind instead of ng-bind-html

* NMS-20250: Drop unused babel-preset-es2015-nostrict devDependency

Removes 52 packages from the lockfile.


  Commit: 4878ca79035df0e0d46c59724ee2999d0c90fc8d
      https://github.com/OpenNMS/opennms/commit/4878ca79035df0e0d46c59724ee2999d0c90fc8d
  Author: CI/CD System <[email protected]>
  Date:   2026-08-25 (Tue, 25 Aug 2026)

  Changed paths:
    M core/web-assets/package.json
    M core/web-assets/pnpm-lock.yaml
    M core/web-assets/src/main/assets/js/apps/onms-classifications/views/modals/popover.html

  Log Message:
  -----------
  Merge remote-tracking branch 'origin/foundation-2026' into release-36.x


  Commit: 6d5a9d0ab83aac6ecdba4c7369548512b97a53d6
      https://github.com/OpenNMS/opennms/commit/6d5a9d0ab83aac6ecdba4c7369548512b97a53d6
  Author: CI/CD System <[email protected]>
  Date:   2026-08-25 (Tue, 25 Aug 2026)

  Changed paths:
    M core/db/pom.xml
    M core/web-assets/package.json
    M core/web-assets/pnpm-lock.yaml
    M core/web-assets/src/main/assets/js/apps/onms-classifications/views/modals/popover.html
    M core/web-assets/src/main/assets/style/opennms-theme.scss
    M dependencies/quartz/pom.xml
    M features/graph/provider/legacy/pom.xml
    M features/graph/provider/legacy/src/main/java/org/opennms/netmgt/graph/provider/legacy/LegacyEdge.java
    A features/graph/provider/legacy/src/test/java/org/opennms/netmgt/graph/provider/legacy/LegacyEdgeTest.java
    A features/topology-map/org.opennms.features.topology.api/src/main/java/org/opennms/features/topology/api/topo/LinkDetailsAware.java
    M features/topology-map/plugins/org.opennms.features.topology.plugins.topo.linkd/src/main/java/org/opennms/features/topology/plugins/topo/linkd/internal/LinkdEdge.java
    M features/topology-map/plugins/org.opennms.features.topology.plugins.topo.linkd/src/test/java/org/opennms/features/topology/plugins/topo/linkd/internal/EnhancedLinkdTopologyProviderTest.java
    M opennms-base-assembly/src/main/filtered/etc/search-actions.xml
    M opennms-webapp/src/main/webapp/WEB-INF/jsp/alarm/list.jsp
    M opennms-webapp/src/main/webapp/account/selfService/passwordGate.jsp
    M opennms-webapp/src/main/webapp/includes/bootstrap-footer.jsp
    M opennms-webapp/src/main/webapp/includes/bootstrap.jsp
    M opennms-webapp/src/main/webapp/login.jsp
    M smoke-test/src/test/java/org/opennms/smoketest/AdminPageIT.java
    M smoke-test/src/test/java/org/opennms/smoketest/MenuHeaderIT.java
    M ui/packages/onms-ui/src/components/OnmsDialog.vue
    M ui/packages/onms-ui/src/components/OnmsDrawer.vue
    M ui/src/components/Common/FormField.vue
    M ui/src/components/Device/DCBTable.vue
    M ui/src/components/Layout/Footer.vue
    M ui/src/components/Logs/Editor.vue
    M ui/src/components/Logs/Logs.vue
    M ui/src/components/Nodes/ColumnSelectionDrawer.vue
    M ui/src/components/Nodes/NodeAdvancedFiltersDrawer.vue
    M ui/src/components/SCV/SCVForm.vue
    M ui/src/components/SnmpConfiguration/SnmpConfigDetailsPanel.vue
    M ui/src/containers/Map.vue
    M ui/src/main/App.vue
    M ui/src/styles/onms-base.scss
    M ui/src/styles/opennms-styles.scss
    M ui/tests/components/Common/FormField.test.ts

  Log Message:
  -----------
  Merge remote-tracking branch 'origin/release-36.x' into develop


  Commit: b9ad63b5948e9e4df47a3ba40bc2cbb3f2b177fe
      https://github.com/OpenNMS/opennms/commit/b9ad63b5948e9e4df47a3ba40bc2cbb3f2b177fe
  Author: Marshall Massengill <[email protected]>
  Date:   2026-08-26 (Wed, 26 Aug 2026)

  Changed paths:
    M opennms-config/src/main/java/org/opennms/netmgt/config/EventTranslatorConfigFactory.java
    A opennms-config/src/test/java/org/opennms/netmgt/config/EventTranslatorConfigReloadTest.java

  Log Message:
  -----------
  NMS-20258: Keep the DataSource across an event translator config reload (#8814)

EventTranslatorConfigFactory.update() unmarshalled the new configuration
through an overload that passed a null DataSource, so m_dbConnFactory was
cleared on every reload. SqlValueSpec reads that field when it evaluates,
so after the first reloadDaemonConfig for the Translator every mapping
holding a type="sql" value threw

  NullPointerException: Cannot invoke "javax.sql.DataSource.getConnection()"
  because "this.m_db" is null

and stopped translating until OpenNMS was restarted. Mappings without a sql
value kept working, which is why the reload looked successful.

update() was the only caller of the single-argument overload, so it now
passes the DataSource it already holds and the overload is gone.

Reproduced on a live 36.0.4 instance against a translation whose values are
resolved in sql. The shipped translator-configuration.xml resolves ifDescr,
ifName and ifAlias that way, so a reload leaves the default link-down and
link-up translations broken. Present unchanged since 2012 and on every
maintained branch.


  Commit: 167337244656caa2ad3a649ac6b9dbcf5c662240
      https://github.com/OpenNMS/opennms/commit/167337244656caa2ad3a649ac6b9dbcf5c662240
  Author: CI/CD System <[email protected]>
  Date:   2026-08-26 (Wed, 26 Aug 2026)

  Changed paths:
    M opennms-config/src/main/java/org/opennms/netmgt/config/EventTranslatorConfigFactory.java
    A opennms-config/src/test/java/org/opennms/netmgt/config/EventTranslatorConfigReloadTest.java

  Log Message:
  -----------
  Merge remote-tracking branch 'origin/foundation-2024' into foundation-2025


  Commit: b673d2484793c18d5380c48bd5ccf02b04af56c2
      https://github.com/OpenNMS/opennms/commit/b673d2484793c18d5380c48bd5ccf02b04af56c2
  Author: CI/CD System <[email protected]>
  Date:   2026-08-26 (Wed, 26 Aug 2026)

  Changed paths:
    M opennms-config/src/main/java/org/opennms/netmgt/config/EventTranslatorConfigFactory.java
    A opennms-config/src/test/java/org/opennms/netmgt/config/EventTranslatorConfigReloadTest.java

  Log Message:
  -----------
  Merge remote-tracking branch 'origin/foundation-2025' into foundation-2026


  Commit: 48b76a191dd69c2acee461b7582bba1a41630d24
      https://github.com/OpenNMS/opennms/commit/48b76a191dd69c2acee461b7582bba1a41630d24
  Author: Marshall Massengill <[email protected]>
  Date:   2026-08-26 (Wed, 26 Aug 2026)

  Changed paths:
    M opennms-webapp-rest/src/main/java/org/opennms/web/rest/v2/SnmpConfigRestService.java
    M opennms-webapp-rest/src/test/java/org/opennms/web/rest/v2/SnmpConfigRestServiceIT.java

  Log Message:
  -----------
  NMS-20262: Make the JSON snmp-config download a faithful restore (#8816)

GET /snmp-config/download?format=json serialized SnmpConfig through its
getters, and those getters substitute a default when the backing field is
null (timeout and retry return 0, port 161, max-vars-per-pdu 10, and so
on). Every value a definition inherited from the top-level config was
therefore written out as an explicit one, and re-uploading the file
through POST /snmp-config/upload pinned each definition's timeout and
retry to 0 - agents that had been polling on the global 1800 ms timeout
were left with none. The XML pair was unaffected because JAXB binds to
the fields.

Serialize the download from the fields instead, dropping nulls, so the
file carries only what was actually configured. The upload path and the
other JSON endpoints keep the existing mapper.

Co-authored-by: Marshall Massengill <[email protected]>


  Commit: 25cd7ac0163d23134e1ba278cc362e963fb850e1
      https://github.com/OpenNMS/opennms/commit/25cd7ac0163d23134e1ba278cc362e963fb850e1
  Author: CI/CD System <[email protected]>
  Date:   2026-08-26 (Wed, 26 Aug 2026)

  Changed paths:
    M opennms-config/src/main/java/org/opennms/netmgt/config/EventTranslatorConfigFactory.java
    A opennms-config/src/test/java/org/opennms/netmgt/config/EventTranslatorConfigReloadTest.java
    M opennms-webapp-rest/src/main/java/org/opennms/web/rest/v2/SnmpConfigRestService.java
    M opennms-webapp-rest/src/test/java/org/opennms/web/rest/v2/SnmpConfigRestServiceIT.java

  Log Message:
  -----------
  Merge remote-tracking branch 'origin/foundation-2026' into release-36.x


  Commit: 6bf8c338ae2f8065055d434fed91dfbe99d00c77
      https://github.com/OpenNMS/opennms/commit/6bf8c338ae2f8065055d434fed91dfbe99d00c77
  Author: CI/CD System <[email protected]>
  Date:   2026-08-26 (Wed, 26 Aug 2026)

  Changed paths:
    M opennms-config/src/main/java/org/opennms/netmgt/config/EventTranslatorConfigFactory.java
    A opennms-config/src/test/java/org/opennms/netmgt/config/EventTranslatorConfigReloadTest.java
    M opennms-webapp-rest/src/main/java/org/opennms/web/rest/v2/SnmpConfigRestService.java
    M opennms-webapp-rest/src/test/java/org/opennms/web/rest/v2/SnmpConfigRestServiceIT.java

  Log Message:
  -----------
  Merge remote-tracking branch 'origin/release-36.x' into develop


  Commit: a5ab207cbc3999a2fdf9e0a7f578cb986677f94c
      https://github.com/OpenNMS/opennms/commit/a5ab207cbc3999a2fdf9e0a7f578cb986677f94c
  Author: mershad-manesh <[email protected]>
  Date:   2026-08-27 (Thu, 27 Aug 2026)

  Changed paths:
    M opennms-services/src/main/java/org/opennms/netmgt/poller/pollables/PendingPollEvent.java
    M opennms-services/src/test/java/org/opennms/netmgt/poller/PollerQueryManagerDaoIT.java

  Log Message:
  -----------
  Fix flaky testInterfaceReparented and a related outage event-ID race in PendingPollEvent (#8815)


  Commit: 334c627d758f9be390e459993e94b790fcf4726a
      https://github.com/OpenNMS/opennms/commit/334c627d758f9be390e459993e94b790fcf4726a
  Author: Marshall Massengill <[email protected]>
  Date:   2026-08-27 (Thu, 27 Aug 2026)

  Changed paths:
    M opennms-services/src/main/java/org/opennms/netmgt/collectd/CollectableService.java
    M opennms-services/src/test/java/org/opennms/netmgt/collectd/CollectableServiceTest.java
    M opennms-services/src/test/java/org/opennms/netmgt/collectd/CollectdIT.java
    M opennms-services/src/test/java/org/opennms/netmgt/collectd/ThresholdIT.java

  Log Message:
  -----------
  NMS-19979: clear data collection alarms after a restart or collectd reload (#8774)

* NMS-19979: clear data collection alarms after a restart or collectd reload

A dataCollectionFailed alarm never cleared if collection recovered across an
OpenNMS restart or a collectd configuration reload.

CollectableService keeps the last collection status in memory and updateStatus()
only emits an event on a transition. That status was seeded to SUCCEEDED, and
both a restart and rebuildScheduler() discard and rebuild every
CollectableService, so the recovery was no longer a transition, no
dataCollectionSucceeded was sent, and the alarm was orphaned.

Seed it to UNKNOWN instead. The first collection then always transitions,
whichever way it goes: a success emits dataCollectionSucceeded and clears the
alarm the previous generation left behind, and a failure emits
dataCollectionFailed exactly as before. Subsequent collections are unchanged,
so this costs one extra event per collected service per restart or reload, not
one per collection cycle.

An unmatched dataCollectionSucceeded creates a Normal severity alarm of its own,
which the default alarmd cleanUp rule deletes after five minutes.

* NMS-19979: Update collectd tests for the first-collection succeeded event

Seeding m_status to UNKNOWN makes the first successful collection of every
scheduling generation a transition, so it now emits dataCollectionSucceeded.
Two existing tests assumed that event never fired.

ThresholdIT anticipates it once per generation. A nodeCategoryMembershipChanged
event unschedules and reschedules the node, building a fresh CollectableService,
so the reschedule reports success again after the second category change.

CollectdIT.testOneMatchingSpec performs real collections, so it accounts for the
send explicitly rather than loosening tearDown's verifyNoMoreInteractions.


  Commit: 2ba73e1539cfbf11943eb2379a5dba239e2f017f
      https://github.com/OpenNMS/opennms/commit/2ba73e1539cfbf11943eb2379a5dba239e2f017f
  Author: CI/CD System <[email protected]>
  Date:   2026-08-27 (Thu, 27 Aug 2026)

  Changed paths:
    M opennms-services/src/main/java/org/opennms/netmgt/poller/pollables/PendingPollEvent.java
    M opennms-services/src/test/java/org/opennms/netmgt/poller/PollerQueryManagerDaoIT.java

  Log Message:
  -----------
  Merge remote-tracking branch 'origin/foundation-2026' into release-36.x


  Commit: 48c6e502187ba2b8344f59f6558e2c16c1fcafd8
      https://github.com/OpenNMS/opennms/commit/48c6e502187ba2b8344f59f6558e2c16c1fcafd8
  Author: CI/CD System <[email protected]>
  Date:   2026-08-27 (Thu, 27 Aug 2026)

  Changed paths:
    M opennms-services/src/main/java/org/opennms/netmgt/collectd/CollectableService.java
    M opennms-services/src/test/java/org/opennms/netmgt/collectd/CollectableServiceTest.java
    M opennms-services/src/test/java/org/opennms/netmgt/collectd/CollectdIT.java
    M opennms-services/src/test/java/org/opennms/netmgt/collectd/ThresholdIT.java

  Log Message:
  -----------
  Merge remote-tracking branch 'origin/foundation-2024' into foundation-2025


  Commit: 3f4bb3e089774cf3022e5c3e490f221ee1a473d3
      https://github.com/OpenNMS/opennms/commit/3f4bb3e089774cf3022e5c3e490f221ee1a473d3
  Author: CI/CD System <[email protected]>
  Date:   2026-08-27 (Thu, 27 Aug 2026)

  Changed paths:
    M opennms-services/src/main/java/org/opennms/netmgt/poller/pollables/PendingPollEvent.java
    M opennms-services/src/test/java/org/opennms/netmgt/poller/PollerQueryManagerDaoIT.java

  Log Message:
  -----------
  Merge remote-tracking branch 'origin/release-36.x' into develop


  Commit: 7224c0246ba7c6cb4142fb69dcaae5af43398358
      https://github.com/OpenNMS/opennms/commit/7224c0246ba7c6cb4142fb69dcaae5af43398358
  Author: CI/CD System <[email protected]>
  Date:   2026-08-27 (Thu, 27 Aug 2026)

  Changed paths:
    M opennms-services/src/main/java/org/opennms/netmgt/collectd/CollectableService.java
    M opennms-services/src/test/java/org/opennms/netmgt/collectd/CollectableServiceTest.java
    M opennms-services/src/test/java/org/opennms/netmgt/collectd/CollectdIT.java
    M opennms-services/src/test/java/org/opennms/netmgt/collectd/ThresholdIT.java

  Log Message:
  -----------
  Merge remote-tracking branch 'origin/foundation-2025' into foundation-2026


  Commit: 6ac56f2630835856338eaa1428d9dec0e9f77a68
      https://github.com/OpenNMS/opennms/commit/6ac56f2630835856338eaa1428d9dec0e9f77a68
  Author: CI/CD System <[email protected]>
  Date:   2026-08-27 (Thu, 27 Aug 2026)

  Changed paths:
    M opennms-services/src/main/java/org/opennms/netmgt/collectd/CollectableService.java
    M opennms-services/src/test/java/org/opennms/netmgt/collectd/CollectableServiceTest.java
    M opennms-services/src/test/java/org/opennms/netmgt/collectd/CollectdIT.java
    M opennms-services/src/test/java/org/opennms/netmgt/collectd/ThresholdIT.java

  Log Message:
  -----------
  Merge remote-tracking branch 'origin/foundation-2026' into release-36.x


  Commit: ee6df0b663b92bf776257bca63d5ea2d454d50a4
      https://github.com/OpenNMS/opennms/commit/ee6df0b663b92bf776257bca63d5ea2d454d50a4
  Author: CI/CD System <[email protected]>
  Date:   2026-08-27 (Thu, 27 Aug 2026)

  Changed paths:
    M opennms-services/src/main/java/org/opennms/netmgt/collectd/CollectableService.java
    M opennms-services/src/test/java/org/opennms/netmgt/collectd/CollectableServiceTest.java
    M opennms-services/src/test/java/org/opennms/netmgt/collectd/CollectdIT.java
    M opennms-services/src/test/java/org/opennms/netmgt/collectd/ThresholdIT.java

  Log Message:
  -----------
  Merge remote-tracking branch 'origin/release-36.x' into develop


  Commit: e23ed1a215fd0499c5ddac9e0a23b792276710f8
      https://github.com/OpenNMS/opennms/commit/e23ed1a215fd0499c5ddac9e0a23b792276710f8
  Author: joseanesONMS <[email protected]>
  Date:   2026-08-28 (Fri, 28 Aug 2026)

  Changed paths:
    M features/bsm/rest/impl/pom.xml
    M features/status/rest/pom.xml
    M opennms-openapi-docs/pom.xml
    M opennms-webapp-rest/pom.xml
    A opennms-webapp-rest/src/main/java/org/opennms/web/rest/v2/SystemReportRestService.java
    M opennms-webapp-rest/src/main/webapp/WEB-INF/applicationContext-cxf-rest-v2.xml
    M opennms-webapp-rest/src/main/webapp/WEB-INF/menu/menu-template-default.json
    M opennms-webapp-rest/src/main/webapp/WEB-INF/menu/menu-template.json
    A opennms-webapp-rest/src/test/java/org/opennms/web/rest/v2/SystemReportRestServiceTest.java
    M opennms-webapp/src/main/webapp/WEB-INF/applicationContext-spring-security.xml
    M smoke-test/src/test/java/org/opennms/smoketest/MenuHeaderIT.java
    A ui/src/containers/SystemReport.vue
    M ui/src/main/router/index.ts
    M ui/src/services/index.ts
    A ui/src/services/systemReportService.ts
    A ui/src/types/systemReport.ts
    A ui/tests/systemReport.test.ts

  Log Message:
  -----------
  NMS-20154: Migrate the Generate System Report page to Vue UI (#8824)

* NMS-20154: /api/v2/system-report metadata endpoints for the new report page

Adds a read-only SystemReportRestService exposing the visible report plugins and
formatters as JSON so a PrimeVue Generate System Report page can build its form.
The systemReport bean is wired into the REST v2 context through the SOA service
registry, mirroring the legacy dispatcher wiring, and the endpoints are gated to
ROLE_ADMIN since the report bundles logs and configuration. Report generation
itself continues to stream from the existing SystemReportController.

* NMS-20154: PrimeVue Generate System Report page

Replaces the legacy systemReport JSP form with a PrimeVue page at /system-report:
plugin checkboxes with an All master toggle, a report-type Select, and an optional
file name. The page loads its options from /api/v2/system-report and, on Generate,
posts operation=run to the existing SystemReportController through a hidden iframe
so the browser streams the report download without navigating away. The route is
admin-gated to match the endpoint.

* NMS-20154: wire systemReport via the root-context serviceRegistry bean

serviceRegistry is a root-context bean (applicationContext-soa.xml) and the CXF
/api/v2 servlet context has the root as its parent, so a direct ref resolves it —
matching the legacy dispatcher wiring. Replaces the earlier onmsgi:reference,
which had no matching OSGi service registration.

* NMS-20154: point the Support menu entry at the new system report page

Repoints the "Generate System Report" menu item from the legacy
admin/support/systemReportList.htm JSP to the PrimeVue page at
ui/index.html#/system-report.

* NMS-20154: report-service unit test and a generating-report notice

Adds a SystemReportRestService unit test covering the visible-only filtering and
DTO mapping for plugins and formatters. The page now shows a notice on Generate
that the report is being built and may take a while on a large system, since the
report is produced on demand (plugins run and logs/config are gathered and
compressed before the streamed download begins) and the browser cannot signal
when that download completes.

* NMS-20154: address review — surface generation failures, sanitize filename

The Generate flow now detects when the hidden download frame loads an error page
(a failed download never loads it) and surfaces the failure instead of silently
doing nothing. The optional filename is sanitized to word characters the same way
the server does, and omitted when it would collapse to an empty name. The default
report format returns to the legacy 'text', plugin checkbox ids are made
whitespace-safe, the context path is derived from the URL when the menu base is
unavailable, and a non-admin deep-link no longer flashes a load error before the
route guard redirects. Also drops the dead JSON-shape fallback in the service.

* NMS-20154: update the smoke assertion for the new system report page

The Support -> Generate System Report menu entry now opens the PrimeVue
page (ui/index.html#/system-report), which renders the /ui breadcrumb
(div.breadcrumbs) and an OnmsButton. MenuHeaderIT still waited on the
legacy JSP DOM (ol.breadcrumb 'System Reports' and a Bootstrap submit
input), so testMenuEntries timed out. Point it at the new page's
breadcrumb link and generate button.

* NMS-20154: use Onms-XXX wrappers and a REST download for system report

Address review on the Generate System Report page:
- Swap direct PrimeVue (Card, Checkbox, Select, InputText) for the
  @opennms/onms-ui wrappers (OnmsCard/OnmsCheckbox/OnmsSelect/
  OnmsInputText); the binary OnmsCheckbox drives per-plugin selection
  through an explicit add/remove toggle.
- Replace the hidden-iframe form POST to the legacy systemReport.htm
  with a POST /api/v2/system-report/generate that streams the report as
  an attachment, consumed via composables/useDownload. The endpoint
  ports FormatterView (resolve formatter, run selected plugins, sanitize
  filename) and rejects unknown/non-streaming formatters and empty
  plugin sets with 400s. Generation is admin-only in spring-security.
- Cover the endpoint (stream order, attachment header, filename
  sanitising, the 400 paths) and rewrite the page test for the new flow.

* NMS-20154: give the sibling v2 REST ITs the system-report class on their test classpath

features/status/rest and features/bsm/rest/impl boot opennms-webapp-rest's
shared applicationContext-cxf-rest-v2.xml in their ITs. That context now
instantiates SystemReportRestService and defines the systemReport bean
(class org.opennms.systemreport.SystemReport), which opennms-webapp-rest
declares provided (non-transitive), so those ITs failed to load the whole
context with a ClassNotFoundException. Add system-report as a test-scope
dependency in both modules, mirroring the existing topology-views/jsonStore
entries that cover the same shared-context requirement.

* NMS-20154: re-run CI (flaky smoke test AdminPasswordGateIT, unrelated)

* NMS-20154: put system-report on the openapi-docs classpath

The swagger scan reflects over SystemReportRestService's declared fields, so
the type of m_systemReport must be resolvable when opennms-openapi-docs builds.
webapp-rest declares the system-report feature as provided (non-transitive),
so add it here at provided scope too — matching the topology-views entry that
exists for the same reason and the sibling fixes in bsm/rest and status/rest.


  Commit: 3720b4d574de6708cc18b553e145ae08c13177e8
      https://github.com/OpenNMS/opennms/commit/3720b4d574de6708cc18b553e145ae08c13177e8
  Author: joseanesONMS <[email protected]>
  Date:   2026-08-31 (Mon, 31 Aug 2026)

  Changed paths:
    A opennms-webapp-rest/127.0.0.1.tm4.epoch
    A opennms-webapp-rest/src/main/java/org/opennms/web/rest/v2/DashboardRestService.java
    A opennms-webapp-rest/src/main/java/org/opennms/web/rest/v2/api/DashboardRestApi.java
    A opennms-webapp-rest/src/test/java/org/opennms/web/rest/v2/DashboardRestServiceIT.java
    A opennms-webapp-rest/tmlog4.log
    M opennms-webapp/src/main/webapp/WEB-INF/applicationContext-spring-security.xml
    M opennms-webapp/src/main/webapp/includes/quicksearch-box.jsp
    M ui/package.json
    M ui/pnpm-lock.yaml
    A ui/src/components/Dashboard/DashboardFilterControl.vue
    A ui/src/components/Dashboard/DashboardGrid.vue
    A ui/src/components/Dashboard/DashboardToolbar.vue
    A ui/src/components/Dashboard/PanelFrame.vue
    A ui/src/components/Dashboard/PanelOptionsDialog.vue
    A ui/src/components/Dashboard/defaultLayout.ts
    A ui/src/components/Dashboard/filter.ts
    A ui/src/components/Dashboard/panels/HtmlContentPanel.vue
    A ui/src/components/Dashboard/panels/NotesPanel.vue
    A ui/src/components/Dashboard/panels/SamplePanel.vue
    A ui/src/components/Dashboard/registry.ts
    A ui/src/components/Dashboard/severity.ts
    A ui/src/components/Dashboard/timeframe.ts
    A ui/src/composables/useDashboardRefresh.ts
    A ui/src/containers/Dashboard.vue
    M ui/src/main/router/index.ts
    A ui/src/services/dashboardService.ts
    A ui/src/stores/dashboardStore.ts
    A ui/src/types/dashboard.ts
    A ui/tests/components/Dashboard/HtmlContentPanel.test.ts
    A ui/tests/components/Dashboard/filter.test.ts
    A ui/tests/components/Dashboard/registry.test.ts
    A ui/tests/components/Dashboard/severity.test.ts
    A ui/tests/components/Dashboard/timeframe.test.ts
    A ui/tests/composables/useDashboardRefresh.test.ts
    A ui/tests/services/dashboardService.test.ts
    A ui/tests/stores/dashboardStore.test.ts

  Log Message:
  -----------
  NMS-19851: configurable dashboard framework (base) (#8721)

* NMS-19851: Configurable system-wide dashboard (milestones 1-2 + persistence backend)

Adds a configurable, PrimeVue-based Vue 3 dashboard under /ui (route
/dashboard) to begin replacing the legacy JSP homepage, plus the REST
endpoint to persist its layout.

Frontend (ui/):
- Panel framework: registry, Pinia store, default layout, PanelFrame chrome
  (PrimeVue Panel), and a sample panel. Panels receive resolved filter /
  timeframe / refresh contracts.
- DashboardGrid uses grid-layout-plus for drag + resize (edit mode only);
  geometry flows grid -> store, add/remove/collapse flow store -> grid.
- Toolbar: global timeframe, refresh interval + pause (NMS-4404), add panel,
  save/edit; per-panel collapse/rename/remove.
- Global filter control (NMS-10507): surveillance categories + IP match.
- dashboardService talks to /api/v2/dashboard/system (404 -> built-in default).

Backend (opennms-webapp-rest):
- DashboardRestApi / DashboardRestService: GET/PUT /api/v2/dashboard/system,
  persisting one system-wide JSON layout document via JsonStore.

Addresses NMS-11946 (collapse/rearrange/hide) and lays groundwork for
NMS-4433 (new panel types). Future: per-user / named dashboards reuse the
same layout document by varying its scope.

* NMS-19851: Add first real dashboard panels (notifications, status overview, nodes with alarms)

Replaces the placeholder default layout with three panels matching the legacy
homepage boxes:
- Notifications: outstanding-notice counts from /rest/notifications/summary.
- Status Overview: Chart.js doughnut of alarm counts by severity, read from
  /api/v2/alarms totalCount per severity (FIQL alarm.severity==).
- Nodes with Pending Alarms: alarms grouped by node with count + max severity.

Adds a shared severity util (ordering, labels, OpenNMS-standard colors) and a
notificationService. Panels refetch on the global refresh tick.

* NMS-19851: Status Overview outages donut + News Feed panel

- Status Overview now shows BOTH legacy doughnuts (alarms + outages), sourced
  from /api/v2/status/summary/nodes/{alarms,outages} (nodes grouped by unacked
  alarms / current outages), replacing the prior alarms-only per-severity count.
- New News Feed panel from /api/v2/newsfeed (title/link/short description/tags).

Adds statusService and newsfeedService; both panels added to the default layout.

* NMS-19851: Add Pending Situations and Service Outages panels

- Pending Situations: alarms filtered isSituation==true (/api/v2/alarms), with
  severity, affected-node/alarm counts.
- Nodes with Service Outages: currently-open outages from /api/v2/outages
  (FIQL ifRegainedService==epoch), node + service name.

Adds outageService and situationService; refactors the default layout into a
three-column arrangement (situations/alarms/outages, status overview,
notifications/news) via a small panel() helper.

* NMS-19851: Add Regional Status map panel

Leaflet/OSM map (vue-leaflet) replicating the legacy homepage map: geolocated
nodes (/api/v2/nodes assetRecord) with markers colored by each node's highest
alarm severity (derived from /api/v2/alarms). Handles grid resize via
ResizeObserver -> invalidateSize. Added to the registry + default layout.

* NMS-19851: Wider middle column in default dashboard layout

Match the legacy homepage proportions: 3 / 6 / 3 of the 12-col grid (was even
4/4/4). Left = situations/alarms/outages, center (wide) = status overview + map,
right = notifications/news. Individual panels remain resizable via the grid.

* NMS-19851: Add Availability (24h) panel

Replicates the legacy "Availability Over the Past 24 Hours" categories box from
GET /rest/availability (RTC category data: outage-text, availability-text,
availability-class). Table of category / outages / availability with an Overall
Service Availability total row; availability colored by class. No new backend
needed. Added to registry + default layout (center column, under Status Overview).

* NMS-19851: Add Business Services and Applications (with pending alarms) panels

Both replicate the legacy summary boxes from the existing status REST
(/api/v2/status/business-services and /status/applications) — no new backend
needed; the list-with-severity endpoints already exist in StatusRestService.
Shared StatusListPanel renders name + severity badge, filtered to problem
severities (WARNING+). Added to registry + left column of the default layout.

* NMS-19851: Search widgets, original-layout order, toolbar tooltips + fullscreen

- Add Quick Search (node id/label/IP -> element/nodeList.htm), and Resource
  Graphs / KSC Reports launcher panels (link to legacy chooser pages; full
  typeahead is a follow-up).
- Default layout now mirrors the legacy homepage column order/positions for
  easy comparison: left = situations/alarms/outages/BSM/apps/news; center =
  status/availability/map; right = notifications/resource-graphs/KSC/quick-search.
- Toolbar: title tooltips on the timeframe + refresh selects (and pause), and a
  Full screen button (Fullscreen API on the dashboard container) for NOC displays.

* NMS-19851: Dashboard panel polish (map, donuts, panel height, double titles)

- PanelFrame: make the PrimeVue Panel content wrappers flex to a bounded height
  so fill-height panels (map, charts) size correctly instead of overflowing.
- Regional Status: always renders the map (even with no nodes); remembers pan +
  zoom across reloads via localStorage; empty-state shown as a small pill.
- Status Overview: thicker donuts (cutout 55%) that fit the box (no longer cut).
- Resource Graphs / KSC Reports: drop the redundant in-panel title (the panel
  header already shows it).

* NMS-19851: Fix fullscreen, footer overlap, overlay font, donut resize

- web.xml: Permissions-Policy was fullscreen=() which blocked the Fullscreen API;
  changed to fullscreen=(self). Toolbar fullscreen toggle now also falls back to
  a CSS "maximize" if the API is unavailable.
- DashboardGrid: add bottom padding so the app's fixed copyright bar no longer
  cuts the last panels.
- Dashboard: global style so PrimeVue overlays (teleported to <body>) use the app
  sans-serif font instead of the serif default (fixes combo-box dropdown font).
- Status Overview: donuts resize with the panel (ResizeObserver) and are clipped
  to the box.

* NMS-19851: Per-panel options dialog, fixed/auto height, Notes + HTML panels

- Per-panel options dialog (gear): height mode + panel-type-specific settings.
- Height mode per panel: 'fixed' (fixed grid height + scrollbar) or 'auto'
  (PanelFrame measures natural content height; DashboardGrid fits the cell, so
  empty list panels shrink to a couple of lines). Auto panels aren't manually
  resizable and their height isn't persisted. Registry defaults match the legacy
  homepage: News Feed / Availability / Status Overview / Regional map = fixed,
  all the list panels = auto.
- New panels: Notes (free text in options) and HTML Content (iframe to a URL;
  same-origin per the frame-src CSP).

* NMS-19851: Fix panel overlap from auto-height (manual vertical compaction)

grid-layout-plus doesn't recompact on programmatic height changes, so auto-height
resizes (and add/remove) could leave panels overlapping. Add our own vertical
compaction (place each item at the lowest non-colliding y in its columns) run
after auto-height changes and reconcile.

* NMS-19851: Fix fixed-panel height chain, internal scroll vs footer, HTML URL validation

- Fixed panels now actually bound + scroll: the PrimeVue 4 chain has an extra
  .p-panel-content-wrapper between container and content that wasn't flexed —
  add it. This fixes News Feed/Availability scrollbars AND the Regional map
  (the map now gets a real height and renders tiles even with no nodes).
- Dashboard scrolls internally (flex column; grid is the scroll region) and the
  content chain gets a definite height via :has(#dashboard-root), so a tall
  dashboard no longer overflows past the app footer/copyright bar.
- HTML Content options: validate the URL — external (cross-origin) URLs are
  rejected with an explanation (blocked by frame-src 'self' CSP) before applying.

* NMS-19851: Auto-height panels shrink to content (min-h=1, no reserved whitespace)

Auto panels were clamped to the registry minSize.h, leaving whitespace under
short content (and reserving space visibly in edit mode). Use min-h=1 for
auto-height panels so the cell hugs the measured content.

* NMS-19851: Add Top N panel (rank entities by a chosen KPI over the timeframe)

New 'topn' panel: ranks by a selectable KPI with sort direction and N (options
dialog). Default KPI = Node Response Time (ICMP), descending, N=5. Data via the
measurements API (POST /rest/measurements): enumerate matching resources from
/rest/resources, query one AVERAGE bucket over the resolved timeframe, sort,
take N. KPI registry (topnService) is extensible for more KPIs.

* NMS-19851: TopN measurements use a normal-resolution step (fix NaN)

A single range-sized RRD bucket returns NaN; query at ~range/1000 (min 5min)
and average the series for the aggregate.

* NMS-19851: Fix auto-height measurement + dark-mode panel theming

- PanelFrame now wraps the PrimeVue Panel in a real <div> (frameRef) and measures
  that for auto-height — the component ref didn't reliably expose a DOM node, so
  auto panels never shrank (the leftover whitespace). Auto panels now fit content.
- Panel surface/header/text/border use Feather theme variables
  (--feather-elevation-background-2 / -primary-text-on-surface / -border-on-surface),
  which adapt under .open-dark — so panels are legible in dark mode instead of
  white-with-invisible-text.

* NMS-19851: Tighten panel padding + compact columns on mount (less whitespace)

Reduce PrimeVue panel header/content padding so short auto panels (Resource
Graphs, KSC, etc.) don't round up to an extra grid row, and run a vertical
compaction pass shortly after mount so columns stack tight once panels report
their auto heights.

* NMS-19851: Real compaction (fresh refs), severity-shading option, legacy->new button

- DashboardGrid: compaction now reassigns the layout with FRESH item objects (and
  vertical-compact enabled) so grid-layout-plus actually re-renders compacted
  positions — removes the leftover gaps in saved layouts (e.g. Resource Graphs/KSC).
- Per-panel "Shade rows by severity" option (legacy-style) for Pending Situations,
  Nodes with Pending Alarms, and Availability — rows tinted by severity.
- Legacy homepage: "Try the new Dashboard (beta)" button below the Quick Search box
  (links to /opennms/ui/#/dashboard).

* NMS-19851: Auto-height actually applies (always reassign) + service-types backend/combo

- DashboardGrid: grid-layout-plus only re-renders when the layout ARRAY ref/length
  changes (watch on [layout, length]); it ignored in-place h/y mutations. compactLayout
  now ALWAYS reassigns fresh item objects, so auto-height + compaction truly apply
  (this was why the whitespace "did nothing").
- Backend: DashboardRestService gains GET /api/v2/dashboard/service-types (id+name)
  via ServiceTypeDao; rebuilt + deployed the webapp-rest jar.
- Quick Search: "Providing service" combo populated from that endpoint, posting the
  service id to element/nodeList.htm (matches the legacy box).

* NMS-19851: Pixel-perfect panel heights, panel/category deep-links, dedup availability total

Spacing (real fix): switch the grid to pixel units — row-height=1, vertical
margin=0, h measured in px. Auto panels size to exactly their content height plus
a 12px gap (was rounding up to the next ~56px row, which caused the persistent
whitespace). Fixed panels fill the cell minus that 12px gap. Old/default layouts
(h in ~44px row units) are auto-converted to px on load.

Linking parity with the legacy front page:
- Panel titles deep-link (Situations/Alarms -> alarm/list.htm, Outages ->
  outage/list.htm, Applications -> application/index.jsp, Availability ->
  rtc/index.jsp, Notifications -> notification/index.jsp, Resource Graphs ->
  graph/index.jsp, KSC -> KSC/index.jsp). Plain text while in edit mode so the
  header stays a drag handle.
- Availability category names link to rtc/category.jsp (outage detail).

Availability: render the REST "Total" section's "Overall Service Availability"
row as the bold total instead of appending our own computed row (removes the
duplicate).

Legacy homepage "Try the new Dashboard" button: blue -> light gray.

* NMS-19851: BSM title deep-link + readable donut legend in dark mode

- Business Services panel title now links to the BSM topology view
  (topology?provider=Business Services&layout=Hierarchy Layout&szl=1).
- Status Overview donut legends read the Feather text color so labels are
  legible on the dark surface (Chart.js' default gray was unreadable); a
  MutationObserver recolors them live when the .open-dark theme is toggled.

* NMS-19851: Metric Chart panel — line chart of one entity/metric over the timeframe

New 'metric-chart' panel type: Chart.js line chart of a single metric on a
single entity over the panel's resolved timeframe. Entity and metric are
single-selects in the panel options (entity list = entities with data for
the chosen metric); defaults: localhost / Node Response Time (ICMP).
Reuses the Top-N KPI registry and measurements data path (listKpiSources
extracted from queryTopn).

* NMS-19851: Hide Sample Panel from the Add Panel picker

Registry 'hidden' flag: the panel stays registered (renders if a layout
references it, handy for framework debugging) but is no longer offered
in production via Add Panel.

* NMS-19851: 'Reset to default' in edit mode — restore the factory layout

store.applyFactoryDefault() swaps in createDefaultLayout() (legacy homepage
parity incl. the Regional Map) and marks dirty; persists on Save. Fixes the
gap where a saved layout always shadowed the built-in default with no way
back (store.reset() only reloads the saved doc).

* NMS-19851: Status Overview donut slices deep-link in context (legacy parity)

Clicking a severity slice navigates to the legacy severity-filtered node
list (status/index.jsp?type=nodes&strategy={alarms|outages}&severityFilter=),
matching the original homepage status-box onclick; pointer cursor on hover.

* NMS-19851: adapt the dashboard to current develop

FeatherDS is gone from the UI stack: the SORT enum import moves to its
vendored home in @/types, and the panel styling swaps the feather CSS
variables for the PrimeVue tokens the rest of /ui uses, including the
computed-style reads that color the Chart.js legends. grid-layout-plus is
the only dependency develop did not already carry.

* NMS-19851: dashboard test suite and admin-only layout writes

Adds the missing automated coverage: store behavior (load/save/dirty
tracking, panel operations, geometry sync, override resolution), panel
registry and default-layout consistency, timeframe range math, severity
helpers, the service fallback paths, the global refresh timer, and a REST
integration test for the layout document lifecycle and service types.

The layout endpoint gets the security it implied but never enforced:
every user can read the system dashboard, only admins can save it —
enforced by Spring Security rules and an in-code check, and covered by
the integration test.

* NMS-19851: fix adversarial review findings on the dashboard

Correctness: the grid now applies a loaded layout (a layout-revision watch
rebuilds geometry, and geometry is only written back while editing, so a
saved arrangement is no longer overwritten by defaults on open); a failed
load keeps the current layout instead of fabricating the default that a
Save would then persist; a partial/corrupt stored document is normalized
so it can't crash every user's homepage; route re-entry preserves unsaved
edits. Top-N maps measurements to sources by the label index the backend
returns (not position, which is hash-ordered); Nodes-with-Alarms counts
only unacknowledged WARNING+ alarms; Top-N and the metric chart guard
against stale concurrent responses.

Security: the HTML-content iframe only loads validated same-origin http(s)
URLs (a persisted javascript:/data: URL no longer executes); the app-wide
fullscreen Permissions-Policy relaxation is reverted (the toolbar falls
back to CSS maximize); the dashboard security rules no longer shadow the
/api/v2 GET catch-all; Edit/Save are admin-only, matching the layout PUT.

Features: the global filter (surveillance categories resolved to node ids,
plus IP match) now constrains the node-scoped panels; a custom timeframe
gains a real date-range picker and panels react to from/to; the newsfeed
honors opennms.newsFeedPanel.show=false without any outbound request.

Adds tests for the store, service normalization/errors, the filter helper,
Top-N mapping, and the iframe URL guard.

* NMS-19851: move timeframeRange into the framework timeframe helper

The preset-to-epoch-range resolver is a timeframe concern used by both the
Top-N and metric-chart panels; moving it out of topnService lets the panel
groups be split cleanly without the framework depending on a panel service.

* NMS-19851: configurable dashboard framework (base)

The layout engine and its supporting framework, with an empty default
dashboard: grid-layout-plus grid with drag/resize/collapse/rename/remove,
the panel registry and Add-panel picker, one system-wide layout persisted
as JSON via /api/v2/dashboard (admin-only writes), the global refresh
timer with pause, the timeframe and filter toolbar controls, and full-
screen. Ships the three content-agnostic panels used to exercise the
framework — Sample (hidden), Notes, and HTML Content — and a beta link to
the dashboard on the legacy homepage. Parity panels (NMS-20126) and the
new panels (NMS-20127) build on this and introduce the default layout.

* NMS-19851: resolve dashboard filter categories via the node search that filters

The bare /api/v2/nodes?category=NAME parameter is ignored and returns every
node, so the global filter's category selection resolved to all node ids and
did not filter. Use the node search property that actually constrains by
membership (_s=category.name==NAME).

* NMS-19851: drop accidentally committed ui/node_modules symlink

A stray symlink to a local worktree's node_modules was committed with the
base framework change; it makes the CI pnpm install fail with ENOTDIR when it
tries to create the real node_modules directory.

* NMS-19851: onms-ui seam migration, auto-fit layout option, auto-height compaction fix

Move the dashboard framework chrome off direct PrimeVue onto the
@opennms/onms-ui Onms-* wrappers (NMS-20081 seam), so the framework
passes the no-direct-primevue lint rule. PanelFrame's edit icons move
into the panel header slot since OnmsPanel forwards only that slot.

Add an auto-fit ("squeeze") layout option persisted on the layout doc
and toggleable in edit mode: panels pack up and down against their
neighbours, or stay free-form. Fix the auto-height race where an async
layout reload reset measured panel heights back to their authored
placeholder and left gaps — measured heights are now cached and reused
across rebuilds, so collapse/expand and initial load pack tightly.

* NMS-19851: satisfy arrow-parens lint on listPanelDefinitions

* NMS-19851: satisfy stylistic lint in the dashboard tests !smoke

The develop refresh brought stricter stylistic eslint rules that the
dashboard test files predate; build-ui was red on 17 auto-fixable
object-curly-spacing/arrow-parens/brace-style errors. lint:fix output only;
the 52 dashboard tests still pass.


  Commit: a8fb58a4360886da74df9a42b7a6388a091cc375
      https://github.com/OpenNMS/opennms/commit/a8fb58a4360886da74df9a42b7a6388a091cc375
  Author: Jose Anes <[email protected]>
  Date:   2026-08-31 (Mon, 31 Aug 2026)

  Changed paths:
    M .circleci/epoch
    M .circleci/trivy-config/trivyignore
    M container/features/pom.xml
    M container/features/src/main/resources/features-core.xml
    M container/features/src/main/resources/features-experimental.xml
    M container/features/src/main/resources/features-sentinel.xml
    M container/features/src/main/resources/features.xml
    M container/features/src/main/resources/overrides.properties
    A container/karaf-features-core-patch/pom.xml
    A container/karaf-features-core-patch/src/main/java/org/apache/karaf/features/internal/download/impl/SimpleDownloadTask.java
    M container/karaf/pom.xml
    M container/karaf/src/main/filtered-resources/etc/org.ops4j.pax.logging.cfg
    M container/karaf/src/main/internal/features-processing.xml
    M container/pom.xml
    M container/shared/pom.xml
    M container/shared/src/main/filtered-resources/etc/overrides.properties
    M container/shared/src/main/filtered-resources/etc/startup.properties
    M container/shared/src/main/internal/features-processing.xml
    M container/shared/src/main/resources/etc/org.ops4j.pax.logging.cfg
    M core/db/pom.xml
    M core/web-assets/package.json
    M core/web-assets/pnpm-lock.yaml
    M core/web-assets/src/main/assets/js/apps/onms-classifications/views/modals/popover.html
    M core/web-assets/src/main/assets/style/opennms-theme.scss
    M dependencies/jackson2/pom.xml
    M dependencies/quartz/pom.xml
    M docs/modules/deployment/pages/repos/rhel-centos/horizon-rhel10.adoc
    M docs/modules/operation/pages/deep-dive/admin/configuration/startup.adoc
    M docs/modules/reference/pages/configuration/core-docker.adoc
    M docs/modules/reference/pages/performance-data-collection/collectors/xml.adoc
    M docs/modules/releasenotes/pages/whatsnew.adoc
    M features/bsm/rest/impl/pom.xml
    M features/container/sentinel/pom.xml
    M features/container/sentinel/src/main/internal/features-processing.xml
    M features/graph/provider/legacy/pom.xml
    M features/graph/provider/legacy/src/main/java/org/opennms/netmgt/graph/provider/legacy/LegacyEdge.java
    A features/graph/provider/legacy/src/test/java/org/opennms/netmgt/graph/provider/legacy/LegacyEdgeTest.java
    M features/minion/core/features/src/main/resources/features.xml
    M features/minion/repository/src/assembly/repo.xml
    M features/springframework-security/src/main/java/org/opennms/web/springframework/security/AuthorityPrincipal.java
    M features/springframework-security/src/main/java/org/opennms/web/springframework/security/LoginModuleUtils.java
    M features/springframework-security/src/main/java/org/opennms/web/springframework/security/OpenNMSAuthSuccessHandler.java
    M features/springframework-security/src/test/java/org/opennms/web/springframework/security/LoginModuleUtilsTest.java
    M features/status/rest/pom.xml
    A features/topology-map/org.opennms.features.topology.api/src/main/java/org/opennms/features/topology/api/topo/LinkDetailsAware.java
    M features/topology-map/plugins/org.opennms.features.topology.plugins.topo.linkd/src/main/java/org/opennms/features/topology/plugins/topo/linkd/internal/LinkdEdge.java
    M features/topology-map/plugins/org.opennms.features.topology.plugins.topo.linkd/src/test/java/org/opennms/features/topology/plugins/topo/linkd/internal/EnhancedLinkdTopologyProviderTest.java
    M integration-tests/config/pom.xml
    M opennms-base-assembly/src/main/filtered/bin/opennms
    M opennms-base-assembly/src/main/filtered/etc/opennms-activemq.xml
    M opennms-base-assembly/src/main/filtered/etc/search-actions.xml
    M opennms-config/src/main/java/org/opennms/netmgt/config/EventTranslatorConfigFactory.java
    M opennms-config/src/main/java/org/opennms/netmgt/config/GroupManager.java
    A opennms-config/src/test/java/org/opennms/netmgt/config/EventTranslatorCloneEventTest.java
    A opennms-config/src/test/java/org/opennms/netmgt/config/EventTranslatorConfigReloadTest.java
    A opennms-config/src/test/java/org/opennms/netmgt/config/EventTranslatorSqlValueTest.java
    A opennms-config/src/test/java/org/opennms/netmgt/config/GroupManagerRenameTest.java
    M opennms-container/common.mk
    M opennms-container/core/Dockerfile
    M opennms-container/core/container-fs/entrypoint.sh
    M opennms-container/minion/Dockerfile
    M opennms-container/sentinel/Dockerfile
    M opennms-full-assembly/pom.xml
    M opennms-full-assembly/src/assembly/components/osgi.xml
    M opennms-openapi-docs/pom.xml
    M opennms-services/src/main/java/org/opennms/netmgt/collectd/CollectableService.java
    M opennms-services/src/main/java/org/opennms/netmgt/poller/pollables/PendingPollEvent.java
    M opennms-services/src/test/java/org/opennms/netmgt/collectd/CollectableServiceTest.java
    M opennms-services/src/test/java/org/opennms/netmgt/collectd/CollectdIT.java
    M opennms-services/src/test/java/org/opennms/netmgt/collectd/ThresholdIT.java
    M opennms-services/src/test/java/org/opennms/netmgt/poller/PollerQueryManagerDaoIT.java
    A opennms-webapp-rest/127.0.0.1.tm4.epoch
    M opennms-webapp-rest/pom.xml
    A opennms-webapp-rest/src/main/java/org/opennms/web/rest/v2/DashboardRestService.java
    A opennms-webapp-rest/src/main/java/org/opennms/web/rest/v2/GroupsRestService.java
    M opennms-webapp-rest/src/main/java/org/opennms/web/rest/v2/SnmpConfigRestService.java
    A opennms-webapp-rest/src/main/java/org/opennms/web/rest/v2/SystemReportRestService.java
    A opennms-webapp-rest/src/main/java/org/opennms/web/rest/v2/api/DashboardRestApi.java
    A opennms-webapp-rest/src/main/java/org/opennms/web/rest/v2/api/GroupsRestApi.java
    A opennms-webapp-rest/src/main/java/org/opennms/web/rest/v2/model/GroupDto.java
    A opennms-webapp-rest/src/main/java/org/opennms/web/rest/v2/model/GroupRenameRequest.java
    M opennms-webapp-rest/src/main/webapp/WEB-INF/applicationContext-cxf-rest-v2.xml
    M opennms-webapp-rest/src/main/webapp/WEB-INF/menu/menu-template-default.json
    M opennms-webapp-rest/src/main/webapp/WEB-INF/menu/menu-template.json
    A opennms-webapp-rest/src/test/java/org/opennms/web/rest/v2/DashboardRestServiceIT.java
    A opennms-webapp-rest/src/test/java/org/opennms/web/rest/v2/GroupsRestServiceIT.java
    M opennms-webapp-rest/src/test/java/org/opennms/web/rest/v2/SnmpConfigRestServiceIT.java
    A opennms-webapp-rest/src/test/java/org/opennms/web/rest/v2/SystemReportRestServiceTest.java
    A opennms-webapp-rest/tmlog4.log
    M opennms-webapp/src/main/webapp/WEB-INF/applicationContext-spring-security.xml
    M opennms-webapp/src/main/webapp/WEB-INF/jsp/alarm/list.jsp
    M opennms-webapp/src/main/webapp/account/selfService/passwordGate.jsp
    M opennms-webapp/src/main/webapp/includes/bootstrap-footer.jsp
    M opennms-webapp/src/main/webapp/includes/bootstrap.jsp
    M opennms-webapp/src/main/webapp/includes/quicksearch-box.jsp
    M opennms-webapp/src/main/webapp/login.jsp
    A opennms-webapp/src/test/java/org/opennms/web/StaticAssetReferenceTest.java
    M pom.xml
    M protocols/xml/src/main/java/org/opennms/protocols/xml/collector/AbstractXmlCollectionHandler.java
    M protocols/xml/src/test/java/org/opennms/protocols/xml/collector/AbstractXmlCollectionHandlerTest.java
    M smoke-test/pom.xml
    M smoke-test/src/main/java/org/opennms/smoketest/containers/MockCloudContainer.java
    M smoke-test/src/main/resources/opennms-overlay/etc/opennms-activemq.xml
    M smoke-test/src/test/java/org/opennms/smoketest/AdminPageIT.java
    M smoke-test/src/test/java/org/opennms/smoketest/MenuHeaderIT.java
    M smoke-test/src/test/java/org/opennms/smoketest/WebappIT.java
    M ui/CLAUDE.md
    M ui/MENU_TEMPLATES.md
    M ui/THIRD-PARTY-LICENSE.md
    M ui/copilot-instructions.md
    M ui/package.json
    M ui/packages/onms-ui/README.md
    M ui/packages/onms-ui/package.json
    M ui/packages/onms-ui/src/components/OnmsAutoComplete.vue
    M ui/packages/onms-ui/src/components/OnmsDialog.vue
    M ui/packages/onms-ui/src/components/OnmsDrawer.vue
    M ui/packages/onms-ui/src/components/OnmsIcon.vue
    M ui/packages/onms-ui/src/components/OnmsIconButton.vue
    M ui/packages/onms-ui/src/components/OnmsSearchInput.vue
    M ui/packages/onms-ui/src/directives/OnmsTooltip.ts
    R ui/packages/onms-ui/src/icons/SearchGlyph.vue
    A ui/packages/onms-ui/src/icons/account/Group.vue
    A ui/packages/onms-ui/src/icons/action/AccountCircle.vue
    A ui/packages/onms-ui/src/icons/action/Add.vue
    A ui/packages/onms-ui/src/icons/action/AddCircleAlt.vue
    A ui/packages/onms-ui/src/icons/action/AddComment.vue
    A ui/packages/onms-ui/src/icons/action/AddNote.vue
    A ui/packages/onms-ui/src/icons/action/AddUser.vue
    A ui/packages/onms-ui/src/icons/action/Archive.vue
    A ui/packages/onms-ui/src/icons/action/AssignTo.vue
    A ui/packages/onms-ui/src/icons/action/AttachEmail.vue
    A ui/packages/onms-ui/src/icons/action/AttachFile.vue
    A ui/packages/onms-ui/src/icons/action/Build.vue
    A ui/packages/onms-ui/src/icons/action/Business.vue
    A ui/packages/onms-ui/src/icons/action/Calendar.vue
    A ui/packages/onms-ui/src/icons/action/CalendarEndDate.vue
    A ui/packages/onms-ui/src/icons/action/CalendarStartDate.vue
    A ui/packages/onms-ui/src/icons/action/Cancel.vue
    A ui/packages/onms-ui/src/icons/action/ChangeOwner.vue
    A ui/packages/onms-ui/src/icons/action/CheckCircle.vue
    A ui/packages/onms-ui/src/icons/action/Cloud.vue
    A ui/packages/onms-ui/src/icons/action/CloudDownload.vue
    A ui/packages/onms-ui/src/icons/action/CloudUpload.vue
    A ui/packages/onms-ui/src/icons/action/Code.vue
    A ui/packages/onms-ui/src/icons/action/Comment.vue
    A ui/packages/onms-ui/src/icons/action/ContactSupport.vue
    A ui/packages/onms-ui/src/icons/action/ContentCopy.vue
    A ui/packages/onms-ui/src/icons/action/ContentPaste.vue
    A ui/packages/onms-ui/src/icons/action/Cycle.vue
    A ui/packages/onms-ui/src/icons/action/Dashboard.vue
    A ui/packages/onms-ui/src/icons/action/DateRange.vue
    A ui/packages/onms-ui/src/icons/action/Delete.vue
    A ui/packages/onms-ui/src/icons/action/DownloadFile.vue
    A ui/packages/onms-ui/src/icons/action/Edit.vue
    A ui/packages/onms-ui/src/icons/action/EditMode.vue
    A ui/packages/onms-ui/src/icons/action/Email.vue
    A ui/packages/onms-ui/src/icons/action/EmailDraft.vue
    A ui/packages/onms-ui/src/icons/action/EmailInbox.vue
    A ui/packages/onms-ui/src/icons/action/EmailSecure.vue
    A ui/packages/onms-ui/src/icons/action/ExitToApp.vue
    A ui/packages/onms-ui/src/icons/action/Expand.vue
    A ui/packages/onms-ui/src/icons/action/Feedback.vue
    A ui/packages/onms-ui/src/icons/action/FeedbackAlt.vue
    A ui/packages/onms-ui/src/icons/action/FileCopy.vue
    A ui/packages/onms-ui/src/icons/action/FilterAlt.vue
    A ui/packages/onms-ui/src/icons/action/Group.vue
    A ui/packages/onms-ui/src/icons/action/Help.vue
    A ui/packages/onms-ui/src/icons/action/Hide.vue
    A ui/packages/onms-ui/src/icons/action/Home.vue
    A ui/packages/onms-ui/src/icons/action/Info.vue
    A ui/packages/onms-ui/src/icons/action/InformationExchange.vue
    A ui/packages/onms-ui/src/icons/action/LightDarkMode.vue
    A ui/packages/onms-ui/src/icons/action/Link.vue
    A ui/packages/onms-ui/src/icons/action/List.vue
    A ui/packages/onms-ui/src/icons/action/Location.vue
    A ui/packages/onms-ui/src/icons/action/LocationCity.vue
    A ui/packages/onms-ui/src/icons/action/Lock.vue
    A ui/packages/onms-ui/src/icons/action/LockPasswordProtected.vue
    A ui/packages/onms-ui/src/icons/action/LogIn.vue
    A ui/packages/onms-ui/src/icons/action/LogOut.vue
    A ui/packages/onms-ui/src/icons/action/LoggerConfigs.vue
    A ui/packages/onms-ui/src/icons/action/ManageProfile.vue
    A ui/packages/onms-ui/src/icons/action/MarkComplete.vue
    A ui/packages/onms-ui/src/icons/action/MarkIncomplete.vue
    A ui/packages/onms-ui/src/icons/action/MarkRead.vue
    A ui/packages/onms-ui/src/icons/action/MarkUnread.vue
    A ui/packages/onms-ui/src/icons/action/Notifications.vue
    A ui/packages/onms-ui/src/icons/action/Options.vue
    A ui/packages/onms-ui/src/icons/action/Person.vue
    A ui/packages/onms-ui/src/icons/action/Pin.vue
    A ui/packages/onms-ui/src/icons/action/PlayCircle.vue
    A ui/packages/onms-ui/src/icons/action/Print.vue
    A ui/packages/onms-ui/src/icons/action/Remove.vue
    A ui/packages/onms-ui/src/icons/action/RemoveUser.vue
    A ui/packages/onms-ui/src/icons/action/Reporting.vue
    A ui/packages/onms-ui/src/icons/action/Restore.vue
    A ui/packages/onms-ui/src/icons/action/Search.vue
    A ui/packages/onms-ui/src/icons/action/Send.vue
    A ui/packages/onms-ui/src/icons/action/SendWorkflow.vue
    A ui/packages/onms-ui/src/icons/action/Settings.vue
    A ui/packages/onms-ui/src/icons/action/Share.vue
    A ui/packages/onms-ui/src/icons/action/Sort.vue
    A ui/packages/onms-ui/src/icons/action/Subscriptions.vue
    A ui/packages/onms-ui/src/icons/action/SupportCenter.vue
    A ui/packages/onms-ui/src/icons/action/Unlock.vue
    A ui/packages/onms-ui/src/icons/action/UpdateSchedules.vue
    A ui/packages/onms-ui/src/icons/action/UpdateUtilities.vue
    A ui/packages/onms-ui/src/icons/action/UploadFile.vue
    A ui/packages/onms-ui/src/icons/action/VerifedUser.vue
    A ui/packages/onms-ui/src/icons/action/View.vue
    A ui/packages/onms-ui/src/icons/action/ViewDetails.vue
    A ui/packages/onms-ui/src/icons/action/Workflow.vue
    A ui/packages/onms-ui/src/icons/communication/Certificate.vue
    A ui/packages/onms-ui/src/icons/communication/CertificateAlt.vue
    A ui/packages/onms-ui/src/icons/communication/Chat.vue
    A ui/packages/onms-ui/src/icons/communication/Contacts.vue
    A ui/packages/onms-ui/src/icons/communication/Documentation.vue
    A ui/packages/onms-ui/src/icons/communication/IdCard.vue
    A ui/packages/onms-ui/src/icons/communication/Phone.vue
    A ui/packages/onms-ui/src/icons/content/BlogArticle.vue
    A ui/packages/onms-ui/src/icons/content/Video.vue
    A ui/packages/onms-ui/src/icons/datavis/AreaChart.vue
    A ui/packages/onms-ui/src/icons/datavis/BarChart.vue
    A ui/packages/onms-ui/src/icons/datavis/ColumnChart.vue
    A ui/packages/onms-ui/src/icons/datavis/DonutChart.vue
    A ui/packages/onms-ui/src/icons/datavis/Gauge.vue
    A ui/packages/onms-ui/src/icons/datavis/LineChart.vue
    A ui/packages/onms-ui/src/icons/datavis/PieChart.vue
    A ui/packages/onms-ui/src/icons/datavis/PolarChart.vue
    A ui/packages/onms-ui/src/icons/datavis/Reporting.vue
    A ui/packages/onms-ui/src/icons/datavis/StackedBarChart.vue
    A ui/packages/onms-ui/src/icons/datavis/StackedColumnChart.vue
    A ui/packages/onms-ui/src/icons/datavis/TreeDiagram.vue
    A ui/packages/onms-ui/src/icons/file/Attachment.vue
    A ui/packages/onms-ui/src/icons/file/Folder.vue
    A ui/packages/onms-ui/src/icons/file/FolderAdd.vue
    A ui/packages/onms-ui/src/icons/file/FolderLocked.vue
    A ui/packages/onms-ui/src/icons/file/FolderOpen.vue
    A ui/packages/onms-ui/src/icons/file/Generic.vue
    A ui/packages/onms-ui/src/icons/file/Image.vue
    A ui/packages/onms-ui/src/icons/file/Pdf.vue
    A ui/packages/onms-ui/src/icons/file/Text.vue
    A ui/packages/onms-ui/src/icons/file/WordDoc.vue
    A ui/packages/onms-ui/src/icons/file/Xls.vue
    A ui/packages/onms-ui/src/icons/file/Zip.vue
    A ui/packages/onms-ui/src/icons/hardware/ApplianceProfiles.vue
    A ui/packages/onms-ui/src/icons/hardware/Appliances.vue
    A ui/packages/onms-ui/src/icons/hardware/AppliancesAlt.vue
    A ui/packages/onms-ui/src/icons/hardware/DesktopWindows.vue
    A ui/packages/onms-ui/src/icons/hardware/Instances.vue
    A ui/packages/onms-ui/src/icons/hardware/KeyboardArrowDown.vue
    A ui/packages/onms-ui/src/icons/hardware/KeyboardArrowUp.vue
    A ui/packages/onms-ui/src/icons/hardware/Laptop.vue
    A ui/packages/onms-ui/src/icons/hardware/MinionProfiles.vue
    A ui/packages/onms-ui/src/icons/hardware/Network.vue
    A ui/packages/onms-ui/src/icons/hardware/NetworkProfiles.vue
    A ui/packages/onms-ui/src/icons/hardware/Router.vue
    A ui/packages/onms-ui/src/icons/hardware/Security.vue
    A ui/packages/onms-ui/src/icons/hardware/Server.vue
    A ui/packages/onms-ui/src/icons/hardware/VirtualMachine.vue
    A ui/packages/onms-ui/src/icons/hardware/VirtualMachineAlt.vue
    A ui/packages/onms-ui/src/icons/medical/Ambulance.vue
    A ui/packages/onms-ui/src/icons/medical/CostSavings.vue
    A ui/packages/onms-ui/src/icons/medical/Drug.vue
    A ui/packages/onms-ui/src/icons/medical/DrugGroupId.vue
    A ui/packages/onms-ui/src/icons/medical/Hospital.vue
    A ui/packages/onms-ui/src/icons/medical/Patient.vue
    A ui/packages/onms-ui/src/icons/medical/Payor.vue
    A ui/packages/onms-ui/src/icons/medical/Provider.vue
    A ui/packages/onms-ui/src/icons/medical/ProviderOffice.vue
    A ui/packages/onms-ui/src/icons/medical/Treatment.vue
    A ui/packages/onms-ui/src/icons/medical/TreatmentCycle.vue
    A ui/packages/onms-ui/src/icons/medical/TreatmentSchedule.vue
    A ui/packages/onms-ui/src/icons/medical/Vitals.vue
    A ui/packages/onms-ui/src/icons/navigation/Apps.vue
    A ui/packages/onms-ui/src/icons/navigation/AppsGetMore.vue
    A ui/packages/onms-ui/src/icons/navigation/ArrowBack.vue
    A ui/packages/onms-ui/src/icons/navigation/ArrowDropDown.vue
    A ui/packages/onms-ui/src/icons/navigation/Cancel.vue
    A ui/packages/onms-ui/src/icons/navigation/ChevronLeft.vue
    A ui/packages/onms-ui/src/icons/navigation/ChevronRight.vue
    A ui/packages/onms-ui/src/icons/navigation/ExpandLess.vue
    A ui/packages/onms-ui/src/icons/navigation/ExpandMore.vue
    A ui/packages/onms-ui/src/icons/navigation/FirstPage.vue
    A ui/packages/onms-ui/src/icons/navigation/Fullscreen.vue
    A ui/packages/onms-ui/src/icons/navigation/FullscreenExit.vue
    A ui/packages/onms-ui/src/icons/navigation/GridView.vue
    A ui/packages/onms-ui/src/icons/navigation/LastPage.vue
    A ui/packages/onms-ui/src/icons/navigation/Menu.vue
    A ui/packages/onms-ui/src/icons/navigation/MenuClose.vue
    A ui/packages/onms-ui/src/icons/navigation/MenuOpen.vue
    A ui/packages/onms-ui/src/icons/navigation/MoreHoriz.vue
    A ui/packages/onms-ui/src/icons/navigation/MoreVert.vue
    A ui/packages/onms-ui/src/icons/navigation/Refresh.vue
    A ui/packages/onms-ui/src/icons/navigation/SubdirectoryArrowLeft.vue
    A ui/packages/onms-ui/src/icons/navigation/SubdirectoryArrowRight.vue
    A ui/packages/onms-ui/src/icons/navigation/UnfoldLess.vue
    A ui/packages/onms-ui/src/icons/navigation/UnfoldMore.vue
    A ui/packages/onms-ui/src/icons/network/AggregationLayer.vue
    A ui/packages/onms-ui/src/icons/network/AggregationLayerAlt1.vue
    A ui/packages/onms-ui/src/icons/network/AggregationLayerAlt2.vue
    A ui/packages/onms-ui/src/icons/network/AggregationLayerAlt3.vue
    A ui/packages/onms-ui/src/icons/network/AggregationLayerAlt4.vue
    A ui/packages/onms-ui/src/icons/network/AggregationLayerAlt5.vue
    A ui/packages/onms-ui/src/icons/network/ApiConfig.vue
    A ui/packages/onms-ui/src/icons/network/ApiEndpoints.vue
    A ui/packages/onms-ui/src/icons/network/ApplianceProfiles.vue
    A ui/packages/onms-ui/src/icons/network/Appliances.vue
    A ui/packages/onms-ui/src/icons/network/AppliancesAlt.vue
    A ui/packages/onms-ui/src/icons/network/Build.vue
    A ui/packages/onms-ui/src/icons/network/CertificateAlt.vue
    A ui/packages/onms-ui/src/icons/network/Cloud.vue
    A ui/packages/onms-ui/src/icons/network/CloudBackUp.vue
    A ui/packages/onms-ui/src/icons/network/CloudDownload.vue
    A ui/packages/onms-ui/src/icons/network/CloudService.vue
    A ui/packages/onms-ui/src/icons/network/CloudUpload.vue
    A ui/packages/onms-ui/src/icons/network/Code.vue
    A ui/packages/onms-ui/src/icons/network/Compare.vue
    A ui/packages/onms-ui/src/icons/network/Compare1.vue
    A ui/packages/onms-ui/src/icons/network/Compliance.vue
    A ui/packages/onms-ui/src/icons/network/Configuration.vue
    A ui/packages/onms-ui/src/icons/network/Connection.vue
    A ui/packages/onms-ui/src/icons/network/ContainerAdd.vue
    A ui/packages/onms-ui/src/icons/network/ContainerTransient.vue
    A ui/packages/onms-ui/src/icons/network/ContainerUnknown.vue
    A ui/packages/onms-ui/src/icons/network/Database.vue
    A ui/packages/onms-ui/src/icons/network/Desktop.vue
    A ui/packages/onms-ui/src/icons/network/Digitize.vue
    A ui/packages/onms-ui/src/icons/network/DistributedMonitoring.vue
    A ui/packages/onms-ui/src/icons/network/ElectricalServices.vue
    A ui/packages/onms-ui/src/icons/network/EndUser.vue
    A ui/packages/onms-ui/src/icons/network/ExitCompare.vue
    A ui/packages/onms-ui/src/icons/network/ExitCompareModeAlt.vue
    A ui/packages/onms-ui/src/icons/network/ExtractData.vue
    A ui/packages/onms-ui/src/icons/network/Firewall.vue
    A ui/packages/onms-ui/src/icons/network/Instances.vue
    A ui/packages/onms-ui/src/icons/network/Inventory.vue
    A ui/packages/onms-ui/src/icons/network/InventoryAdd.vue
    A ui/packages/onms-ui/src/icons/network/InventoryAlt.vue
    A ui/packages/onms-ui/src/icons/network/InventoryConfirm.vue
    A ui/packages/onms-ui/src/icons/network/InventoryDelete.vue
    A ui/packages/onms-ui/src/icons/network/Laptop.vue
    A ui/packages/onms-ui/src/icons/network/LogFile.vue
    A ui/packages/onms-ui/src/icons/network/LoggerConfigs.vue
    A ui/packages/onms-ui/src/icons/network/Logs.vue
    A ui/packages/onms-ui/src/icons/network/LogsAlt.vue
    A ui/packages/onms-ui/src/icons/network/Microservices.vue
    A ui/packages/onms-ui/src/icons/network/Minion.vue
    A ui/packages/onms-ui/src/icons/network/MinionProfiles.vue
    A ui/packages/onms-ui/src/icons/network/Monitoring.vue
    A ui/packages/onms-ui/src/icons/network/NetworkProfiles.vue
    A ui/packages/onms-ui/src/icons/network/Nodes.vue
    A ui/packages/onms-ui/src/icons/network/Policy.vue
    A ui/packages/onms-ui/src/icons/network/Power.vue
    A ui/packages/onms-ui/src/icons/network/RouterLan.vue
    A ui/packages/onms-ui/src/icons/network/RouterWan.vue
    A ui/packages/onms-ui/src/icons/network/Security.vue
    A ui/packages/onms-ui/src/icons/network/SecurityScan.vue
    A ui/packages/onms-ui/src/icons/network/Server.vue
    A ui/packages/onms-ui/src/icons/network/ServerClock.vue
    A ui/packages/onms-ui/src/icons/network/Switch.vue
    A ui/packages/onms-ui/src/icons/network/Terminal.vue
    A ui/packages/onms-ui/src/icons/network/UpdateUtilities.vue
    A ui/packages/onms-ui/src/icons/network/Utilities.vue
    A ui/packages/onms-ui/src/icons/network/ViewCode.vue
    A ui/packages/onms-ui/src/icons/network/VirtualMachine.vue
    A ui/packages/onms-ui/src/icons/network/VirtualMachineAlt.vue
    A ui/packages/onms-ui/src/icons/network/VirtualMachineAlt2.vue
    A ui/packages/onms-ui/src/icons/network/WifiRouter.vue
    A ui/packages/onms-ui/src/icons/notification/Connected.vue
    A ui/packages/onms-ui/src/icons/notification/Error.vue
    A ui/packages/onms-ui/src/icons/notification/NotificationSelected.vue
    A ui/packages/onms-ui/src/icons/notification/NotificationSoundSelected.vue
    A ui/packages/onms-ui/src/icons/notification/NotificationsOff.vue
    A ui/packages/onms-ui/src/icons/notification/Unconnected.vue
    A ui/packages/onms-ui/src/icons/notification/Warning.vue
    A ui/packages/onms-ui/src/icons/notification/Wifi.vue
    A ui/packages/onms-ui/src/icons/notification/WifiNoConnection.vue
    A ui/packages/onms-ui/src/icons/notification/WifiOff.vue
    A ui/packages/onms-ui/src/icons/notification/WifiSignalBad.vue
    A ui/packages/onms-ui/src/icons/notification/WifiStatusBar.vue
    A ui/packages/onms-ui/src/icons/status/Available.vue
    A ui/packages/onms-ui/src/icons/status/Unavailable.vue
    M ui/pnpm-lock.yaml
    M ui/scripts/generate-icons.mjs
    M ui/src/components/AdhocGraphs/AdhocChartToolbar.vue
    M ui/src/components/AdhocGraphs/AdhocGraphBuilder.vue
    M ui/src/components/AdhocGraphs/ExpressionEditor.vue
    M ui/src/components/AdhocGraphs/SeriesTable.vue
    A ui/src/components/Common/AboutDialogButton.vue
    M ui/src/components/Common/FormField.vue
    M ui/src/components/Configuration/ConfigurationAdvancedPanel.vue
    M ui/src/components/Configuration/ConfigurationCopyPasteDisplay.vue
    M ui/src/components/Configuration/ConfigurationDrawer.vue
    M ui/src/components/Configuration/ConfigurationHelpPanel.vue
    M ui/src/components/Configuration/ConfigurationTable.vue
    M ui/src/components/Configuration/ProvisionDForm.vue
    A ui/src/components/Dashboard/DashboardFilterControl.vue
    A ui/src/components/Dashboard/DashboardGrid.vue
    A ui/src/components/Dashboard/DashboardToolbar.vue
    A ui/src/components/Dashboard/PanelFrame.vue
    A ui/src/components/Dashboard/PanelOptionsDialog.vue
    A ui/src/components/Dashboard/defaultLayout.ts
    A ui/src/components/Dashboard/filter.ts
    A ui/src/components/Dashboard/panels/HtmlContentPanel.vue
    A ui/src/components/Dashboard/panels/NotesPanel.vue
    A ui/src/components/Dashboard/panels/SamplePanel.vue
    A ui/src/components/Dashboard/registry.ts
    A ui/src/components/Dashboard/severity.ts
    A ui/src/components/Dashboard/timeframe.ts
    M ui/src/components/Device/DCBGroupFilters.vue
    M ui/src/components/Device/DCBModalConfigDiffContent.vue
    M ui/src/components/Device/DCBModalViewHistoryContent.vue
    M ui/src/components/Device/DCBSearch.vue
    M ui/src/components/Device/DCBTable.vue
    M ui/src/components/Device/DCBTableStatusDropdown.vue
    M ui/src/components/EventConfigEventCreate/BasicInformation.vue
    M ui/src/components/EventConfigEventCreate/MaskElements.vue
    M ui/src/components/EventConfigEventCreate/MaskVarbinds.vue
    M ui/src/components/EventConfigEventCreate/VarbindsDecode.vue
    M ui/src/components/EventConfiguration/EventConfigSourceTable.vue
    M ui/src/components/EventConfiguration/EventConfigUploadFilesTab.vue
    M ui/src/components/EventConfigurationDetail/EventConfigEventTable.vue
    M ui/src/components/FileEditor/Console.vue
    M ui/src/components/FileEditor/FileSidebar.vue
    M ui/src/components/FileEditor/FileTreeItem.vue
    M ui/src/components/FileEditor/Help.vue
    M ui/src/components/FileEditor/Search.vue
    M ui/src/components/FileEditor/TopBar.vue
    M ui/src/components/Layout/Footer.vue
    M ui/src/components/Logs/Editor.vue
    M ui/src/components/Logs/Logs.vue
    A ui/src/components/ManageGroups/GroupEditorDialog.vue
    A ui/src/components/ManageGroups/GroupRenameDialog.vue
    A ui/src/components/ManageGroups/GroupsAbout.vue
    A ui/src/components/ManageGroups/GroupsTable.vue
    M ui/src/components/Map/MapSearch.vue
    M ui/src/components/Map/MarkerClusterPopupContent.vue
    M ui/src/components/Map/MarkerPopup.vue
    M ui/src/components/Menu/Menubar.vue
    M ui/src/components/Menu/Search.vue
    M ui/src/components/Menu/SearchResult.vue
    M ui/src/components/Menu/SideMenu.vue
    M ui/src/components/Menu/UserNotificationsMenuItem.vue
    M ui/src/components/Menu/UserSelfServiceMenuItem.vue
    M ui/src/components/Menu/useMenuIcons.ts
    M ui/src/components/Menu/utils.ts
    M ui/src/components/Nodes/AssetFilterPanel.vue
    M ui/src/components/Nodes/ColumnSelectionDrawer.vue
    M ui/src/components/Nodes/ExtendedSearchPanel.vue
    M ui/src/components/Nodes/FlowTooltipCell.vue
    M ui/src/components/Nodes/NodeActionsDropdown.vue
    M ui/src/components/Nodes/NodeAdvancedFiltersDrawer.vue
    M ui/src/components/Nodes/NodeDownloadDropdown.vue
    M ui/src/components/Nodes/NodesTable.vue
    M ui/src/components/Resources/Graph.vue
    M ui/src/components/Resources/Graphs.vue
    M ui/src/components/Resources/TimeControls.vue
    M ui/src/components/SCV/SCVAttribute.vue
    M ui/src/components/SCV/SCVForm.vue
    M ui/src/components/SCV/ScvInputIcon.vue
    M ui/src/components/SCV/ScvSearchDrawer.vue
    M ui/src/components/SnmpConfiguration/SnmpConfigDefaultsPanel.vue
    M ui/src/components/SnmpConfiguration/SnmpConfigDefinitionBasicInformation.vue
    M ui/src/components/SnmpConfiguration/SnmpConfigDefinitionsTab.vue
    M ui/src/components/SnmpConfiguration/SnmpConfigDefinitionsTable.vue
    M ui/src/components/SnmpConfiguration/SnmpConfigDetailsPanel.vue
    M ui/src/components/SnmpConfiguration/SnmpConfigLookupPanel.vue
    M ui/src/components/SnmpConfiguration/SnmpConfigProfileBasicInformation.vue
    M ui/src/components/SnmpConfiguration/SnmpConfigProfilesTab.vue
    M ui/src/components/SnmpConfiguration/SnmpConfigProfilesTable.vue
    M ui/src/components/SnmpConfiguration/SnmpConfigUploadDownloadTab.vue
    M ui/src/components/SnmpDataCollection/SnmpDataCollectionProfile/ProfileRrdSettingsTab.vue
    M ui/src/components/SnmpDataCollection/SnmpDataCollectionProfile/ProfileSourcesTab.vue
    M ui/src/components/SnmpDataCollection/SnmpDataCollectionProfile/SnmpDataCollectionProfileDetails.vue
    M ui/src/components/SnmpDataCollection/SnmpDataCollectionProfilesTable.vue
    M ui/src/components/SnmpDataCollection/SnmpDataCollectionSourceDetail/Drawer/MibGroupCreationDrawer.vue
    M ui/src/components/SnmpDataCollection/SnmpDataCollectionSourceDetail/Drawer/ResourceTypeCreationDrawer.vue
    M ui/src/components/SnmpDataCollection/SnmpDataCollectionSourceDetail/MibGroupsTable.vue
    M ui/src/components/SnmpDataCollection/SnmpDataCollectionSourceDetail/ResourceTypesTable.vue
    M ui/src/components/SnmpDataCollection/SnmpDataCollectionSourceDetail/SystemDefinitionsTable.vue
    M ui/src/components/SnmpDataCollection/SnmpDataCollectionSourceImport.vue
    M ui/src/components/SnmpDataCollection/SnmpDataCollectionSourcesTable.vue
    M ui/src/components/TrapdConfiguration/CreateSnmpV3User.vue
    M ui/src/components/TrapdConfiguration/GeneralConfiguration.vue
    M ui/src/components/TrapdConfiguration/SnmpV3UserManagement.vue
    M ui/src/components/TrapdConfiguration/TrapdAdvancedConfiguration.vue
    M ui/src/components/UsageStatistics/UsageStatisticsHeader.vue
    M ui/src/components/ZenithConnect/ZenithConnectRegisterResult.vue
    M ui/src/components/ZenithConnect/ZenithConnectView.vue
    R ui/src/components/icons/account/Group.vue
    R ui/src/components/icons/action/AccountCircle.vue
    R ui/src/components/icons/action/Add.vue
    R ui/src/components/icons/action/AddCircleAlt.vue
    R ui/src/components/icons/action/AddComment.vue
    R ui/src/components/icons/action/AddNote.vue
    R ui/src/components/icons/action/AddUser.vue
    R ui/src/components/icons/action/Archive.vue
    R ui/src/components/icons/action/AssignTo.vue
    R ui/src/components/icons/action/AttachEmail.vue
    R ui/src/components/icons/action/AttachFile.vue
    R ui/src/components/icons/action/Build.vue
    R ui/src/components/icons/action/Business.vue
    R ui/src/components/icons/action/Calendar.vue
    R ui/src/components/icons/action/CalendarEndDate.vue
    R ui/src/components/icons/action/CalendarStartDate.vue
    R ui/src/components/icons/action/Cancel.vue
    R ui/src/components/icons/action/ChangeOwner.vue
    R ui/src/components/icons/action/CheckCircle.vue
    R ui/src/components/icons/action/Cloud.vue
    R ui/src/components/icons/action/CloudDownload.vue
    R ui/src/components/icons/action/CloudUpload.vue
    R ui/src/components/icons/action/Code.vue
    R ui/src/components/icons/action/Comment.vue
    R ui/src/components/icons/action/ContactSupport.vue
    R ui/src/components/icons/action/ContentCopy.vue
    R ui/src/components/icons/action/ContentPaste.vue
    R ui/src/components/icons/action/Cycle.vue
    R ui/src/components/icons/action/Dashboard.vue
    R ui/src/components/icons/action/DateRange.vue
    R ui/src/components/icons/action/Delete.vue
    R ui/src/components/icons/action/DownloadFile.vue
    R ui/src/components/icons/action/Edit.vue
    R ui/src/components/icons/action/EditMode.vue
    R ui/src/components/icons/action/Email.vue
    R ui/src/components/icons/action/EmailDraft.vue
    R ui/src/components/icons/action/EmailInbox.vue
    R ui/src/components/icons/action/EmailSecure.vue
    R ui/src/components/icons/action/ExitToApp.vue
    R ui/src/components/icons/action/Expand.vue
    R ui/src/components/icons/action/Feedback.vue
    R ui/src/components/icons/action/FeedbackAlt.vue
    R ui/src/components/icons/action/FileCopy.vue
    R ui/src/components/icons/action/FilterAlt.vue
    R ui/src/components/icons/action/Group.vue
    R ui/src/components/icons/action/Help.vue
    R ui/src/components/icons/action/Hide.vue
    R ui/src/components/icons/action/Home.vue
    R ui/src/components/icons/action/Info.vue
    R ui/src/components/icons/action/InformationExchange.vue
    R ui/src/components/icons/action/LightDarkMode.vue
    R ui/src/components/icons/action/Link.vue
    R ui/src/components/icons/action/List.vue
    R ui/src/components/icons/action/Location.vue
    R ui/src/components/icons/action/LocationCity.vue
    R ui/src/components/icons/action/Lock.vue
    R ui/src/components/icons/action/LockPasswordProtected.vue
    R ui/src/components/icons/action/LogIn.vue
    R ui/src/components/icons/action/LogOut.vue
    R ui/src/components/icons/action/LoggerConfigs.vue
    R ui/src/components/icons/action/ManageProfile.vue
    R ui/src/components/icons/action/MarkComplete.vue
    R ui/src/components/icons/action/MarkIncomplete.vue
    R ui/src/components/icons/action/MarkRead.vue
    R ui/src/components/icons/action/MarkUnread.vue
    R ui/src/components/icons/action/Notifications.vue
    R ui/src/components/icons/action/Options.vue
    R ui/src/components/icons/action/Person.vue
    R ui/src/components/icons/action/Pin.vue
    R ui/src/components/icons/action/PlayCircle.vue
    R ui/src/components/icons/action/Print.vue
    R ui/src/components/icons/action/Remove.vue
    R ui/src/components/icons/action/RemoveUser.vue
    R ui/src/components/icons/action/Reporting.vue
    R ui/src/components/icons/action/Restore.vue
    R ui/src/components/icons/action/Search.vue
    R ui/src/components/icons/action/Send.vue
    R ui/src/components/icons/action/SendWorkflow.vue
    R ui/src/components/icons/action/Settings.vue
    R ui/src/components/icons/action/Share.vue
    R ui/src/components/icons/action/Sort.vue
    R ui/src/components/icons/action/Subscriptions.vue
    R ui/src/components/icons/action/SupportCenter.vue
    R ui/src/components/icons/action/Unlock.vue
    R ui/src/components/icons/action/UpdateSchedules.vue
    R ui/src/components/icons/action/UpdateUtilities.vue
    R ui/src/components/icons/action/UploadFile.vue
    R ui/src/components/icons/action/VerifedUser.vue
    R ui/src/components/icons/action/View.vue
    R ui/src/components/icons/action/ViewDetails.vue
    R ui/src/components/icons/action/Workflow.vue
    R ui/src/components/icons/communication/Certificate.vue
    R ui/src/components/icons/communication/CertificateAlt.vue
    R ui/src/components/icons/communication/Chat.vue
    R ui/src/components/icons/communication/Contacts.vue
    R ui/src/components/icons/communication/Documentation.vue
    R ui/src/components/icons/communication/IdCard.vue
    R ui/src/components/icons/communication/Phone.vue
    R ui/src/components/icons/content/BlogArticle.vue
    R ui/src/components/icons/content/Video.vue
    R ui/src/components/icons/datavis/AreaChart.vue
    R ui/src/components/icons/datavis/BarChart.vue
    R ui/src/components/icons/datavis/ColumnChart.vue
    R ui/src/components/icons/datavis/DonutChart.vue
    R ui/src/components/icons/datavis/Gauge.vue
    R ui/src/components/icons/datavis/LineChart.vue
    R ui/src/components/icons/datavis/PieChart.vue
    R ui/src/components/icons/datavis/PolarChart.vue
    R ui/src/components/icons/datavis/Reporting.vue
    R ui/src/components/icons/datavis/StackedBarChart.vue
    R ui/src/components/icons/datavis/StackedColumnChart.vue
    R ui/src/components/icons/datavis/TreeDiagram.vue
    R ui/src/components/icons/file/Attachment.vue
    R ui/src/components/icons/file/Folder.vue
    R ui/src/components/icons/file/FolderAdd.vue
    R ui/src/components/icons/file/FolderLocked.vue
    R ui/src/components/icons/file/FolderOpen.vue
    R ui/src/components/icons/file/Generic.vue
    R ui/src/components/icons/file/Image.vue
    R ui/src/components/icons/file/Pdf.vue
    R ui/src/components/icons/file/Text.vue
    R ui/src/components/icons/file/WordDoc.vue
    R ui/src/components/icons/file/Xls.vue
    R ui/src/components/icons/file/Zip.vue
    R ui/src/components/icons/hardware/ApplianceProfiles.vue
    R ui/src/components/icons/hardware/Appliances.vue
    R ui/src/components/icons/hardware/AppliancesAlt.vue
    R ui/src/components/icons/hardware/DesktopWindows.vue
    R ui/src/components/icons/hardware/Instances.vue
    R ui/src/components/icons/hardware/KeyboardArrowDown.vue
    R ui/src/components/icons/hardware/KeyboardArrowUp.vue
    R ui/src/components/icons/hardware/Laptop.vue
    R ui/src/components/icons/hardware/MinionProfiles.vue
    R ui/src/components/icons/hardware/Network.vue
    R ui/src/components/icons/hardware/NetworkProfiles.vue
    R ui/src/components/icons/hardware/Router.vue
    R ui/src/components/icons/hardware/Security.vue
    R ui/src/components/icons/hardware/Server.vue
    R ui/src/components/icons/hardware/VirtualMachine.vue
    R ui/src/components/icons/hardware/VirtualMachineAlt.vue
    R ui/src/components/icons/medical/Ambulance.vue
    R ui/src/components/icons/medical/CostSavings.vue
    R ui/src/components/icons/medical/Drug.vue
    R ui/src/components/icons/medical/DrugGroupId.vue
    R ui/src/components/icons/medical/Hospital.vue
    R ui/src/components/icons/medical/Patient.vue
    R ui/src/components/icons/medical/Payor.vue
    R ui/src/components/icons/medical/Provider.vue
    R ui/src/components/icons/medical/ProviderOffice.vue
    R ui/src/components/icons/medical/Treatment.vue
    R ui/src/components/icons/medical/TreatmentCycle.vue
    R ui/src/components/icons/medical/TreatmentSchedule.vue
    R ui/src/components/icons/medical/Vitals.vue
    R ui/src/components/icons/navigation/Apps.vue
    R ui/src/components/icons/navigation/AppsGetMore.vue
    R ui/src/components/icons/navigation/ArrowBack.vue
    R ui/src/components/icons/navigation/ArrowDropDown.vue
    R ui/src/components/icons/navigation/Cancel.vue
    R ui/src/components/icons/navigation/ChevronLeft.vue
    R ui/src/components/icons/navigation/ChevronRight.vue
    R ui/src/components/icons/navigation/ExpandLess.vue
    R ui/src/components/icons/navigation/ExpandMore.vue
    R ui/src/components/icons/navigation/FirstPage.vue
    R ui/src/components/icons/navigation/Fullscreen.vue
    R ui/src/components/icons/navigation/FullscreenExit.vue
    R ui/src/components/icons/navigation/GridView.vue
    R ui/src/components/icons/navigation/LastPage.vue
    R ui/src/components/icons/navigation/Menu.vue
    R ui/src/components/icons/navigation/MenuClose.vue
    R ui/src/components/icons/navigation/MenuOpen.vue
    R ui/src/components/icons/navigation/MoreHoriz.vue
    R ui/src/components/icons/navigation/MoreVert.vue
    R ui/src/components/icons/navigation/Refresh.vue
    R ui/src/components/icons/navigation/SubdirectoryArrowLeft.vue
    R ui/src/components/icons/navigation/SubdirectoryArrowRight.vue
    R ui/src/components/icons/navigation/UnfoldLess.vue
    R ui/src/components/icons/navigation/UnfoldMore.vue
    R ui/src/components/icons/network/AggregationLayer.vue
    R ui/src/components/icons/network/AggregationLayerAlt1.vue
    R ui/src/components/icons/network/AggregationLayerAlt2.vue
    R ui/src/components/icons/network/AggregationLayerAlt3.vue
    R ui/src/components/icons/network/AggregationLayerAlt4.vue
    R ui/src/components/icons/network/AggregationLayerAlt5.vue
    R ui/src/components/icons/network/ApiConfig.vue
    R ui/src/components/icons/network/ApiEndpoints.vue
    R ui/src/components/icons/network/ApplianceProfiles.vue
    R ui/src/components/icons/network/Appliances.vue
    R ui/src/components/icons/network/AppliancesAlt.vue
    R ui/src/components/icons/network/Build.vue
    R ui/src/components/icons/network/CertificateAlt.vue
    R ui/src/components/icons/network/Cloud.vue
    R ui/src/components/icons/network/CloudBackUp.vue
    R ui/src/components/icons/network/CloudDownload.vue
    R ui/src/components/icons/network/CloudService.vue
    R ui/src/components/icons/network/CloudUpload.vue
    R ui/src/components/icons/network/Code.vue
    R ui/src/components/icons/network/Compare.vue
    R ui/src/components/icons/network/Compare1.vue
    R ui/src/components/icons/network/Compliance.vue
    R ui/src/components/icons/network/Configuration.vue
    R ui/src/components/icons/network/Connection.vue
    R ui/src/components/icons/network/ContainerAdd.vue
    R ui/src/components/icons/network/ContainerTransient.vue
    R ui/src/components/icons/network/ContainerUnknown.vue
    R ui/src/components/icons/network/Database.vue
    R ui/src/components/icons/network/Desktop.vue
    R ui/src/components/icons/network/Digitize.vue
    R ui/src/components/icons/network/DistributedMonitoring.vue
    R ui/src/components/icons/network/ElectricalServices.vue
    R ui/src/components/icons/network/EndUser.vue
    R ui/src/components/icons/network/ExitCompare.vue
    R ui/src/components/icons/network/ExitCompareModeAlt.vue
    R ui/src/components/icons/network/ExtractData.vue
    R ui/src/components/icons/network/Firewall.vue
    R ui/src/components/icons/network/Instances.vue
    R ui/src/components/icons/network/Inventory.vue
    R ui/src/components/icons/network/InventoryAdd.vue
    R ui/src/components/icons/network/InventoryAlt.vue
    R ui/src/components/icons/network/InventoryConfirm.vue
    R ui/src/components/icons/network/InventoryDelete.vue
    R ui/src/components/icons/network/Laptop.vue
    R ui/src/components/icons/network/LogFile.vue
    R ui/src/components/icons/network/LoggerConfigs.vue
    R ui/src/components/icons/network/Logs.vue
    R ui/src/components/icons/network/LogsAlt.vue
    R ui/src/components/icons/network/Microservices.vue
    R ui/src/components/icons/network/Minion.vue
    R ui/src/components/icons/network/MinionProfiles.vue
    R ui/src/components/icons/network/Monitoring.vue
    R ui/src/components/icons/network/NetworkProfiles.vue
    R ui/src/components/icons/network/Nodes.vue
    R ui/src/components/icons/network/Policy.vue
    R ui/src/components/icons/network/Power.vue
    R ui/src/components/icons/network/RouterLan.vue
    R ui/src/components/icons/network/RouterWan.vue
    R ui/src/components/icons/network/Security.vue
    R ui/src/components/icons/network/SecurityScan.vue
    R ui/src/components/icons/network/Server.vue
    R ui/src/components/icons/network/ServerClock.vue
    R ui/src/components/icons/network/Switch.vue
    R ui/src/components/icons/network/Terminal.vue
    R ui/src/components/icons/network/UpdateUtilities.vue
    R ui/src/components/icons/network/Utilities.vue
    R ui/src/components/icons/network/ViewCode.vue
    R ui/src/components/icons/network/VirtualMachine.vue
    R ui/src/components/icons/network/VirtualMachineAlt.vue
    R ui/src/components/icons/network/VirtualMachineAlt2.vue
    R ui/src/components/icons/network/WifiRouter.vue
    R ui/src/components/icons/notification/Connected.vue
    R ui/src/components/icons/notification/Error.vue
    R ui/src/components/icons/notification/NotificationSelected.vue
    R ui/src/components/icons/notification/NotificationSoundSelected.vue
    R ui/src/components/icons/notification/NotificationsOff.vue
    R ui/src/components/icons/notification/Unconnected.vue
    R ui/src/components/icons/notification/Warning.vue
    R ui/src/components/icons/notification/Wifi.vue
    R ui/src/components/icons/notification/WifiNoConnection.vue
    R ui/src/components/icons/notification/WifiOff.vue
    R ui/src/components/icons/notification/WifiSignalBad.vue
    R ui/src/components/icons/notification/WifiStatusBar.vue
    R ui/src/components/icons/status/Available.vue
    R ui/src/components/icons/status/Unavailable.vue
    A ui/src/composables/useDashboardRefresh.ts
    A ui/src/containers/Dashboard.vue
    M ui/src/containers/EventConfigurationDetail.vue
    A ui/src/containers/ManageGroups.vue
    M ui/src/containers/Map.vue
    M ui/src/containers/SnmpDataCollection.vue
    M ui/src/containers/SnmpDataCollectionSourceDetail.vue
    A ui/src/containers/SystemReport.vue
    A ui/src/lib/adminValidation.ts
    M ui/src/main/App.vue
    M ui/src/main/router/index.ts
    A ui/src/services/dashboardService.ts
    A ui/src/services/groupAdminService.ts
    M ui/src/services/index.ts
    A ui/src/services/systemReportService.ts
    A ui/src/stores/dashboardStore.ts
    A ui/src/stores/groupAdminStore.ts
    M ui/src/styles/onms-base.scss
    M ui/src/styles/opennms-styles.scss
    A ui/src/types/dashboard.ts
    A ui/src/types/groupAdmin.ts
    A ui/src/types/systemReport.ts
    M ui/tests/components/AdhocGraphs/AdhocGraphBuilder.test.ts
    A ui/tests/components/AdminDialogs/GroupEditorDialog.test.ts
    M ui/tests/components/Common/FormField.test.ts
    A ui/tests/components/Dashboard/HtmlContentPanel.test.ts
    A ui/tests/components/Dashboard/filter.test.ts
    A ui/tests/components/Dashboard/registry.test.ts
    A ui/tests/components/Dashboard/severity.test.ts
    A ui/tests/components/Dashboard/timeframe.test.ts
    M ui/tests/components/EventConfiguration/EventConfigUploadFilesTab.test.ts
    A ui/tests/components/Map/MapSearch.test.ts
    A ui/tests/components/Menu/Menubar.test.ts
    M ui/tests/components/Menu/SideMenu.test.ts
    M ui/tests/components/Menu/UserSelfServiceMenuItem.test.ts
    A ui/tests/composables/useDashboardRefresh.test.ts
    A ui/tests/lib/adminValidation.test.ts
    M ui/tests/onms-ui/OnmsAutoComplete.test.ts
    M ui/tests/onms-ui/OnmsIconButton.test.ts
    M ui/tests/onms-ui/OnmsSearchInput.test.ts
    M ui/tests/onms-ui/OnmsTooltip.test.ts
    A ui/tests/services/dashboardService.test.ts
    A ui/tests/services/groupAdminService.test.ts
    A ui/tests/stores/dashboardStore.test.ts
    A ui/tests/stores/groupAdminStore.test.ts
    A ui/tests/systemReport.test.ts

  Log Message:
  -----------
  Merge remote-tracking branch 'origin/develop' into jira/NMS-20152-resource-graphs


  Commit: e4fcae5f0daa268a5d845411f3bc46108f7a8fd9
      https://github.com/OpenNMS/opennms/commit/e4fcae5f0daa268a5d845411f3bc46108f7a8fd9
  Author: Jose Anes <[email protected]>
  Date:   2026-08-31 (Mon, 31 Aug 2026)

  Changed paths:
    M ui/src/components/Resources/ForecastGraph.vue
    M ui/tests/components/Resources/ForecastGraph.test.ts

  Log Message:
  -----------
  NMS-20152: forecast CDEF-drawn series by posting the full graph model !smoke

The forecast tab only admitted DEF-backed series (attribute + resourceId,
no expression), so graphs whose drawn lines are computed expressions - most
stock definitions - reported nothing forecastable. Post the whole model
instead, DEFs as sources and CDEFs as expressions (the same payload
Graph.vue builds), and hand the selected series' metric name to the filter
chain as inputColumn, mirroring the legacy forecast page.

The selected column is now located by response label rather than assumed
at index 0; verified against a live instance that the measurements API
returns HW fit/bounds and trend for an expression-backed inputColumn, with
the data column ordered last.


Compare: https://github.com/OpenNMS/opennms/compare/e463a8ef7e86...e4fcae5f0daa

To unsubscribe from these emails, change your notification settings at https://github.com/OpenNMS/opennms/settings/notifications


_______________________________________________
Please read the OpenNMS Mailing List FAQ:
http://www.opennms.org/wiki/index.php?page=MailingListFaq
opennms-cvs mailing list

To *unsubscribe* or change your subscription options, see the bottom of this page:
https://lists.sourceforge.net/lists/listinfo/opennms-cvs
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.