Syskit Point
Schedule a DemoStart a Free TrialContact UsProduct Site
  • Syskit Point
  • Releases
    • Syskit Point Cloud
      • May 13, 2025
      • May 06, 2025
      • April 29, 2025
      • April 22, 2025
      • April 08, 2025
      • April 01, 2025
      • March 25, 2025
      • March 18, 2025
      • March 11, 2025
      • March 04, 2025
      • February 25, 2025
      • February 18, 2025
      • February 11, 2025
      • February 06, 2025
      • January 28, 2025
      • January 22, 2025
      • January 14, 2025
      • January 02, 2025
      • December 17, 2024
      • December 10, 2024
      • December 03, 2024
      • November 26, 2024
      • November 19, 2024
      • November 05, 2024
      • October 29, 2024
      • October 22, 2024
      • October 15, 2024
      • October 08, 2024
      • October 01, 2024
      • September 24, 2024
      • September 18, 2024
      • September 02, 2024
      • August 26, 2024
      • August 20, 2024
      • August 12, 2024
      • August 06, 2024
      • July 29, 2024
      • July 23, 2024
      • July 02, 2024
      • June 18, 2024
      • June 04, 2024
      • May 21, 2024
      • May 09, 2024
      • April 23, 2024
      • April 9, 2024
      • March 26, 2024
      • March 12, 2024
      • February 22, 2024
      • February 06, 2024
      • January 19, 2024
      • January 18, 2024
      • December 19, 2023
      • November 30, 2023
      • November 15, 2023
      • November 2, 2023
      • November 2, 2023 - Announcement
      • October 17, 2023
      • October 3, 2023
      • September 21, 2023
      • September 14, 2023
      • September 7, 2023
      • August 23, 2023
      • August 9, 2023
      • July 26, 2023
      • July 12, 2023
      • May 16, 2023
    • Syskit Point Data Center
      • Syskit Point 2025.2
        • Syskit Point 2025.2.91
        • Syskit Point 2025.2.90
        • Syskit Point 2025.2.86
        • Syskit Point 2025.2.82
        • Syskit Point 2025.2.78
      • Syskit Point 2024.6
        • Syskit Point 2024.6.73
        • Syskit Point 2024.6.71
        • Syskit Point 2024.6.70
      • Syskit Point 2024.5
        • Syskit Point 2024.5.67
        • Syskit Point 2024.5.65
      • Syskit Point 2024.4
        • Syskit Point 2024.4.60
        • Syskit Point 2024.4.54
        • Syskit Point 2024.4.52
      • Syskit Point 2024.3
        • Syskit Point 2024.3.48
      • Syskit Point 2024.2
        • Syskit Point 2024.2.45
      • Syskit Point 2024.1
        • Syskit Point 2024.1.43
        • Syskit Point 2024.1.41
      • Syskit Point 2023.5
        • Syskit Point 2023.5.39
      • Syskit Point 2023.4
        • Syskit Point 2023.4.1
        • Syskit Point 2023.4.0
      • Syskit Point 2023.3
      • Syskit Point 2023.2
      • Syskit Point 2023.1
        • Syskit Point 2023.1.3
        • Syskit Point 2023.1.2
        • Syskit Point 2023.1.1
        • Syskit Point 2023.1.0
      • Syskit Point 2022.5
        • Syskit Point 2022.5.1
        • Syskit Point 2022.5.0
      • Syskit Point 2022.4
        • Syskit Point 2022.4.1
        • Syskit Point 2022.4.0
      • Syskit Point 2022.3
        • Syskit Point 2022.3.1
        • Syskit Point 2022.3.0
      • Syskit Point 2022.2
        • Syskit Point 2022.2.3
        • Syskit Point 2022.2.2
        • Syskit Point 2022.2.1
        • Syskit Point 2022.2.0
      • Syskit Point 2021.12
      • Syskit Point 2021.11
      • Syskit Point 2021.10
      • Syskit Point 20
      • Syskit Point 19
        • Syskit Point 19.0.2
        • Syskit Point 19.0.1
        • Syskit Point 19.0.0
  • Requirements
    • Permission Requirements
    • Change Log
  • Set Up Point Cloud
    • Overview
    • Free Trial
    • Free Trial Limits
    • Manage Syskit Point Subscriptions
  • Set Up Point Data Center
    • Deployment
      • Overview
      • System Requirements
      • Deploy Syskit Point
      • Connect to Microsoft 365 Tenant
      • Set Up Custom Domain and SSL Certificate
      • Upgrade Syskit Point
      • Azure Networking
    • Activation
      • Activate Syskit Point
      • Free Trial Data Center
  • Licensing & Activation
    • Licensed Users Count
    • Activation Privacy Statement
  • Get to Know Syskit Point
    • The Syskit Point Starter Kit
    • Navigate Through Syskit Point
    • Collect Microsoft 365 Data
  • Microsoft 365 Inventory
    • Microsoft 365 Inventory Overview
    • Explore Your Microsoft 365 Dashboard
    • Sites
    • Microsoft Teams & Groups
    • Users
    • Copilot Readiness
  • Configuration
    • Syskit Point Configuration Guide
    • Assign and Manage Access to Syskit Point
    • Enable Microsoft Teams Activity Tracking
    • Configure Storage Management in Syskit Point
    • Set Up E-Mail
    • Connect Service Account
    • Customize Audit Logs Collection
    • Upgrade SQL to Managed Identity Authentication
    • Enable Power Platform Data Collection
    • Enable Power BI Data Collection
    • Ignore Service Account Activity Tracking
    • Customize License Reports
    • Customize E-Mails
    • Report Data Limits
    • Turn On Auditing
    • Exclude Users from Receiving Governance Tasks
    • Customize Dashboard
    • Customize Syskit Point Appearance
    • Configure Your Environment for Storage Management
    • Save Custom Views
    • Audit for Syskit Point Settings
    • Manage Connection
  • Reporting
    • Overview
    • External Sharing Reports
    • Access Reports
    • Audit Reports
    • Cleanup & Health Reports
    • Licenses Reports
    • Analytics Reports
    • Sensitivity Labels Reports
    • Power Platform Reports
    • Power BI Reports
  • Storage Management
    • Storage Management Overview
    • Free Up Storage
    • Storage Reports
    • Limit Storage Usage
    • Storage Versioning Limits
  • Governance & Automation
    • Syskit Point Tasks
    • Access Review
      • Enable Automated Access Review
      • Create and Apply Access Review Policies
      • Modify Access Review Options
      • Monitor Access Review in Syskit Point
      • Manually Request Access Review in Syskit Point
    • Lifecycle Management
      • Lifecycle Management - Deprecated
      • Identify Inactive Workspaces
      • Enable Lifecycle Management Automation
      • Monitor Lifecycle Management Tasks in Syskit Point
      • Run Lifecycle Management Actions in Syskit Point
    • Policies
      • Set Up Policies
      • Rules
      • Blocked Users with Assigned Licenses
      • Inactive Guest Users
      • Inactive Workspaces
      • Minimum Number of Owners
      • Maximum Number of Owners
      • Orphaned Workspaces
      • Orphaned Users
      • Tenant Storage Limit
      • Workspaces with Too Many Members
      • Workspaces with Shadow Users
      • Private Workspaces Shared with Everyone
      • Workspaces Without a Sensitivity Label
      • Apply Policies
      • Upgrade to Rules
    • Security and Compliance Checks
      • Security and Compliance Checks
      • Inactive Workspaces
      • Orphaned Workspaces
      • Inactive Guest Users
      • Blocked Users with Assigned Licenses
      • Workspaces with Not Enough Owners
      • Orphaned Users
      • Workspaces with Too Many Owners
      • Tenant Storage Limit
      • Workspaces with Too Many Members
      • Workspaces with Shadow Users
      • Private Workspaces Shared with Everyone
      • Workspaces Without a Sensitivity Label
    • Provisioning
      • Set Up Provisioning
      • Enable or Disable Provisioning
      • Register Yammer App
      • Enable Sensitivity Labels
      • Restrict Microsoft 365 Groups Creation
      • Templates
      • Content & Structure
      • Configure Provisioning Failure Notifications
      • Approval Processes
      • Approve/Reject Requests
      • Manage Requests
      • Hide Workspace Name
    • Access Requests
      • Set Up Access Requests
      • Create Access Requests
      • Apply Access Requests
      • Approval Process
    • Metadata
      • Manage Custom Metadata
      • Request Metadata Review
      • Monitor Metadata Review
    • Sensitivity Review
      • Request Sensitivity Review
      • Monitor Sensitivity Review
    • Privacy Review
      • Request Privacy Review
      • Monitor Privacy Review
    • Syskit Point Teams App
    • Schedule Reports
    • Configure Alerts
    • Manage Sensitivity Labels
  • Access Management
    • Track Microsoft 365 External Users and Their Activities
    • Check Access for Specific Microsoft 365 User
    • Copy User Permissions
    • Delete and Restore Users
    • View Permission Changes in Microsoft 365
    • Supervise Microsoft Teams Private Channels
    • Manage Private Channels Access
    • Complete Power Platform Actions
  • Integrations
    • Overview
    • Syskit Point API
    • Webhooks
    • Examples
      • Webhooks
      • ServiceNow
      • Jira
  • FAQ
    • Security
    • Security Self Assessment Questionnaire
    • Storage Management
    • Free Trial
    • Licensing
    • Activation
    • Purchasing and Discounts
    • Customer Terms
    • Privacy and Compliance
    • Partner Program
    • Site Storage Limits
    • Orphaned Users
    • Inactive Users Detection
    • Provisioning - Content & Structure
  • Troubleshooting
    • Export Diagnostic Logs
    • Setup Diagnostic Logs Export
    • Analytics and Usage Report Issues
  • Explore Syskit Point for Site Owners/Collaborators
    • Syskit Point for Collaborators
    • Resolve Governance Tasks
      • My Tasks
      • Complete Access Review Tasks
      • Complete Metadata Review Tasks
      • Complete Privacy Review Tasks
      • Complete Sensitivity Review Tasks
      • Resolve Inactive Workspaces Tasks
      • Resolve Lifecycle Management Tasks
      • Resolve Inactive Guest Users Tasks
      • Resolve Minimum Number of Owners Tasks
      • Resolve Maximum Number of Owners Tasks
      • Resolve Orphaned Workspaces Tasks
      • Resolve Tenant Storage Limit Task
    • Manage Access
      • Manage External Sharing
      • Manage Users
    • Manage Workspaces
      • Request New Workspace
      • Request Workspace Access
      • Manage Workspaces
      • Manage Custom Metadata
    • Reporting
      • Syskit Icons Glossary
      • Inventory Reports
      • Schedule Reports
      • Alerts
      • Cleanup & Health Reports
      • External Sharing Reports
      • Access Reports
