feat(manageengine): add ManageEngine ServiceDesk Plus Cloud integration - #7447
feat(manageengine): add ManageEngine ServiceDesk Plus Cloud integration#7447waleedlatif1 wants to merge 3 commits into
Conversation
31 tools across requests, problems, changes, assets, and knowledge base solutions, with full create/read/list/update/delete on each plus notes on requests, problems, and changes. Auth reuses the existing Zoho OAuth client: ServiceDesk Plus authenticates through Zoho and scopes are chosen per authorization request rather than per registered client, so manageengine-sdp aliases onto the zoho-desk deployment capability and needs no new env pair. Connecting requires a Zoho account in the US data center, matching the existing Zoho connector's limitation. The standalone Tasks module is deliberately not implemented: its endpoints are documented but the scope table publishes no tasks entry. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01HbUGaP3XyrSm3Lk3k959j2
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
Greptile SummaryAdds a ManageEngine ServiceDesk Plus Cloud integration using the existing Zoho OAuth deployment capability.
Confidence Score: 5/5The PR appears safe to merge because no blocking failure remains in the eligible follow-up review scope. No blocking failure remains.
|
| Filename | Overview |
|---|---|
| apps/sim/blocks/blocks/manageengine-sdp.ts | Defines the integration block, operation-specific parameters, and stale-state filtering for all 31 operations. |
| apps/sim/tools/manageengine_sdp/utils.ts | Implements bounded endpoint construction, request serialization, list options, and ServiceDesk response handling. |
| apps/sim/tools/manageengine_sdp/entity-builders.ts | Builds module-specific create and update entities while preserving explicit boolean values and omitting unset fields. |
| apps/sim/lib/auth/connectors/providers.ts | Registers the ManageEngine connector with ServiceDesk-specific Zoho OAuth scopes and profile resolution. |
| apps/sim/lib/oauth/oauth.ts | Adds ManageEngine OAuth configuration backed by the existing Zoho client credentials and token endpoint. |
| packages/deployment-config/src/env-capabilities.ts | Aliases ManageEngine deployment availability to the existing Zoho Desk OAuth capability. |
| apps/sim/tools/manageengine_sdp/utils.test.ts | Covers endpoint safety, request formatting, paging behavior, and response success and failure handling. |
| apps/sim/blocks/blocks/manageengine-sdp.test.ts | Verifies operation parameter scoping and prevents unrelated persisted block state from reaching tools. |
Sequence Diagram
sequenceDiagram
participant User
participant Sim as Sim Workflow
participant OAuth as Zoho OAuth
participant SDP as ServiceDesk Plus Cloud
User->>Sim: Connect ManageEngine credential
Sim->>OAuth: Authorize with SDPOnDemand scopes
OAuth-->>Sim: Access and refresh tokens
User->>Sim: Run ManageEngine operation
Sim->>SDP: v3 API request for selected data center and portal
SDP-->>Sim: Entity or list response
Sim-->>User: Structured tool output
Reviews (3): Last reviewed commit: "fix(manageengine): reject JSON-array res..." | Re-trigger Greptile
- display_id on problems, changes and solutions reused the timestamp property
map, so generated metadata described a record number like "140" as epoch
milliseconds. Give it its own map.
- parseSdpResponse turned a non-empty, non-JSON 2xx body into {} and reported
success — a proxy or login page answering 200 with HTML would make a read look
empty and a delete look like it worked. Throw instead; an empty body is still
tolerated.
- Scope the docs setup step: connect a Zoho account, with client registration
called out as self-hosted only.
- The block described notes on "any ITSM record"; only requests, problems and
changes have note endpoints here.
- Assert all ten data-center hosts, not four, and guard the count so a new code
fails the test until asserted.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HbUGaP3XyrSm3Lk3k959j2
|
@cubic-dev-ai review this PR |
@waleedlatif1 I have started the AI code review. It will take a few minutes to complete. |
There was a problem hiding this comment.
All reported issues were addressed across 60 files
Reply with feedback, questions, or to request a fix.
Fix all with cubic | Re-trigger cubic
A 2xx body that parses to an array passed the `typeof 'object'` check, so it was accepted as a v3 envelope. It carries no `response_status`, so a list read as empty and a delete reported success. Reject arrays and `null` alongside the scalar case already handled. Also name the display_id children in its description — the docs generator renders one level of output nesting repo-wide, so the shape is otherwise invisible on the page. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01HbUGaP3XyrSm3Lk3k959j2
|
@cubic-dev-ai review this PR |
@waleedlatif1 I have started the AI code review. It will take a few minutes to complete. |
Summary
manageengine-sdpaliases onto thezoho-deskdeployment capability and needs no new env pairNotes
accounts.zoho.comand a Zoho token is only valid in the data center that issued it. This matches the existing Zoho Desk connector's limitation and is stated in the block, the OAuth service description, and the docs page. Making it multi-DC means reading theaccounts-servercallback param — a connector-level change that would fix Zoho Desk at the same time, so it is deliberately out of scope here.tasksentry, and requesting an unverified scope would put it on every user's consent screen.Emergency ChangeandVisible to Requestersare tri-state dropdowns on their update operations because a switch cannot express "leave unchanged" — as a switch they silently downgraded an emergency change and unpublished a live KB article.bgColoris white.Type of Change
Testing
Tested manually. 45/45 audits pass (
check:audits), plusdocs-manifest:check,check-block-registry, lint, andtype-checkclean. 336 tests pass, including 40 new unit tests covering the request/response helpers, entity builders, and block param scoping. Verified the new tests fail without their fixes by reverting each and watching them go red.Additionally verified programmatically: all 31 endpoints match the documented path, method, auth and content-negotiation headers, and body shape; every declared output field appears in a real doc response sample (zero invented fields); every operation supplies its required params and leaks no other module's values, including with stale cross-operation state populated.
Checklist
🤖 Generated with Claude Code
https://claude.ai/code/session_01HbUGaP3XyrSm3Lk3k959j2