Automation of business applications in ServiceNow Catalog items from a Third-party application

User480943
Tera Contributor

Dear Team,

 

I am looking for an idea to automate the process to import applications into ServiceNow from SailPoint IIQ and map them into Catalog items so that users can raise a request for each of the catalogue items (Applications from SailPoint). The SailPoint is already integrated with ServiceNow through the Mid server.

Currently, a few of the applications have been created manually as a catalogue item and they are mapped to corresponding Services also.

Ask how we can easily automate the same for any number of applications added in SailPoint, and the same will be available in ServiceNow so that users can raise a request in ServiceNow and close the request, so that access provisioning happens automatically in SailPoint from ServiceNow.

1 ACCEPTED SOLUTION

Community Alums
Not applicable

Hello, 

 

There are 2 thoughts in my mind right now:

A. Importing catalog items from the Sailpoint platform in an Excel file. Which may include columns like Name, Short Description, Description, and List of Questions, etc. Later you can import it in ServiceNow and map those fields with Maintain items table in ServiceNow.

 

B. ServiceNow <---> Sailpoint Integration:

You can find detailed information about Integrating Sailpoint IIQ with ServiceNow Service Catalog here.

 

Automating the process of creating catalog items for the respective applications/roles associated with SailPoint in the ServiceNow Service Portal is possible using ServiceNow's scripting capabilities. In this scenario, you can leverage the ServiceNow platform's scripting and API features to achieve automation. Here's a step-by-step solution:

  1. Prerequisites:
    Access to the ServiceNow instance with admin privileges.
    SailPoint integration with ServiceNow is already set up.
  2. Understand SailPoint Roles and Applications:
    Make sure you have a clear understanding of the SailPoint roles and applications that need to be created as catalog items in the Service Portal.
  3. Script to Fetch SailPoint Data:
    Write a script that fetches the list of SailPoint roles and applications. The script should communicate with the SailPoint API or database (if available) to obtain this information.
  4. Script to Create Catalog Items:
    Write a script that takes the data fetched in the previous step and uses it to create catalog items in ServiceNow. For each SailPoint role or application, a corresponding catalog item should be created in the Service Portal.
  5. Automation Schedule:
    Decide on the frequency of the automation. You can set up a scheduled job in ServiceNow to run the script periodically and update the catalog items based on any changes in SailPoint.
  6. Error Handling:
    Implement appropriate error-handling mechanisms in the scripts to handle any potential issues during the automation process.

Here's a generic example of what the script might look like(**not tested**):

// Step 4: Script to fetch SailPoint data (Assuming SailPoint API returns JSON data)
function fetchSailPointData() {
  var apiUrl = 'https://sailpoint-api.example.com/roles'; // Replace with actual SailPoint API URL
  var username = 'your_sailpoint_api_username';
  var password = 'your_sailpoint_api_password';

  var headers = {
    'Authorization': 'Basic ' + GlideStringUtil.base64Encode(username + ':' + password)
  };

  var response = GlideHTTP.get(apiUrl, headers);

  if (response && response.statusCode === 200) {
    var data = JSON.parse(response.body);
    return data; // An array of SailPoint roles and applications
  } else {
    gs.error('Failed to fetch SailPoint data. Status code: ' + response.statusCode);
    return [];
  }
}

// Step 5: Script to create catalog items in ServiceNow
function createCatalogItems(sailPointData) {
  var catalogTableName = 'your_catalog_items_table_name'; // Replace with the actual catalog table name
  var catalogItemGR = new GlideRecord(catalogTableName);
  
  sailPointData.forEach(function(item) {
    var catalogItem = catalogItemGR.create();
    catalogItem.name = item.name; // Assuming the SailPoint data has a 'name' field for application/role name
    catalogItem.description = item.description; // Assuming the SailPoint data has a 'description' field
    // Set other fields as needed based on your table structure and SailPoint data
    catalogItem.insert();
  });

  gs.info('Catalog items created successfully.');
}

// Step 6: Automation schedule
var sailPointData = fetchSailPointData();
if (sailPointData.length > 0) {
  createCatalogItems(sailPointData);
}

Please note that this is a simplified example, and you may need to modify the scripts based on your actual SailPoint API structure, authentication method, and the ServiceNow catalog table schema.

Hit the like button if this helps you in any way! Don't forget to accept it as a solution:)

 

Thanks,

Prasad

View solution in original post

3 REPLIES 3

Community Alums
Not applicable

Hello @User480943 ,

 

This will give you a way to achieve your requirement in a similar manner:

In a similar project, we achieved this by setting up a seamless integration between ServiceNow and SAP. Users could request any SAP product through the ServiceNow service portal, and we made sure their requests were efficiently managed.

