Plugins Directory » Redmine NATH v1.0

Author: Alter Way
Code repository:
Registered on: 2018-07-16 (over 4 years ago)
Current version: 1.0.0
Compatible with: Redmine 4.1.x, 4.0.x, 3.4.x, 3.3.x, 3.2.x, 3.1.x, 3.0.x, 2.6.x, 2.5.x, 2.4.x, 2.3.x, 2.2.x, 2.1.x, 2.0.x
User ratings:   (0)

NATH (NLP Automated Ticket Handler) is meant to automatically qualify your tracker issues passing tickets titles and description to any NLP service (see below for finer functionnal descriptions). It enables the automatic filling of custom fields at tickets creation, with a precision ranging from 80 to 90% depending on dataset quality and NLP model implemented.

Our machine learning pipeline can be summed in three steps. First, we vectorize our documents using the term frequency invert document frequency strategy. Then, we Normalize our output vector. And finally, we apply a Huber regressor on the vectorized data. The Huber regressor is linear regression model that is robust to outliers, which force the model to not stay undecided just because some word may rarely be used in a totally different context.

Installation notes


  • Clone or download this repository into your Redmine's plugins folder
  • restart the Redmine server
  • configure the plugin in the admin panel


Go to /settings/plugin/qualification and configure the plugin

  • "Limit the query length" maximum number of character sent to the endpoints
  • "Tokenize the query" remove any non-word character
  • "Prepend the title" prepend the title as part of the description
  • "Response path" if the end point returns {"a": {"b": "value"}} specify a.b
  • Check the projects for which the plugin will be activated
  • Map the fields you want to predict to http endpoints

Endpoint requirements

The plugin currently supports GET HTTP request only. The plugin appends to the endpoint the user query which corresponds to issue_description (or if "Prepend the title" is check: issue_title + " " + issue_description).

The endpoint must return a JSON response.

Usage with LUIS

The plugin configuration is flexible enough to be used with many existing services. Here is a quick walk-through to set up a binding with LUIS.

In this example, we will rewrite the subject to either "new functionalities", "security issue", "graphical glitch" or "logic problem" based on the ticket's description.

  1. First, you should create or login into a luis account
  2. Create a new app on your dashboard
  3. Create 4 intents named "new functionalities", "security issue", "graphical glitch" and "logic problem"
  4. Train your model by giving it examples of ticket description for each intent
  5. When your model is getting accurate click on the publish tab
  6. Copy your LUIS endpoint at the bottom of the page
  7. Now head to your Redmine server on the qualification configuration page (/settings/plugin/qualification)
  8. Set "Limit the query length" to 499 to respect LUIS restrictions, set "Response path" to "topScoringIntent.intent" and paste the endpoint in the text box for "subject"
  9. Now, when someone creates a ticket LUIS determines the best matching title and the plugin sets it automatically!


1.0.0 (2018-07-16)

Compatible with Redmine 4.1.x, 4.0.x, 3.4.x, 3.3.x, 3.2.x, 3.1.x, 3.0.x, 2.6.x, 2.5.x, 2.4.x, 2.3.x, 2.2.x, 2.1.x, 2.0.x. (208 KB) Alter Way, 2018-07-16 15:25