Powered by GitBook
On this page
  • Setting up ServiceNow Integration
  • Integration script

Was this helpful?

  1. Integrations
  2. Examples

ServiceNow

This article showcases how you can utilize Syskit Point webhooks with ServiceNow.

PreviousWebhooksNextJira

Last updated 3 months ago

Was this helpful?

In this article, you can find steps to set up a ServiceNow integration with Syskit Point.

This setup will allow you to automate the provisioning of Microsoft 365 workspaces directly from ServiceNow by using Syskit Point’s API.

All the prerequisites needed for this to work are explained in the .

Setting up ServiceNow Integration

The first step is to configure OAuth credentials in ServiceNow.

  • Add the OAuth credentials in ServiceNow to allow ServiceNow to authenticate against Syskit Point’s API securely

  • Store OAuth credentials as System Properties

In ServiceNow, navigate to System Properties and add the following custom properties for secure access:

  • provisioning.client_id

    • Set this property to your Syskit Point Client ID.

  • provisioning.client_secret

    • Set this property to your Syskit Point Client Secret.

  • provisioning.tenant_id

    • Set this property to your Directory (Tenant) ID.

  • provisioning.application_id

    • Set this property to your Syskit Point API Application (Client) ID.

Next, create a custom request form in ServiceNow to capture the required details for provisioning Microsoft 365 workspaces.