Here's how we implemented it:

  1. We manually configured all the catalog items in the Service Catalog, making sure to include all the necessary variables for each catalog item/SAP service.
  2. The magic happened with the integration between ServiceNow and SAP using REST APIs.
    1. When a user submitted a request for an SAP product in the service portal, the request data was instantly sent to the SAP platform. This meant that the same request record was created on SAP's request table using a POST method.
    2. During the request fulfillment process, we ensured that all the necessary catalog tasks were created in the ServiceNow request management system.
    3. To keep everyone in the loop, we also set up a GET API call to sync the current status of the request on the SAP platform back to the Service portal. This way, users could easily track the progress of their requests.

With a similar approach, we can automate the import of applications from SailPoint into ServiceNow and establish a seamless request process. Users will be able to raise requests for each of the catalog items, and the whole access provisioning process will be smooth sailing between ServiceNow and SailPoint.

 

If this helped you in any way, please hit the like button/mark it helpful. So it will help others to get the correct solution.

regards,
Prasad

Is there any way to create the catalogue items automatically for the respective applications/roles associated with SailPoint? As there are more than 100 roles/applications available in SailPoint we want to automate that process.

Community Alums
Not applicable

Hello, 

 

There are 2 thoughts in my mind right now:

A. Importing catalog items from the Sailpoint platform in an Excel file. Which may include columns like Name, Short Description, Description, and List of Questions, etc. Later you can import it in ServiceNow and map those fields with Maintain items table in ServiceNow.

 

B. ServiceNow <---> Sailpoint Integration:

You can find detailed information about Integrating Sailpoint IIQ with ServiceNow Service Catalog here.

 

Automating the process of creating catalog items for the respective applications/roles associated with SailPoint in the ServiceNow Service Portal is possible using ServiceNow's scripting capabilities. In this scenario, you can leverage the ServiceNow platform's scripting and API features to achieve automation. Here's a step-by-step solution:

  1. Prerequisites:
    Access to the ServiceNow instance with admin privileges.
    SailPoint integration with ServiceNow is already set up.
  2. Understand SailPoint Roles and Applications:
    Make sure you have a clear understanding of the SailPoint roles and applications that need to be created as catalog items in the Service Portal.
  3. Script to Fetch SailPoint Data:
    Write a script that fetches the list of SailPoint roles and applications. The script should communicate with the SailPoint API or database (if available) to obtain this information.
  4. Script to Create Catalog Items:
    Write a script that takes the data fetched in the previous step and uses it to create catalog items in ServiceNow. For each SailPoint role or application, a corresponding catalog item should be created in the Service Portal.
  5. Automation Schedule:
    Decide on the frequency of the automation. You can set up a scheduled job in ServiceNow to run the script periodically and update the catalog items based on any changes in SailPoint.
  6. Error Handling:
    Implement appropriate error-handling mechanisms in the scripts to handle any potential issues during the automation process.

Here's a generic example of what the script might look like(**not tested**):

// Step 4: Script to fetch SailPoint data (Assuming SailPoint API returns JSON data)
function fetchSailPointData() {
  var apiUrl = 'https://sailpoint-api.example.com/roles'; // Replace with actual SailPoint API URL
  var username = 'your_sailpoint_api_username';
  var password = 'your_sailpoint_api_password';

  var headers = {
    'Authorization': 'Basic ' + GlideStringUtil.base64Encode(username + ':' + password)
  };

  var response = GlideHTTP.get(apiUrl, headers);

  if (response && response.statusCode === 200) {
    var data = JSON.parse(response.body);
    return data; // An array of SailPoint roles and applications
  } else {
    gs.error('Failed to fetch SailPoint data. Status code: ' + response.statusCode);
    return [];
  }
}

// Step 5: Script to create catalog items in ServiceNow
function createCatalogItems(sailPointData) {
  var catalogTableName = 'your_catalog_items_table_name'; // Replace with the actual catalog table name
  var catalogItemGR = new GlideRecord(catalogTableName);
  
  sailPointData.forEach(function(item) {
    var catalogItem = catalogItemGR.create();
    catalogItem.name = item.name; // Assuming the SailPoint data has a 'name' field for application/role name
    catalogItem.description = item.description; // Assuming the SailPoint data has a 'description' field
    // Set other fields as needed based on your table structure and SailPoint data
    catalogItem.insert();
  });

  gs.info('Catalog items created successfully.');
}

// Step 6: Automation schedule
var sailPointData = fetchSailPointData();
if (sailPointData.length > 0) {
  createCatalogItems(sailPointData);
}

Please note that this is a simplified example, and you may need to modify the scripts based on your actual SailPoint API structure, authentication method, and the ServiceNow catalog table schema.

Hit the like button if this helps you in any way! Don't forget to accept it as a solution:)

 

Thanks,

Prasad