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
Actions:
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.
Connection:
Prerequisites
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.
Has anybody had any luck getting this working? I get an error. Working with support but so far we’re stumped.
Error:
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:
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/plugin.py", 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/plugin.py", 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/action.py", 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/api.py", 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/api.py", 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/api.py", 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.
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?
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.
What is shown on the extension library page is the only supported version. That doesn’t mean it won’t work with a later version of Manage Engine Service Desk On Prem, but it hasn’t been tested.
Were you trying to use it and it isn’t working? If so can you share what version you are trying it on?
The native plugin in the extension library will not work with Manage Engine Cloud. You can utilize the Python plugin as a workaround.
For your credentials if you update the python plugin to the latest version it allows you to store credentials securely just like the other plugins. You call the credentials with the variables shown in the credential manager.
As an example their is a credential section for an api key. The variable is secret_key.
Please correct me if I’m wrong, but I opened a support case regarding this plugin and was told by RP7 support that the API could be leveraged via Postman.
When I spoke with ManageEngine, they also said that on-prem Service Desk Plus has the same API capabilities as the cloud version.
So, my question is, what do I need to do to get InsightVM to automate workflows to Service Desk Plus Cloud?
I believe the authentication is different. The on prem connection is looking for your appliance. The api endpoints are the same, but the initial authorization is different. Without an update to the plugin you will not be able to leverage this for the cloud version.
The alternatives would be the HTTP Requests plugin, the Powershell plugin, or the Python plugin.
That really depends on what your goal is. There are a few different ways you could accomplish this. The approach that gives you the most control over what is creating tickets would be a time-based workflow that leverages the ad hoc SQL action. Whatever query you define would run on a schedule. For example, it could run daily and return the data that matches your query.
From there, you could use a Python plugin to create tickets in ManageEngine. Whether you create a single ticket per solution with all related assets attached, or a separate ticket for each individual asset, is entirely up to you and depends on your specific requirements.
Another option is the Top X Solutions action. This is solution-based rather than asset-specific. You would not be able to target specific assets, but you could still use a time-based workflow that runs on an interval and creates tickets based on the top solutions in your environment.
There is an example workflow that can be leveraged for this approach, but you would need to replace the ServiceNow steps with Python steps to create tickets in ManageEngine. If you find a workflow in the Extension Library that is close to what you are looking for but uses a different ticketing system, you can treat it as a template and modify it to fit your needs.