This form will gather the information that Syskit Point needs to complete the provisioning process.

Define the Form Fields:

  • Go to Service Catalog > Maintain Items and create a new catalog item for “Workspace Provisioning.”

  • Add the following fields:

    • Site/Team Name (text): The name of the workspace to be provisioned. (Type: Single Line Text, Variable name: site_name, mandatory)

    • Site/Team Description (text): A brief description of the workspace. (Type: Single Line Text, Variable: site_description, mandatory)

    • Owners (multi-select dropdown): A field to select users who will have ownership rights. Configure this field to pull user data from the sys_user table. (Type: List Collector, Variable: owners, mandatory)

    • Members (multi-select dropdown): A field to select users to add as members, also referencing sys_user. (Type: List Collector, Variable: members, mandatory)

The image above shows the Request Form that Users can use to request provisioning of new workspaces.

Next, you need to set up an approval workflow.

  • Configure the catalog item’s workflow to include an approval step

    • This step ensures that the request is reviewed before triggering the Syskit Point API call

  • Use the ServiceNow workflow designer to adjust the workflow for your business process. Once approved, Run the Script script listed below.

Integration script

You can use the prepared script below as a part of your workflow.

servicenow.js
/*
This script integrates ServiceNow with Syskit Point's provisioning engine to create a new team based on a ServiceNow request item.
The script retrieves user emails and other request details from ServiceNow, formats the data, and sends it to Syskit Point's provisioning API.
 
Setup Instructions:
1. Replace `apiEndpoint` with the Syskit Point API URL for provisioning.
2. Store sensitive OAuth credentials (e.g., clientId, clientSecret, etc.) in ServiceNow properties for secure access.
3. Set `templateId` to 1 initially, as required by Syskit Point. This ID should be retrieved from Syskit Point based on your template setup.
 
Note: Ensure that each request variable (e.g., `site_name`, `owners`, `members`) is properly defined on the ServiceNow request item.
*/
 
