Technology Blogs by Members
Explore a vibrant mix of technical expertise, industry insights, and tech buzz in member blogs covering SAP products, technology, and events. Get in the mix!
cancel
Showing results for 
Search instead for 
Did you mean: 
Abhinav_Sharma
Contributor

Introduction


After really a long gap of almost 8 years I am writing this blog and sharing my experience of using FLP notification service in SAPUI5. Hope this will help my fellow community members in some of the difficult situations the may face.

Notifications are ubiquitous in technical arena. It not only makes the user experience best of its kind, but at times, a right notification may make your life much easier.

In this blog, we will see how we can enable notifications in BTP Launchpad service and send the notifications from SAPUI5 applications.

A special thanks to @mariusobert for writing such an excellent introductory blog Sending Notifications from SAP BTP Applications to the SAP Fiori Launchpad that inspired me to try the notification service with SAPUI5 and @enric101 for explaining the notification service using Postman in his blog Send push notification to SAP BTP Launchpad via HTTP .

Having said that, let us begin the journey.

Groundwork


Setup BTP Launchpad Service


Notifications can be sent to SAP Portal Service and SAP Launchpad Service. These services should be provisioned and setup in Business Technology Platform (BTP).

If you have not done it before, refer tutorial Create Your First Launchpad Site

Enable Notification


Enable the Notifications settings in Site Manager – Settings.

Keep following Information handy to create destinations in BTP Destinations

  • Host

  • OAuth 2.0 Client ID

  • Client Secret

  • Token Endpoint



Enable Notification Settings



Setup a destination in BTP Destinations


Create notification destination (OAuth2ClientCredentials) in BTP with following details.


OAuth2ClientCredentials - Destination in BTP


 

Enable Show Notifications in Launchpad site


Go to Site setting of FLP site that you created and turn Show Notification to true.


 

Integration of Notification service in SAPUI5


As the ground work is now completed, we can move to the next step. In this step we will learn how to integrate the notification service in SAPUI5.

This step can be further sub-divided into following steps:

  1. Publish Notification Type.

  2. Configure the destination in xs-app.json

  3. Consume Notification service from SAPUI5.


Let us follow above steps one by one.

Publish Notification Type:


Before sending any notification from SAPUI5, notification type must be published. This can either be setup by administrator or developer. This is generally controlled by Support admins or Business admins and separate application can be created for them using the same principles.

For the purpose of this blog, I will be using Postman HTTP client to create notification types. You can refer Send push notification to SAP BTP Launchpad via HTTP

You can also refer Notification Properties as mentioned in the Developing Cloud Foundry Applications With Notifications

Two important steps to perform:

Fetch the X-CSRF-TOKEN by adding x-csrf-token = fetch in request Headers


Make a POST call to NotificationTypes along with the payload of service


We will be creating the REQUISITIONS notification types. You can refer the following JSON payload.
{
"NotificationTypeKey": "REQUISITIONS",
"NotificationTypeVersion": "0.1",
"Templates": [
{
"Language": "en",
"TemplatePublic": "Requisitions",
"TemplateSensitive": "Requisition Sensitive Info",
"TemplateGrouped": "Purchase Requisitions",
"Subtitle": "Requisition Approval for {req_no} for {supplier_name}"
}
]
}

Execute the NotificationTypes service and the notification type will be published. This notification type can be later used to send the notification from SAPUI5.


 

Configure destination in xs-app.json


Configure the destination usage in xs-app.json file of SAPUI5 module
{
"source": "^/v2/(.*)$",
"csrfProtection": false,
"authenticationType": "xsuaa",
"destination": "SAP_Notifications"
},


 

Send notifications from SAPUI5


For simplicity, I have created a button in SAPUI5 project and sending the notification on click of button. The payload is fixed, however, it can be dynamic using models in SAPUI5.

