After this article
You will be able to connect ServiceNow to Lumos to sync users, their roles, and last login, and to log ITSM request tickets in ServiceNow when access is requested in the AppStore.Capabilities
Required plan and roles
- ServiceNow plan: no minimum plan is required.
- Connecting user: the integration inherits the permissions of the user who connects it. Connect while logged into ServiceNow as a dedicated service account with the roles below, not your personal admin account.
- Required roles on the connecting user/service account:
- Some roles don’t exist on every instance, for example
sn_request_comments_writeandsn_request_write. A role combination that has worked for ITSM isuser_admin,rest_service,catalog_admin, anditil. A smaller subset withoutitilhas also worked for some customers. - Read-only: the ITSM connector is read-only for identity and entitlement information. Provisioning (create, update, delete accounts and role assignments) isn’t available on this connector. Use ServiceNow User Provisioning.
Instructions
Phase 1: Create an OAuth client in ServiceNow- In ServiceNow, open the Application Registry and create a new application, choosing Create an OAuth API endpoint for external clients.
- Set Name to
Lumosand set the Redirect URL tohttps://app.lumosidentity.com/integrations/servicenow_oauth2_callback. - Leave all other settings as-is and save.
- Copy the Client ID and Client Secret.
- Click the ServiceNow card in your Lumos integrations (reconnect an existing card or add a new one).
- Instance Subdomain: from your login URL (
subdomain.service-now.com), enter thesubdomain.service-now.comvalue. - Enter the ServiceNow Client ID and Client Secret from Phase 1.
- Click Connect ServiceNow. When the ServiceNow login pop-up appears, make sure you’re logged in as the intended service account. The integration inherits that user’s permissions.
- In Lumos, go to your ITSM settings, choose ServiceNow in the dropdown, and click Connect.
- Choose the sync you want to configure.
- Specify the values: Project =
Request, Request Type =Requested Items, Resolve With (e.g.Closed Complete). - Click Save. Lumos will then create an
sc_request(state New) with a linkedsc_req_itemwhen access is requested in the AppStore, comment on the request item as approvals are decided, and resolve it with your Resolve With status when the request completes.
sc_request) → Requested Item (sc_req_item) → Catalog Task. Ticket state values map as 1 = New, 6 = Resolved, 7 = Closed.
API Endpoints Used
Troubleshooting
“Failed to forward OAuth callback to ICS” when connecting. This generic message usually masks a 403 from ServiceNow:Missing required api access scope: tableapi on GET /api/now/table/sys_user, which Lumos calls immediately after OAuth to validate credentials. Grant the connecting service account rest_service (provides Table API access) and user_admin, then reconnect.
403 Forbidden / insufficient permissions during sync. Verify the connecting user holds every required role and has read access to sys_user, sys_user_group, sys_user_role, and sys_user_has_role. Testing with a full admin account can isolate whether the problem is role-based.
Item field not set on request items. Grant the snc_platform_rest_api_access role write access on sc_req_item.cat_item.
A specific role (e.g. security_admin) never appears as an entitlement. This is a ServiceNow platform limitation, not a sync bug. Elevated-privilege roles from the High Security plugin are hidden from any non-interactive session, so the connector’s OAuth-based role listing gets a clean response with the record omitted. A custom read ACL on sys_user_role doesn’t fix it. Workarounds are ServiceNow-side (a scripted REST endpoint running as an elevated user, or relaxed High Security settings).
Incomplete or missing data. Check active/inactive filter conditions, confirm the integration user can see the records in the ServiceNow UI, and review ACLs for row-level security.
Connection or credential errors. Confirm the instance subdomain format, that the instance is reachable from the internet (firewall rules for on-premise), that the OAuth application is active, and that the Client ID/Secret are correct. Regenerate credentials if issues persist. Reconnecting with valid credentials clears an integration error state.