Helpdesk Integration

NetXMS can integrate with external helpdesk and ticketing systems to create and track trouble tickets based on alarms. This allows operations teams to manage incidents using their existing ITSM tools while keeping NetXMS as the event source.

Two helpdesk link modules are included: Jira and Redmine.

Overview

The helpdesk integration works through the alarm management workflow:

  1. An alarm is raised in NetXMS based on event processing rules

  2. An operator creates a helpdesk ticket from the alarm

  3. The ticket ID is linked to the alarm in NetXMS

  4. Alarm comments are synchronized with ticket comments (Jira only)

  5. When the ticket is moved to a resolved status in the helpdesk system, the linked alarm is resolved in NetXMS (Jira, via webhook)

Helpdesk links are loadable modules (jira.hdlink and redmine.hdlink, installed in the NetXMS library directory). Select the module with the HelpDeskLink server configuration variable (Configuration > Server configuration) and restart the server:

Value Module

none

No helpdesk link (default)

jira

Jira integration

redmine

Redmine integration

The .hdlink extension is appended automatically, and a name without a path is looked up in the library directory. After startup, the server log should contain a line like "Helpdesk link module JIRA (version …​) loaded successfully".

Jira Integration

Configuration

Configure the Jira connection using server configuration variables (Configuration > Server configuration). Jira.Webhook.Path and Jira.Webhook.Port are read when the module is loaded, so changing them requires a server restart. Other settings are read during helpdesk operations; Jira.VerifyPeer has the limitation described below.

Variable Description

Jira.ServerURL

Jira server URL, without a trailing slash

Jira.Login

Jira username (must have permission to create issues in the configured project and comment on own issues)

Jira.Password

Jira password or API token (for Jira Cloud)

Jira.ProjectCode

Jira project key (project must already exist)

Jira.ProjectComponent

Jira project component (optional)

Jira.IssueType

Jira issue type name (default: Task)

Jira.ResolvedStatus

Comma-separated list of issue statuses indicating the issue is resolved (default: Done)

Jira.VerifyPeer

Request verification of Jira server’s TLS certificate (configured default: enabled; see the limitation below). This variable has no pre-created entry — create it manually to change the setting.

Jira.Webhook.Path

Path part of the Jira webhook URL; must start with / (default: /jira-webhook)

Jira.Webhook.Port

Port of the Jira webhook listener; 0 disables the webhook (default: 8008)

In version 6.2.6, the first Jira connection after server startup disables peer-certificate verification, and changing Jira.VerifyPeer does not update an existing connection. A later reconnect uses the most recently read value.

Jira-to-NetXMS Webhook

Updates flowing back from Jira are received through a webhook served by a dedicated HTTP listener that the Jira module starts on Jira.Webhook.Port. Configure a webhook in Jira pointing to http://<server>:<Jira.Webhook.Port><Jira.Webhook.Path> (for example, http://netxms.example.com:8008/jira-webhook). The listener accepts only POST requests with a JSON body; it does not authenticate the caller, so restrict access to the port at the network level.

The webhook handles two things:

  • Comments added to a linked issue in Jira appear as comments on the alarm

  • When a linked issue transitions to a status listed in Jira.ResolvedStatus, the alarm is resolved

Other alarm state changes (acknowledge, terminate) are not driven from Jira.

Creating Tickets from Alarms

Operators can create Jira tickets from the Alarms view (requires the Create helpdesk tickets access right):

  1. Right-click an alarm and select Create ticket in helpdesk system

  2. NetXMS creates an issue in Jira with alarm details

  3. The Jira issue key (e.g., OPS-1234) appears in the Helpdesk ID column

To view the ticket, right-click the alarm and select Show helpdesk ticket in web browser.

Redmine Integration

Enable Redmine integration by setting HelpDeskLink to redmine and restarting the server.

Configure the connection using server configuration variables. These variables are not created by default — add them with Create new…​ in Configuration > Server configuration as needed; a missing variable takes the default value shown below. Redmine.ServerURL, Redmine.ApiKey, and Redmine.VerifyPeer are read when the module is loaded, so changing them requires a server restart; the other variables are re-read on every ticket creation and take effect immediately:

Variable Description

Redmine.ServerURL

Redmine server URL (default: http://localhost)

Redmine.ApiKey

Redmine API key used for issue creation

Redmine.VerifyPeer

Verify Redmine server’s TLS certificate (default: enabled)

Redmine.ProjectId

ID of the project where issues are created (default: 1)

Redmine.TrackerId

Tracker ID assigned to created issues (default: 3)

Redmine.StatusId

Initial status ID of created issues (default: 1)

Redmine.PriorityId

Priority ID of created issues (default: 2)

Ticket creation from alarms works the same way as with Jira. The Redmine integration does not synchronize comments and cannot push updates back to NetXMS; the only information flowing back from Redmine is the issue state, which the server checks when an operator resolves or terminates the linked alarm.

Troubleshooting

Ticket Creation Fails

  • Check the server log for helpdesk link errors

  • Verify the module is loaded (HelpDeskLink set to jira or redmine, and the "loaded successfully" message in the server log)

  • Verify the configured URL, credentials, and project key

  • Test API connectivity from the NetXMS server host

  • Verify the helpdesk user has permission to create issues in the configured project

  • For Jira Cloud: ensure the API token is valid and not expired

Alarms Not Updating from Jira

  • Verify Jira.Webhook.Port is not 0 and the server log contains "Jira webhook initialized on port …​"

  • Verify the webhook URL configured in Jira matches Jira.Webhook.Path and Jira.Webhook.Port, and that the port is reachable from Jira

  • Check that the issue status transition target is listed in Jira.ResolvedStatus

Next Steps