Manage Engine - Service Desk Plugin Release!

Manage Engine - Service Desk

ManageEngine’s Service Desk can centralize and capture reported issues, allowing security/IT admin to track and manage all incidents effortlessly. The numerous help desk tickets raised are organized and tracked in the Requests module. The Requests module enables you to handle tickets promptly, assign tickets to technicians, merge similar requests, and so on.

Environment: On-Premise


This new plugin enables an InsightConnect workflow to manage all aspects of a Manage Engine Request. Below are some of the most popular plugin’s actions and use cases.

Add Request

This action allows you to create a new Request. Subject and Requester are the only required fields for this action to execute.
Use Case:
When InsightConnect receives a new incident from IDR or IVM, a new request can be created in Service Desk for a technician to pick up.

Edit Request

A Request can be updated with additional or updated information.
Use Case:
As a security administrator, my ICON Workflow runs remediation steps after creating the initial request. Based on those checks, I want to update the Impact and Priority based on the severity.

Add Request Notes

This action allows you to attach a Request Note, which can help the technician triage the incident/Alert.
Use Case:
As a security administrator, I would like all the remediation results to be attached to the Requests as notes which can centralize all the data and streamline the incident triage in Service Desk.

Assign Request

A Request can be assigned to a Group or a technician.
Use Case:
As a security administrator, Based on the severity of the Incident, I want to Assign the Request to a specific group.

Get List Request

This action allows you to retrieve a list of all requests or requests that match a specific Search Criteria.

Use Case:
As a Security Administrator, I want to retrieve all high-priority requests over two days old and escalate them to the technicians.



The authentication between ServiceDesk Plus and an Insight Connect application is through an API key. A unique key is generated for a technician with login permission in the ServiceDesk Plus application.

  • To generate the API Key, click Admin → Technicians under User block.
  • If you want to generate the API key to the existing technician, then click the edit icon beside the technician.
  • If you want to generate the API key to a new technician, click Add New Technician link, enter the technician details and provide login permission.
  • Click Generate link under the API key details block. You can select a time frame for the key to expire using the calendar icon or simply retain the same key perpetually.
  • If a key is already generated for the technician, a Re-generate link appears.


1 Like

Has anybody had any luck getting this working? I get an error. Working with support but so far we’re stumped.

Connect: Connecting…
rapid7/Manage Engine Service Desk:1.0.0. Step name: add_request
Getting list of requests…
invalid literal for int() with base 10:

Hi gmalis,

Can you please check with 1.0.1 version. Also, kindly provide us all the list of fields that you are using if it is reproducible.

Appreciate your help

I am unable to get this working due to an error coming from Manage Engine. I have all required field filled out, but each time it reaches the “Add Request” section of my InsightConnect Workflow, I get this error:

Connect: Connecting...
rapid7/Manage Engine Service Desk:1.0.1. Step name: add_request
Adding a request...
An error occurred during plugin execution!

The server is unable to process the request. Verify your plugin input is correct and not malformed and try again. If the issue persists, please contact support. Response was: {'response_status': {'messages': [{'status_code': 4001, 'field': 'urgency', 'type': 'failed', 'message': 'Invalid Input'}], 'status': 'failed', 'manage_engine_status_code': 4000}}
Traceback (most recent call last):
  File "/usr/local/lib/python3.8/site-packages/insightconnect_plugin_runtime-4.7.4-py3.8.egg/insightconnect_plugin_runtime/", line 376, in handle_step
    output = self.start_step(
  File "/usr/local/lib/python3.8/site-packages/insightconnect_plugin_runtime-4.7.4-py3.8.egg/insightconnect_plugin_runtime/", line 556, in start_step
    output = func(params)
  File "/usr/local/lib/python3.8/site-packages/manage_engine_service_desk_rapid7_plugin-1.0.1-py3.8.egg/icon_manage_engine_service_desk/actions/add_request/", line 17, in run
    response_json = self.connection.api_client.add_request(request_parameters=params)
  File "/usr/local/lib/python3.8/site-packages/manage_engine_service_desk_rapid7_plugin-1.0.1-py3.8.egg/icon_manage_engine_service_desk/util/", line 73, in add_request
    return self.make_json_request(
  File "/usr/local/lib/python3.8/site-packages/manage_engine_service_desk_rapid7_plugin-1.0.1-py3.8.egg/icon_manage_engine_service_desk/util/", line 281, in make_json_request
    response = self.make_request(method=method, url=url, params=params, data=data, headers=headers)
  File "/usr/local/lib/python3.8/site-packages/manage_engine_service_desk_rapid7_plugin-1.0.1-py3.8.egg/icon_manage_engine_service_desk/util/", line 247, in make_request
    raise PluginException(
insightconnect_plugin_runtime.exceptions.PluginException: An error occurred during plugin execution!

The server is unable to process the request. Verify your plugin input is correct and not malformed and try again. If the issue persists, please contact support. Response was: {'response_status': {'messages': [{'status_code': 4001, 'field': 'urgency', 'type': 'failed', 'message': 'Invalid Input'}], 'status': 'failed', 'manage_engine_status_code': 4000}}

I’m not sure what it’s expecting in the “Urgency” section. I currently have the value filled in to match exactly what our Manage Engine instance has available as a value.

Any help would be much appreciated.

1 Like

Hey @rwittmers, sorry to hear you’ve run into this. Would you mind sharing what values you’ve tried using for “Urgency”? Then we can see whether those are the potential culprit here.

Also, since it’s not a required field, have you tried testing this particular action while leaving Urgency blank to see if that succeeds?

Hey Holly!

Thank you for your response. I was able to get this resolved, however, it took quite a bit of work to do so. I had to separately write a script to access Manage Engine’s API so that I could view what they were using in the “id” field of the “Urgency”, “Request Type”, etc. I used the API to pull a sample ticket which exposed some more granular detail about what Requests look like to Manage Engine on the backend.

The values I’ve tried in the “value” field of “Urgency” matched exactly what is shown as the value within our Manage Engine instance. For example, “1. Low (Inconvenient)” when typed into the value field creates an error but using Manage Engine’s backend ID for the “Low” urgency ended up working totally fine.

Hopefully this helps someone else experiencing the same issue. I have the script to access that information available if needed as well.

1 Like

rwittmers - Can you please check if the value you are providing is in the format {“name”: “Low”} as provided in the Rapid7 Extensions