(function executeAPIRequest(current) {
 // **API Endpoint Configuration**
 // The endpoint for Syskit Point's provisioning engine. Replace with your actual endpoint URL.
 var apiEndpoint = "https://your-api-url.com/v1.0/provision/teams"; // Example endpoint
 
 try {
 // **OAuth Credentials Configuration**
 // Retrieve OAuth credentials from ServiceNow properties for secure access.
 // These credentials are required to authenticate with Syskit Point's API.
 var clientId = gs.getProperty('provisioning.client_id', 'YOUR_CLIENT_ID'); // Replace with property name or actual ID
 var clientSecret = gs.getProperty('provisioning.client_secret', 'YOUR_CLIENT_SECRET'); // Replace with property name or actual secret
 var tenantId = gs.getProperty('provisioning.tenant_id', 'YOUR_TENANT_ID'); // Replace with property name or actual tenant ID
 var applicationId = gs.getProperty('provisioning.application_id', 'YOUR_APPLICATION_ID'); // Replace with property name or actual app ID
        
 // **Template ID for Provisioning**
 // Syskit Point uses template IDs to specify the type of resource to provision.
 // Set `templateId` to 1 or another ID based on your Syskit Point setup.
 var templateId = 1;
 
 // **Retrieve ServiceNow Request Variables**
 // Get site name, description, and other details from the current ServiceNow request item.
 var siteName = current.variables.site_name ? String(current.variables.site_name) : "Default Site Name";
 var siteDescription = current.variables.site_description ? String(current.variables.site_description) : "Default Description";
 
 // **Retrieve Owners and Members**
 // Owners and members should be provided as comma-separated sys_id values.
 // This function retrieves their email addresses based on these sys_ids.
 var owners = getEmailsFromSysIds(current.variables.owners);
 var members = getEmailsFromSysIds(current.variables.members);
 
 // **Prepare the API Request Payload**
 // Format the request body to meet Syskit Point's provisioning API requirements.
 var requestBody = {
 "templateId": templateId,
 "displayName": siteName,
 "desiredUrl": createSlug(siteName), // Generate a URL-friendly slug from the site name
 "owners": owners,
 "members": members,
 "description": siteDescription,
 "comment": "Auto-generated by ServiceNow " + current.number,
 "metadata": {},
 "isPrivate": true // Default to private; adjust as needed for your use case
 };
 
 // **Log the request payload for debugging and verification**
 gs.log("Prepared request body: " + JSON.stringify(requestBody), "SiteRequest");
 
 // **Execute the Provisioning API Call**
 // Retrieve the OAuth bearer token and call Syskit Point's API with the formatted request payload
 var response = callProvisioningAPI(getBearerToken(clientId, clientSecret, tenantId, applicationId), requestBody);
 gs.log("API Response: " + response, "SiteRequest");
 
 } catch (e) {
 // **Error Handling**
 // Log any unexpected errors for troubleshooting purposes
 gs.error("Unexpected error in executeAPIRequest: " + e.message, "SiteRequest");
 }
 
 // **Helper Function: Create a URL-friendly Slug**
 // This function converts a string (e.g., site name) into a URL-friendly slug by removing spaces and special characters
 function createSlug(text) {
 return text
 .toString()
 .toLowerCase()
 .trim()
 .replace(/[^\w\s-]/g, '') // Remove non-word characters
 .replace(/\s+/g, '-') // Replace spaces with hyphens
 .replace(/-+/g, '-'); // Collapse multiple hyphens
 }
 
 // **Helper Function: Get Emails from sys_id List**
 // This function accepts a comma-separated list of sys_ids and returns an array of corresponding email addresses.
 function getEmailsFromSysIds(sysIds) {
 sysIds = String(sysIds); // Ensure sysIds is treated as a string
 var emails = [];
 
 if (!sysIds) return emails;
 
 // Split and retrieve each email for corresponding user sys_ids
 var idList = sysIds.split(',');
 idList.forEach(function(userSysId) {
 var userGR = new GlideRecord('sys_user');
 if (userGR.get(userSysId)) {
 emails.push(userGR.getValue("email"));
 }
 });
 return emails;
 }
 
 // **Helper Function: Get OAuth Bearer Token**
 // This function retrieves an OAuth token needed to authenticate with Syskit Point's provisioning API.
 function getBearerToken(clientId, clientSecret, tenantId, applicationId) {
 try {
 var authUrl = "https://login.microsoftonline.com/" + tenantId + "/oauth2/v2.0/token";
 var authRequest = new sn_ws.RESTMessageV2();
 authRequest.setEndpoint(authUrl);
 authRequest.setHttpMethod("POST");
 authRequest.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
 
 var requestBody = "client_id=" + clientId + "&client_secret=" + clientSecret +
 "&grant_type=client_credentials&scope=" + applicationId + "/.default";
 authRequest.setRequestBody(requestBody);
 
 var authResponse = authRequest.execute();
 var authResponseBody = JSON.parse(authResponse.getBody());
 return authResponseBody.access_token;
 } catch (e) {
 gs.error("Error retrieving bearer token: " + e.message, "SiteRequest");
 return null;
 }
 }
 
 // **Helper Function: Call the Provisioning API**
 // This function sends a POST request to Syskit Point's provisioning API with the bearer token and formatted request payload.
 function callProvisioningAPI(token, requestBody) {
 try {
 var request = new sn_ws.RESTMessageV2();
 request.setEndpoint(apiEndpoint);
 request.setHttpMethod("POST");
 request.setRequestHeader("Content-Type", "application/json");
 request.setRequestHeader("Authorization", "Bearer " + token);
 request.setRequestBody(JSON.stringify(requestBody));
 
 var response = request.execute();
 return response.getBody();
 } catch (e) {
 gs.error("Error calling provisioning API: " + e.message, "SiteRequest");
 return null;
 }
 }
 
})(current);

By following these steps, you can integrate ServiceNow with Syskit Point, enabling seamless provisioning of Microsoft 365 resources directly from your service desk.

This process streamlines approvals, enhances resource management, and provides your users with a unified experience.

3rd Party Integrations Using Webhooks article
Request Form to request provisioning of new workspaces
ServiceNow workflow designer