ManageEngine ServiceDesk Integration¶
Faraday's ServiceDesk integration allows you to export confirmed vulnerabilities to ManageEngine ServiceDesk as request tickets. The integration supports bidirectional status synchronization via webhooks, severity mapping, template- based field configuration, and customizable status mappings.
Availability: Commercial feature (requires licensed Faraday instance).
Verified against: Faraday Server v5.19.0 codebase, wiki doc dated 2025-01-16.
Overview¶
| Feature | Details |
|---|---|
| Export vulnerabilities as ServiceDesk request tickets | Yes |
| Bidirectional status sync via webhooks | Yes |
| Severity mapping (Faraday ↔ ServiceDesk) | Yes |
| Template-based field configuration | Yes (fetched from ServiceDesk) |
| Field types | Dropdown, Search, Raw/JSON |
| Authentication (ServiceDesk side) | API Authtoken |
| Authentication (webhook) | Faraday User Token (service_desk scope) |
| Webhook endpoint | /_api/v3/integrations/mesd/update-issue |
| Webhook auth header | X-ServiceDesk-Token |
Prerequisites¶
- A running Faraday Server instance (commercial edition)
- A ManageEngine ServiceDesk instance
- A ServiceDesk administrator account (for authtoken generation)
- Network connectivity between Faraday Server and ServiceDesk (both directions for bidirectional sync)
Step 1: Generate ServiceDesk Authtoken¶
- Log in to your ServiceDesk instance with an administrator account.
- Click the user account icon in the upper-right corner.
- Select Generate Authtoken.
- Generate a new token and copy it immediately — it is only displayed once.
- Note the base URL of your ServiceDesk instance (protocol + domain only, no path).
Step 2: Configure Faraday¶
Access Settings¶
- In the Faraday Web UI, click the user account icon and select Preferences.
- Go to the ServiceDesk tab on the left panel.
Configure Authentication¶
| Field | Description | Example |
|---|---|---|
| URL | ServiceDesk base URL (protocol + domain) | https://servicedesk.example.com |
| API Token | The authtoken generated in Step 1 | your-authtoken-here |
Click the Authentication switch to test the credentials. If successful, the switch turns green.
Make sure that the server where Faraday is running can reach ServiceDesk.
Configure Basic Setup¶
Once authentication is verified (green switch), click the Basic Setup switch to expand the configuration.
Select Requester¶
Type the name of the ServiceDesk user in the search box and select from the dropdown. This is the user on whose behalf the API will generate request tickets.
Use the user's login name (the one for accessing ServiceDesk) to avoid ambiguities.
Severity Mapping¶
Map Faraday's six severity levels to your ServiceDesk instance's priorities. All fields must be mapped — no field should be left unselected.
| Faraday Severity | ServiceDesk Priority |
|---|---|
| Critical | (select from your instance) |
| High | (select from your instance) |
| Medium | (select from your instance) |
| Low | (select from your instance) |
| Informational | (select from your instance) |
| Unclassified | (select from your instance) |
Status Mapping — Incoming (ServiceDesk → Faraday)¶
Map ServiceDesk ticket statuses to Faraday vulnerability statuses. The Ignore option discards tickets when they reach that status.
| ServiceDesk Status | Faraday Status |
|---|---|
| (your statuses) | Open / Closed / Re-Opened / Risk Accepted / Ignore |
Status Mapping — Outgoing (Faraday → ServiceDesk)¶
Map Faraday vulnerability status changes to ServiceDesk ticket statuses.
| Faraday Status | ServiceDesk Status |
|---|---|
| Open | (select from your instance) |
| Closed | (select from your instance) |
| Re-Opened | (select from your instance) |
| Risk Accepted | (select from your instance) |
Configure Templates¶
- Click Fetch Templates to retrieve available request templates from ServiceDesk.
- Select a template from the dropdown — it will be added to the list.
- You can add multiple templates.
Edit Template Fields¶
Click the pencil icon to open the template editing window:
- Mandatory fields are required and must be filled.
- Optional fields can be added using the dropdown selector.
Field Types¶
| Type | Behavior | Example |
|---|---|---|
| Dropdown | Lists all available options from ServiceDesk | Category (combines category + subcategory) |
| Search | Requires 3+ characters to search; results shown in dropdown | Technician, Group |
| Raw/JSON | Fallback for unknown or unsupported fields | Custom fields (refer to ServiceDesk docs for JSON structure) |
Step 3: Set Up Bidirectional Status Sync (ServiceDesk Side)¶
At this point, Faraday → ServiceDesk sync is already working. To enable ServiceDesk → Faraday sync, configure a webhook and trigger in ServiceDesk.
Create a Faraday User Token (ServiceDesk Scope)¶
- In Faraday, click the user account icon and select Preferences.
- Go to Access Tokens and click Add Token.
- Set the scope to Service_desk and choose an alias.
- Copy the token immediately — it is displayed only once.
- Copy your Faraday base URL (protocol + domain, no path).
Configure ServiceDesk Webhook¶
- In your ServiceDesk panel, click Admin.
- Scroll to Developer Space and select Webhooks.
- Create a new webhook:
| Field | Value |
|---|---|
| Name | A descriptive name (e.g., Faraday Sync) |
| HTTP Method | POST |
| URL | https://<your-faraday-instance>/_api/v3/integrations/mesd/update-issue |
| Request Headers | X-ServiceDesk-Token: 1 |
| Authentication Details | None |
| Content Type | application/json |
Request Payload:
{
"status": "${{request.status}}",
"desc": "${{request.description}}",
"Authorization": "FARADAY_ACCESS_TOKEN"
}
Replace FARADAY_ACCESS_TOKEN with the Faraday User Token you copied earlier.
Fields not mentioned above are irrelevant and should be left unconfigured.
Configure ServiceDesk Trigger¶
- In your ServiceDesk panel, click Admin.
- Scroll to Automation and select Custom Triggers.
- Optionally create a new group for Faraday triggers.
- Create a new trigger:
| Field | Value |
|---|---|
| Trigger Name | A descriptive name (e.g., Faraday Status Sync) |
| Execute on actions | Edit only |
| Execute during | Any Time |
| Cascade Execution | Execute next rule |
| When Request arrives | Apply conditions based on criteria |
| Execute rule when criteria is met | Every time |
| Criteria — Field | Status > Name |
| Criteria — Condition | is modified |
| Action | Webhook → select the previously created webhook |
Important: Ensure that the ServiceDesk webhook executor can reach Faraday. In some instances, the webhook executor has a different IP address than the web platform. Verify your firewall/network configuration allows communication from the webhook executor to Faraday.
Step 4: Export Vulnerabilities to ServiceDesk¶
- In the Faraday Web UI, go to Manage > Vulns.
- Select one or more confirmed vulnerabilities.
- Click Tools (context menu) and select ServiceDesk.
- Vulnerabilities are created as request tickets in ServiceDesk using the configured template and field mappings.
Tracking Exported Vulnerabilities¶
- Add the issuetracker column to the vulnerability table to see links to created ServiceDesk tickets.
- Click the link to open the ticket directly in ServiceDesk.
Permissions¶
| Permission Unit | ID | Group | Description |
|---|---|---|---|
service_desk |
16 | integrations |
ServiceDesk integration CRUD operations |
active_integrations |
19 | integrations |
View/manage active integrations |
integrations_auth |
41 | integrations |
Integration authentication management |
Role-Based Access¶
| Role | CREATE | READ | UPDATE | DELETE |
|---|---|---|---|---|
| Admin | Yes | Yes | Yes | Yes |
| Asset Owner | Varies | Varies | Varies | Varies |
| Pentester | Yes | Yes | Yes | Yes |
| Client | Limited | Limited | Limited | Limited |
Data Model¶
UserToken Model¶
Tokens for ServiceDesk webhook authentication:
| Column | Type | Description |
|---|---|---|
id |
Integer | Primary key |
user_id |
Integer | FK to faraday_user |
token |
String | Unique token value |
alias |
String | Descriptive name |
expires_at |
DateTime | Optional expiration |
scope |
Enum | service_desk (also: gitlab, jira, scheduler) |
revoked |
Boolean | Whether token is revoked |
hide |
Boolean | Hide token in UI |
Vulnerability Fields¶
| Field | Type | Purpose |
|---|---|---|
issuetracker |
Text (JSON) | Stores ServiceDesk ticket reference |
issuetracker_json |
JSON (API) | Structured ticket details for API/reports |
Troubleshooting¶
| Problem | Possible Cause | Solution |
|---|---|---|
| Authentication switch stays red | Invalid URL or authtoken | Verify URL (protocol + domain only) and authtoken are correct |
| Cannot reach ServiceDesk | Network issue | Ensure Faraday Server can reach ServiceDesk |
| Requester search returns no results | Wrong search format | Use the user's login name (not display name) |
| Severity mapping incomplete | Fields left empty | All 6 severity levels must be mapped |
| Template fetch fails | Permissions issue | Ensure the authtoken was generated from an administrator account |
| Bidirectional sync not working | Webhook not reaching Faraday | Verify the webhook executor IP can reach Faraday; check firewall rules |
| Status sync loop | Misconfigured triggers | Verify the trigger only fires on Edit actions with Status > Name is modified |
Changelog¶
| Date | Change |
|---|---|
| 2025-01-16 | Original wiki documentation published |
| 2026-02-27 | Updated: verified against v5.19.0 codebase, added permissions model (UNIT_SERVICE_DESK ID 16), data model details (UserToken SERVICE_DESK_SCOPE), webhook endpoint and payload reference, role-based access, expanded troubleshooting |
Source References¶
- Wiki source:
repos/faraday-wiki/docs/integration-servicedesk.md - Permission definitions:
faraday/server/utils/permissions.py—UNIT_SERVICE_DESK - UserToken model:
faraday/server/models.py(line ~2636) —SERVICE_DESK_SCOPE - Configuration model:
faraday/server/models.py(line ~3641) - VulnerabilityGeneric model:
faraday/server/models.py(line ~1431) —issuetracker - Vulnerability schema:
faraday/server/api/modules/vulns_base.py(line ~299) —issuetrackerserialization - Migration (service_desk scope):
faraday/migrations/versions/7c223e63007f_add_service_desk_scope.py - Custom roles migration:
faraday/migrations/versions/a29d52685b58_custom_roles.py— permission unit ID 16