Following code is written on the press action of the button.
sendNotification : function(oEvent){
var appId = this.getOwnerComponent().getManifestEntry("/sap.app/id");
var appPath = appId.replaceAll(".", "/");
var appModulePath = jQuery.sap.getModulePath(appPath);
var xsrfUrl = appModulePath + "/v2/NotificationType.svc/NotificationTypes";
var notificationUrl = appModulePath + "/v2/Notification.svc/Notifications";
var token;
var oPostData = {
"OriginId": "NA",
"NotificationTypeKey": "REQUISITIONS",
"NotificationTypeVersion": "0.1",
"Priority": "High",
"Properties": [
{
"Key": "req_no",
"Language": "en",
"Value": <replace with Requisition Number>
"Type": "String",
"IsSensitive": false
},
{
"Key": "supplier_name",
"Language": "en",
"Value": <replace with Supplier Name>
"Type": "String",
"IsSensitive": true
}
],
"Recipients": [
{
"RecipientId": <replace with receipient Id>
}
]
};

$.ajax({
url: xsrfUrl,
type: "GET",
beforeSend: function (xhr) { xhr.setRequestHeader("X-CSRF-Token", "Fetch"); },
complete: function (xhr) {
token = xhr.getResponseHeader("X-CSRF-Token");
$.ajax({
url: notificationUrl,
beforeSend: function (xhr) {
xhr.setRequestHeader('X-CSRF-Token', token);
xhr.setRequestHeader('Content-Type', "application/json; charset=utf-8");
xhr.setRequestHeader("Content-Type", "application/json");
xhr.setRequestHeader("Accept", "*/*");
},
type: "POST",
async: false,
data: JSON.stringify(oPostData)
})
done(function (data, response) {
MessageBox.success("Notification sent successfully");
}.bind(this))
.fail(function (error) {
MessageBox.error("Notification not sent.");
}.bind(this));

}
});
}

Now the easy part, Build the project and deploy it on BTP.

Once deployed, click on the Notification button and notification is sent to Launchpad site.


Click on Notification button


 


Notification is available on FLP site



References


You can also refer SAP help Enabling Notifications for Custom Apps on SAP BTP Cloud Foundry

 
5 Comments
0 Kudos

Hello,

Thank you for this post. I'm learning the Notification service now, but the difference from you is I want to create and send a Notification also from Postman. I generated and set Bearer token and x-csrf-token, created a NotificationType, but then I was faced with some issues:

  1. When I try to perform GET https://notifications.cfapps.eu10.hana.ondemand.com/v2/Notification.svc/Notifications

     

    in the Postman there is an issue like "Not implemented", so I'm not able to see current Notifications. Is it correct behaviour? (But POST call to create Notification was successful)


  2. When I checked the launchpad, there are no Notifications, but I see NotificationTypes in the User Settings 

Do you have an idea why Notifications don't appear?

Thanks and Best regards,

Palina

Abhinav_Sharma
Contributor
0 Kudos
Hi Palina,

Regarding first, When I try to perform GET https://notifications.cfapps.eu10.hana.ondemand.com/v2/Notification.svc/Notifications

You can not use the GET method of above endpoint as it is not available,

 

Regarding second, You have to send the POST request to

https://notifications.cfapps.eu10.hana.ondemand.com/v2/Notification.svc/Notifications to send the notifications.

First you have to get the XSRF token either by calling endpoint - /v2/Notification.svc or
/v2/NotificationType.svc.

Once you have the XSRF token, you can call POST method of /v2/Notification.svc/Notifications. You need to specify the correct payload, which includes the notification types that you published earlier.

Refer help Developing Cloud Foundry Applications With Notifications for more details.

Hope it helps.
0 Kudos

Hi,

Thanks for your response, but I did exactly the same.

The problem I've faced is that the Notifications I've created in Postman don't appear on the Launchpad (but I managed to get them via Postman with grant type: password credential).

Do you have any ideas why it happens?

Best regards,

Palina

huijiezhang
Advisor
Advisor
0 Kudos
Hi Abhinav,

Is it possible to send a notification to all users instead of specifying recipients one-by-one?

Thank you
Vikas-Kumar
Discoverer
0 Kudos

Hello Abhinav_Sharma,

Thanks for such a nice blog!

I am able to push notification to SAP Buid Work Zone(Launchpad) using Postman but It is not happening using SAPUI5 BAS and cloud foundary app.

As you sugeested, I followed same steps but I am geeting 404 in the network. I tried from BAS and even I deployed app to cloud foundary.

1. Created destination in BTP

2. Provided route in xs-app.json

UI5 code

var appId = this.getOwnerComponent().getManifestEntry("/sap.app/id");
var appPath = appId.replaceAll(".", "/");
var appModulePath = jQuery.sap.getModulePath(appPath);
var xsrfUrl =  appModulePath + "/Notify/v2/Notification.svc/Notifications";
 $.ajax({
                    url: xsrfUrl,
                    headers: {
                        "X-CSRF-Token": "fetch"
                    },
                    async: false,
                    type: "GET",
                    success: function (oData, status, xhr) {
                    },
                    error: function (oError) {
                    }
                });

Destination in BTP

VikasKumar_2-1713274898241.png

VikasKumar_0-1713274839238.png

Route in xs-app.json

VikasKumar_3-1713274954394.png

Error

VikasKumar_0-1713523587240.png

Can you please tell me what I am missing here?

Thanks in advanve!

Best Regards,

Vikas Kumar

development tools for SAP BTP, Neo environment SAPUI5 SAP Fiori Launchpad SAP Alert Notification service for SAP BTP 

Labels in this area