You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: content/blog/no-code-integration-of-hpe-greenlake-cloud-with-servicenow.md
+19-18Lines changed: 19 additions & 18 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -4,6 +4,9 @@ date: 2025-03-18T07:49:59.220Z
4
4
author: Didier Lalli
5
5
authorimage: /img/didier-lalli-192x192.png
6
6
disable: false
7
+
tags:
8
+
- hpe-greenlake-cloud
9
+
- webhooks
7
10
---
8
11
<style>
9
12
li {
@@ -13,19 +16,17 @@ li {
13
16
}
14
17
</style>
15
18
16
-
17
-
18
19
In my [previous tutorial](https://developer.hpe.com/blog/getting-started-with-the-hpe-greenlake-cloud-eventing-framework/) on webhooks for HPE GreenLake cloud, I used a no-code/low-code platform called [Make.com](https://www.make.com/) to implement a webhook handler. The webhook handler’s URL endpoint was then registered with HPE GreenLake cloud to subscribe to audit log events from the platform. In my simplistic use case, I stored these events in a Google Sheet as they arrived.
19
20
20
21
For this handler, I was responsible for taking care of the handshake initiated by HPE GreenLake cloud when the new webhook was registered. This is a security feature that uses a secret key shared by HPE GreenLake cloud and the webhook handler. The following diagram illustrates the mechanics involved in this process.
As this implementation was working well, I thought I would reuse this low-code handler technique to demonstrate another use case of an integration with an IT service management (ITSM) platform. I decided to use **ServiceNow** because it’s a very popular ITSM platform and because it provides a very nice way for developers to fire up a [personal developer instance](https://devportaluat.service-now.com/dev.do#!/learn/learning-plans/washingtondc/new_to_servicenow/app_store_learnv2_buildmyfirstapp_washingtondc_personal_developer_instances) (PDI) and get their work done.
25
+
As this implementation was working well, I thought I would reuse this low-code handler technique to demonstrate another use case of an integration with an IT service management (ITSM) platform. I decided to use ServiceNow because it’s a very popular ITSM platform and because it provides a very nice way for developers to fire up a [personal developer instance](https://devportaluat.service-now.com/dev.do#!/learn/learning-plans/washingtondc/new_to_servicenow/app_store_learnv2_buildmyfirstapp_washingtondc_personal_developer_instances) (PDI) and get their work done.
25
26
26
27
## Problems, incidents and change orders
27
28
28
-
Most of these ITSM platforms are managed through the lifecycle of different types of tickets (New, In Progress, Resolved). One of the most common ticket types is called **Incident**, which is the type of ticket that users might open when they face an issue and want to raise it to their IT team for resolution. In most cases, end users use a web portal to do this. However, there is also an API to programmatically do it, and this is exactly what I’m going to use in this blog.
29
+
Most of these ITSM platforms are managed through the lifecycle of different types of tickets (New, In Progress, Resolved). One of the most common ticket types is called *Incident*, which is the type of ticket that users might open when they face an issue and want to raise it to their IT team for resolution. In most cases, end users use a web portal to do this. However, there is also an API to programmatically do it, and this is exactly what I’m going to use in this blog.
29
30
30
31
## What’s the right API then?
31
32
@@ -76,7 +77,7 @@ else:
76
77
77
78
Nevertheless, this script was very helpful because I now understand:
78
79
79
-
* The API I need to use is the table API and the table name to be used is called incident, thus the API call: **POST /api/now/table/incident**
80
+
* The API I need to use is the table API and the table name to be used is called incident, thus the API call: POST /api/now/table/incident
80
81
* The (minimal) payload I need to pass in the API call
81
82
* The necessary headers
82
83
* The response code expected if it worked: 201
@@ -144,23 +145,23 @@ For more information, you can refer to the chapter *“Getting started with Make
144
145
145
146
Next, I’ll dive into the properties of the **HTTP Make a request** module that needs to be configured based on the details collected from the Python script:
146
147
147
-
***The URL endpoint of my ServiceNow instance**: *https://{your-instance}/api/now/table/incident*
148
-
***Method**: *POST*
149
-
* Two custom headers for **Accept** and **Content-Type** both set to *application/json*
150
-
***Body type**: *Raw*
148
+
* The URL endpoint of my ServiceNow instance: *https://{your-instance}/api/now/table/incident*
149
+
* Method: *POST*
150
+
* Two custom headers for Accept and Content-Type both set to *application/json*
151
+
* Body type: *Raw*
151
152
152
153

153
154
154
-
To setup the JSON payload as shown below, I need to first configure the first step of my webhook scenario to use the JSON payload of the ***Expiring Subscriptions*** event described earlier.
155
+
To setup the JSON payload as shown below, I need to first configure the first step of my webhook scenario to use the JSON payload of the **Expiring Subscriptions** event described earlier.
155
156
156
-
I then need to set up the JSON payload (***Request content*** as shown below) with ServiceNow information such as:
157
+
I then need to set up the JSON payload (**Request content** as shown below) with ServiceNow information such as:
157
158
158
-
* The ***short description*** (for example, the subscription type is expiring soon)
159
-
* The ***description*** (for example, License <licensetype> expires on <date>)
160
-
* The ***category***, and the ***subcategory***
161
-
* The level of ***urgency*** (high, medium, low), the level of ***priority*** (high, medium, low) and the level of the ***impact*** (high, medium, low)
162
-
* The ***caller_id***
163
-
* The ***service***
159
+
* The *short description* (for example, the subscription type is expiring soon)
160
+
* The *description* (for example, License <licensetype> expires on <date>)
161
+
* The *category*, and the *subcategory*
162
+
* The level of *urgency* (1 to 5) and the level of the *impact* (1 to 5)
163
+
* The *caller_id*
164
+
* The *service*
164
165
165
166
Once this is in place, I can build the Request content and drag/drop items from the JSON input payload (shown in red) into the Request content of the HTTP call as shown below:
166
167
@@ -170,7 +171,7 @@ It’s important not to forget to specify username and password obtained when cr
170
171
171
172
## Putting it all together
172
173
173
-
Voila! Now the Webhook scenario is in place. I need to subscribe to the event with HPE GreenLake cloud. As noted in my first [blog](https://developer.hpe.com/blog/getting-started-with-the-hpe-greenlake-cloud-eventing-framework/) post, I can apply the same logic, except that this time I will subscribe to ***Expiring Subscriptions*** event as shown below:
174
+
Voila! Now the Webhook scenario is in place. I need to subscribe to the event with HPE GreenLake cloud. As noted in my first [blog](https://developer.hpe.com/blog/getting-started-with-the-hpe-greenlake-cloud-eventing-framework/) post, I can apply the same logic, except that this time I will subscribe to **Expiring Subscriptions** event as shown below:
174
175
175
176

0 commit comments