ServiceNow Integration
ServiceNow integration is supported with basic authentication or OAuth. The user will need enough permissions to create change requests.
Preparing for ServiceNow Integration with FlexDeploy
See ServiceNow Required Permissions and ServiceNow OAuth Support for details.
Create Change Management Instance
Property Name | Property Code | Required | Description |
---|---|---|---|
ServiceNow URL |
| Yes | The URL for accessing ServiceNow. |
ServiceNow User Name |
| Yes | A local ServiceNow service account user with a non-expiring password. |
ServiceNow Password |
| No* | The password for the ServiceNow User Name above. Note that encrypted properties are stored in Credential Store (Local or External) and can be configured using Edit button next to credential name drop down. Alternatively, you can reuse single credential for multiple properties also, in which case you should name that credential appropriately. Required for the following Auth Types, BasicAuth and OAuthResourceOwner |
ServiceNow Auth Type |
| Yes | Authentication method for connecting to ServiceNow, BasicAuth, OAuthResourceOwner, OAuthJWTAssertion. Defaults to BasicAuth.  |
ServiceNow Client ID |
| No* | The auto-generated unique ID of the application. The instance uses the client ID when requesting an access token. Required for the following Auth Types, OAuthResourceOwner and OAuthJWTAssertion. |
ServiceNow Client Secret |
| No* | The shared secret string that both the instance and the client application use to authorize communications with one another. The instance uses the client secret when requesting an access token. (Encrypted).  Required for the following Auth Types, OAuthResourceOwner and OAuthJWTAssertion. |
ServiceNow Keystore Path |
| No* | ServiceNow Keystore Path (path to the jks file).  Required for the following Auth Types, OAuthJWTAssertion. |
ServiceNow Keystore Passphrase |
| No* | Java keystore passphrase for the ServiceNow Keystore (Encrypted).  Required for the following Auth Types, OAuthJWTAssertion. |
ServiceNow Certificate Alias |
| No* | Private certificate alias.  Required for the following Auth Types, OAuthJWTAssertion. |
ServiceNow Certificate Passphrase |
| No* | Passphrase for the ServiceNow Certificate (Encrypted).  Required for the following Auth Types, OAuthJWTAssertion. |
ServiceNow JWT Verifier Map Key ID |
| No* | ServiceNow JWT Verifier Map Key ID. Required for the following Auth Types, OAuthJWTAssertion. |
ServiceNow Certificate Algorithm |
| No* | Algorithm used for the certificate. Defaults to RS256. Required for the following Auth Types, OAuthJWTAssertion. |
ServiceNow Refresh Token Lifespan |
| No | The number of seconds that a refresh token is valid. The instance uses the lifespan value when requesting a refresh token. By default, refresh tokens expire in 100 days (8640000 seconds). |
ServiceNow Request GET URL |
| No | The URL to get the change request details as json response.Â
/api/now/table/u_instance_change?sysparm_query=number%3D{SN_CHANGE_NUMBER}&sysparm_fields=number,state,active,approval Adding &sysparm_display_value=true to the end of the URL will return the display value for things like state. For example instead of returning state = 3, the value of state = Ready would be returned. |
ServiceNow Navigation Request URL |
| No | The URL to open ServiceNow and navigate to the Change ticket associated to the project workflow execution
|
ServiceNow Request POST URL |
| No | The URL to create a change request.
|
Approved Check Script |
| No | A Groovy expression which determines whether a task for the change ticket is approved or not. The expression must return a boolean, and has access to the following variables:
If the Approved Check Script is left blank, the default implementation is to return true if the "approval" field of the ticket is set to "approved". Simple Example which is used by defaultTICKET.approval == 'approved' Example that checks myfield value specific to target environment(TICKET.myfield == 'UATApproved' && FD_ENVIRONMENT_CODE='UAT') || (TICKET.myfield == 'PRODApproved' && FD_ENVIRONMENT_CODE='PROD') If you want to see values that can be used, enable Following example is to check if current date time is between start_date and end_date defined on Ticket. Let's assume format for the date string returned and TimeZone as GMT. Check if now is between start_date and end_date defined on ticketimport java.util.Date;
import java.util.TimeZone;
import flexagon.ff.common.core.utils.FlexDateTimeUtils;
if(TICKET.approval == 'approved' && TICKET.start_date != null && TICKET.end_date != null)
{
Date start = FlexDateTimeUtils.stringToDate(TICKET.start_date, "yyyy-MM-dd HH:mm:ss", TimeZone.getTimeZone("GMT"));
Date end = FlexDateTimeUtils.stringToDate(TICKET.end_date, "yyyy-MM-dd HH:mm:ss", TimeZone.getTimeZone("GMT"));
Date now = new Date();
if(now.after(start) && now.before(end))
{
return true;
}
}
return false; |
Rejected Check Script |
| No | A Groovy expression which determines whether a task for a change ticket is rejected or not. The expression must return a boolean, and as has access to the following variables:
If the Rejected Check Script is left blank, the default implementation is to return true if the "approval" field of the ticket is set to "rejected". Simple Example which is used by defaultExample that checks myfield value specific to target environment |
Additional Info Script |
| No | A Groovy expression which determines additional information to add to an external approval when it is approved or rejected. The expression must return a Map<String, String> and have an entry with the key of "notes" for the value to get added to external approval as a task note. Script has access to the following variables:
Example where ServiceNow Approver(s) and time of approval are added to task notes |
Don't Poll |
| No | Returns whether FlexDeploy should poll ServiceNow to check the change tickets for Approval/Rejection. The default value is false, which means polling will occur. Only check this box if you are using the FlexDeploy REST API to communicate ticket approval/rejection. If you don’t want poll, then you can set up the ServiceNow Integration with FlexDeploy via Incoming Webhook and automate the approval/rejection of the tasks in FlexDeploy based on ServiceNow change ticket status. You can configure to poll and incoming webhook at the same time also. |
ServiceNow Available TICKET Variables
Within the script properties on the ServiceNow Instance. The following values are available to you via the TICKET object to use in your script logic. For example, TICKET.approval would return the approval value of the ServiceNow change.
Field Code | Display Name | Description | Data Type | Required |
---|---|---|---|---|
short_description | Short Description | A short description for the change ticket | String | No |
description | Description | A description for the change ticket | String | No |
state | State | Â | String | No |
sys_class_name | Sys Class Name | Â | String | No |
approval | Approval | Â | String | No |
start_date | Planned Start Date | Â | String | No |
end_date | Planned End Date | Â | String | No |
closed_by | Closed By | Â | String | No |
impact | Impact | Â | String | No |
priority | Priority | Â | String | No |
risk | Risk | Â | String | No |
requested_by | Requested By | Â | String | No |
assignment_group | Assignment Group | Â | String | No |
assigned_to | Assigned To | Â | String | No |
category | Category | Â | String | No |
cmdb_ci | CI | Â | String | No |
type | Type | Â | String | No |
Linking ServiceNow Change Ticket with FlexDeploy Deployments
If Auto Create Ticket is not enabled, then user must provided the Change Ticket number(s) for the deployment. See Link Change Ticket(s) with Deployments.
ServiceNow integration with FlexDeploy via Incoming Webhook
See ServiceNow Integration with FlexDeploy via Incoming Webhook for details on notifying FlexDeploy when Change Ticket is approved or rejected.
Â
- style