We have SailPoint IdentityIQ integrated with ServiceNow Service Desk using the standard Service Desk integration. Currently, we use this integration for disconnected applications, where an access request creates a ServiceNow REQ/RITM/SCTASK for manual fulfillment.
We have a new requirement for a Web Service application:
User requests an entitlement from the Web Service application.
IdentityIQ provisions the entitlement successfully through the Web Service connector.
In addition, we want to create a ServiceNow SCTASK for tracking/operational purposes.
The SCTASK should be created every time the entitlement is requested, regardless of whether the user already has the entitlement or whether previous SCTASKs are open/closed.
Our goal is to leverage the existing ServiceNow Service Desk integration to create the SCTASK, but avoid creating additional provisioning transactions solely for the ticket creation activity.
Questions:
Has anyone implemented SCTASK creation using the existing ServiceNow Service Desk integration outside of the provisioning engine?
Is there a recommended pattern to create ServiceNow tickets from an After Provisioning Rule or Workflow while avoiding additional ProvisioningTransaction records?
try to implement a SailPoint After Operation Rule. This rule directly calls the ServiceNow Table API (sc_task) using HTTP/REST classes after the web service connector completes its task, avoiding extra ProvisioningTransaction records.
Extract Data: Write a SailPoint AfterOperation rule to parse the user details and successful entitlements from the ProvisioningPlan.
Call ServiceNow REST: Use Java HTTP classes inside the rule to POST a JSON payload directly to the ServiceNow Table API (/api/now/table/sc_task).
Attach to Application: Link this new rule to your Web Service Application XML so it fires automatically after every successful provisioning event.
i think you can’t use SDIM connection details , The SDIM application is structurally designed to handle provisioning requests for disconnected applications. I dont think you can use same. May be you can try below code
import sailpoint.object.IntegrationConfig;
IntegrationConfig sdimConfig = context.getObjectByName(IntegrationConfig.class, “ServiceNow Service Desk”);
if (sdimConfig != null) {
Reuse the username, password, and URL already configured in your environment
String username = (String) sdimConfig.getAttribute(“username”);
String encryptedPassword = (String) sdimConfig.getAttribute(“password”);
String baseUrl = (String) sdimConfig.getAttribute(“url”);
The process suggested by @jchinnapareddy would be the same, you would just pull the username, password, and baseUrl from your SNOW app.
You can then use the API as suggested to create a new SCTASK. Would need to configure the body of your request appropriately to send info like description, assignment group, etc
@nitinbibm In your case, as it is only specific to one application, you should handle this in after provisioning using APIs. You need to check with your SNOW team if you can make standard API calls or they can create a custom API for you (in our case, SNOW team not allowed using the standard ones, they created a custom one with necessary parameters to create the task).
Please also check with them on what is the preferred way to authenticate. Is it via username/password or via clientid/secret/refresh_token? If it is later, they need to generate this for you and you can store it in app xml in encrypted format.