openSAP Building Applications on SAP BTP with Microsoft ...

29
openSAP Building Applications on SAP BTP with Microsoft Services Week 2 Unit 1 00:00:05 Hello and welcome to week two, unit one of our openSAP course, Building Applications 00:00:11 on SAP Business Technology Platform with Microsoft services. My name is Holger Bruchelt 00:00:17 and I'm a program manager at Microsoft for SAP architecture and integration. 00:00:22 In this week, we want to take a look at the SAP Integration Suite. 00:00:27 First, we want to connect the Integration Suite with SharePoint and to see how we can exchange documents 00:00:33 between SAP and SharePoint. Then we'll take a look at the Integrations Suite 00:00:38 and try to scale it to a high-availability configuration across multiple Azure regions 00:00:45 using the Azure Traffic Manager. And then we'll also take an outlook 00:00:48 at some of the upcoming eventing scenarios, how you can use the eventing services on the SAP side 00:00:57 and connect them with the eventing services on the Microsoft side. 00:01:01 In this unit now, we want to get started, basically. We want to set up the Microsoft 365 Developer Program, 00:01:08 how we can actually get access to Microsoft 365, so the office products, SharePoint, 00:01:14 obviously what we'll use in the next unit here, Outlook and so on. 00:01:20 And we'll take a look actually at SharePoint, how you can create a simple SharePoint site. 00:01:25 And then we'll set some required permissions in Azure Active Directory so that the Integration Suite 00:01:31 can then connect to our SharePoint site and create documents in SharePoint. 00:01:39 So basically, what we want to do in the next unit is create a scenario like this, 00:01:45 where you have your SAP S/4HANA system on premise, you can connect to your SAP system 00:01:51 using the Cloud Connector. And with this obviously, you have access 00:01:54 from the Integration Suite, from the Cloud Integration Services to your SAP system. 00:02:01 Now, part of the Integration Suite, there is a component called the Open Connectors. 00:02:06 And the Open Connectors comes with a lot of pre-configured connectors 00:02:10 that allow you to connect to multiple data sources. And one of these sources is SharePoint. 00:02:18 So now a scenario what we want to accomplish is when there is a change in the SAP system 00:02:25 when data has been created, and we want to create this specific data into a file, 00:02:31 and we want to post this file into SharePoint, so that afterwards customers and employees 00:02:38 can just access their SharePoint site and access the documents that are now available 00:02:42 in SharePoint. Now, obviously in order to do this for this specific unit, 00:02:47 we need to have a SharePoint system. So we already talked about getting access to Azure. 00:02:52 We talked about getting access to the Business Technology Platform, 00:02:56 and now what we need is also access to SharePoint. So for this, Microsoft has a developer program, 00:03:04 a Microsoft 365 Developer Program, that allows you to sign up 00:03:08 to the whole office package basically. It's an offering that allows you or gives you access

Transcript of openSAP Building Applications on SAP BTP with Microsoft ...

Page 1: openSAP Building Applications on SAP BTP with Microsoft ...

openSAP Building Applications on SAP BTP with Microsoft Services Week 2 Unit 1

00:00:05 Hello and welcome to week two, unit one of our openSAP course, Building Applications

00:00:11 on SAP Business Technology Platform with Microsoft services. My name is Holger Bruchelt

00:00:17 and I'm a program manager at Microsoft for SAP architecture and integration.

00:00:22 In this week, we want to take a look at the SAP Integration Suite.

00:00:27 First, we want to connect the Integration Suite with SharePoint and to see how we can exchange documents

00:00:33 between SAP and SharePoint. Then we'll take a look at the Integrations Suite

00:00:38 and try to scale it to a high-availability configuration across multiple Azure regions

00:00:45 using the Azure Traffic Manager. And then we'll also take an outlook

00:00:48 at some of the upcoming eventing scenarios, how you can use the eventing services on the SAP side

00:00:57 and connect them with the eventing services on the Microsoft side.

00:01:01 In this unit now, we want to get started, basically. We want to set up the Microsoft 365 Developer Program,

00:01:08 how we can actually get access to Microsoft 365, so the office products, SharePoint,

00:01:14 obviously what we'll use in the next unit here, Outlook and so on.

00:01:20 And we'll take a look actually at SharePoint, how you can create a simple SharePoint site.

00:01:25 And then we'll set some required permissions in Azure Active Directory so that the Integration Suite

00:01:31 can then connect to our SharePoint site and create documents in SharePoint.

00:01:39 So basically, what we want to do in the next unit is create a scenario like this,

00:01:45 where you have your SAP S/4HANA system on premise, you can connect to your SAP system

00:01:51 using the Cloud Connector. And with this obviously, you have access

00:01:54 from the Integration Suite, from the Cloud Integration Services to your SAP system.

00:02:01 Now, part of the Integration Suite, there is a component called the Open Connectors.

00:02:06 And the Open Connectors comes with a lot of pre-configured connectors

00:02:10 that allow you to connect to multiple data sources. And one of these sources is SharePoint.

00:02:18 So now a scenario what we want to accomplish is when there is a change in the SAP system

00:02:25 when data has been created, and we want to create this specific data into a file,

00:02:31 and we want to post this file into SharePoint, so that afterwards customers and employees

00:02:38 can just access their SharePoint site and access the documents that are now available

00:02:42 in SharePoint. Now, obviously in order to do this for this specific unit,

00:02:47 we need to have a SharePoint system. So we already talked about getting access to Azure.

00:02:52 We talked about getting access to the Business Technology Platform,

00:02:56 and now what we need is also access to SharePoint. So for this, Microsoft has a developer program,

00:03:04 a Microsoft 365 Developer Program, that allows you to sign up

00:03:08 to the whole office package basically. It's an offering that allows you or gives you access

Page 2: openSAP Building Applications on SAP BTP with Microsoft ...

2

00:03:16 to the Office suite. It also allows you to create some sample contexts.

00:03:21 And so think of the SFLIGHT model on the SAP system or the IDES solutions on the SAP side

00:03:29 that really provide you with a really good starting point to explore an SAP system.

00:03:35 Similar here with the Office, with the Microsoft 365 Developer Program,

00:03:40 you can get access to Outlook, Teams, Planner, Word and obviously SharePoint, which is really critical

00:03:46 For our specific unit, and pre-populate your Office 365 instance with data.

00:03:54 Which means you get, I think, 25 users that you can interact with, and you get some sample content

00:04:01 that you can leverage. Once we have done this,

00:04:04 then we will go through the process of creating a SharePoint site.

00:04:09 Actually, that's fairly easy, but we just want to guide you through these steps now.

00:04:13 How to access the SharePoint site, how to create a SharePoint site.

00:04:17 And then obviously this will be our container basically to publish and receive the documents

00:04:26 from the Open Connectors on the SAP side. And then once that's done, obviously now, as an end user,

00:04:32 you could go to your SharePoint site and you could create documents.

00:04:37 You could create a Word document or whatever, but obviously we want to have the Integration Suite

00:04:43 with the Open Connectors to be able to connect to the SharePoint site

00:04:46 and then publish these documents automatically. So for this, we need to provide access

00:04:53 to the Open Connectors to SharePoint. And in order to do this, we need to register an application.

00:05:00 So we'll create an application that represents our SharePoint environment,

00:05:05 and we'll provide this application in Azure Active Directory with some API access.

00:05:12 So basically we'll create an application ID in secret, we'll allow this application

00:05:18 to access the SharePoint libraries. We'll give the application access to read

00:05:25 and write information in SharePoint. And this is then the foundation,

00:05:28 the information that we will later on hand over to the Open Connectors configuration,

00:05:33 so that Open Connectors can actually create the documents automatically in SharePoint.

00:05:40 So with this, let's quickly take a look at how all of this can be done.

00:05:45 So I'll switch over here to developers.microsoft.com. So here is some information on how to get started

00:05:54 with Visual Studio Code and GitHub, and so on. And if you scroll down here,

00:05:57 then there's the Microsoft 365 section. So if I click on the section here,

00:06:03 then you can actually sign up and register to the developer program for Microsoft 365.

00:06:12 So basically just scroll down here. You can sign up here to the specific program

00:06:20 and you can get access to Office 365. So just here, down here, click on Join now.

00:06:28 You will be redirected here to this page and that's where you actually need to provide

00:06:35 your credentials. So just fill out the information,

00:06:38 provide your email address, probably the same one that you also use

00:06:43 when setting up your free Azure account. And then you should be good to go.

00:06:51 Setting up takes some time, but once that is done, you can actually get access to...

00:06:59 So you you'll get a user first of all, similar like what I have here, so it's an M365x, whatever

00:07:07 on microsoft.com, M-user. And with this user, if you log on

00:07:11 to ... maybe you start by opening Outlook, for example. So just go to outlook.office.com.

Page 3: openSAP Building Applications on SAP BTP with Microsoft ...

3

00:07:20 And then if you click up here in this corner, then you can access your SharePoint sites.

00:07:27 And that's actually something that I quickly want to do. So I'll just select SharePoint here and you'll be redirected

00:07:34 to the homepage of SharePoint. Now, since we want to publish our SAP documents

00:07:41 to a very specific site, what we'll do is we'll just click on Create site.

00:07:45 You will be redirected to what kind of site you want to have.

00:07:50 It doesn't really matter. So I'll just go ahead with the Team site.

00:07:53 I'll give it a name, openSAPReceiver, or something like that.

00:07:59 I will click, you can fill in obviously additional information.

00:08:03 You can see here that's the URL that will be the end result.

00:08:11 Now, if I click on Next, you could provide additional owners.

00:08:15 Remember when you set up the Microsoft 365 Developer Account,

00:08:21 you could create these 25 demo users. So you could select one of them as well.

00:08:27 I'll just leave it blank for now and click on Finish. With this, the site is created,

00:08:34 and this will be the target area, so to speak, where the SAP documents then will be stored.

00:08:42 If you want to give it another try, I mean, you can click on New,

00:08:47 you can take a look at the document library here. You can create here, additional content there,

00:08:54 you can click on documents and basically upload a Word document or something like this manually.

00:09:02 But we'll leave it at this. This is now the foundation that we'll use

00:09:07 for our Open Connectors. Now, as mentioned, in order to empower or enable

00:09:12 the Open Connectors to actually upload and create documents here in the SharePoint site,

00:09:17 we need to give these permissions. We need to give Open Connectors permissions

00:09:22 to create documents here. Theoretically, this could be a hard-coded username

00:09:26 and password, but obviously that's not something that we want to do.

00:09:29 We want to really connect via an OAuth authentication flow. We want to provide a client secret

00:09:40 or an application ID for the authentication. So what we need to do,

00:09:44 we'll go to our portal.azure.com site. So basically the same that you created previously.

00:09:52 You can go to Azure Active Directory and here in Azure Active Directory,

00:09:57 there's this tab, Application registration. And that's where we'll create an application

00:10:03 that represents our SharePoint site. So I'll click here on New registration.

00:10:09 I'll give it a name, openSAPSharePoint, and I can just click on Register.

00:10:16 Now we are creating this application in the Azure Active Directory.

00:10:22 You will see that there's an application ID that we'll later on use when configuring Open Connectors.

00:10:31 But one important thing that we also need to do is these API permissions.

00:10:36 So the application that we just created is just a representation.

00:10:41 It's just a dummy container at the moment. So what we need to do is we need to give this application

00:10:46 access to our SharePoint site. So that's why we click here on Add a permission.

00:10:52 And typically, so for example, in week three, we'll also connect or we'll use the Microsoft Graph

00:10:59 to connect to different end points on the Microsoft site. In our specific case here,

00:11:07 what we'll do is if you scroll down, there's a dedicated tile here for SharePoint.

00:11:11 So I just click on SharePoint and we'll select here Delegated permissions.

Page 4: openSAP Building Applications on SAP BTP with Microsoft ...

4

00:11:15 And then there's a number of permissions that you should set.

00:11:20 And these permissions are all documented, obviously, in our exercise.

00:11:24 But for example, you would just select here AllSitesFullControl.

00:11:29 I think we need the read and write, but again, check the documentation

00:11:34 on what exactly is required here. I think we need to have this search all,

00:11:38 and also here the user writer. I think that's the one,

00:11:43 but again, please double-check in the documentation. Then just click on Add permissions and that's it.

00:11:50 Now we're basically good to go. You might want to grant admin consent for the specific user.

00:11:57 I'm currently logged on with a user that does not have permissions to do this.

00:12:01 So I need to probably switch my user to an admin user, and then I can actually set also these grants,

00:12:10 but that's basically it. So with these few things,

00:12:13 now we have set up an Office 365 demo environment. We've created a sample SharePoint site,

00:12:20 which we'll later on use for our Open Connectors. And we have provided permissions

00:12:25 for this specific application to be able to actually to receive the documents

00:12:32 from Open Connectors. So with this, let's quickly switch back to the presentation.

00:12:40 As mentioned, we've talked about the Office 365 Developer Program.

00:12:44 We created a SharePoint site in our SharePoint, in a newly created SharePoint environment.

00:12:52 And then we registered an application in Azure Active Directory,

00:12:56 and also provided the relevant permissions. With this again, some additional information,

00:13:03 a few links, obviously, the link to the developer program if you want to take a look at some of this information.

00:13:10 With this, we're done for this specific unit, and I'm happy to hand over to our next unit and to Max,

00:13:18 who will actually guide you through the SAP Integration Suite

00:13:23 and show you how to use Open Connectors in this specific scenario.

00:13:28 Thank you very much.

Page 5: openSAP Building Applications on SAP BTP with Microsoft ...

5

Week 2 Unit 2

00:00:05 Welcome to week two, unit two: Setting up the SAP Integration Suite.

00:00:09 My name is Max Streifeneder and I'm a solution expert

00:00:12 in the Platform Adoption and Advisory team at SAP. And I'm quite happy to be

00:00:17 one of your instructors in week two. In this unit, I'd like to take a short look

00:00:24 at the scenario once again that we want to cover in this and the next unit.

00:00:29 Before we have a look at the SAP Integration Suite in detail,

00:00:33 I'd like to take a step back and look at it from a high-level perspective.

00:00:38 But we'll only scratch the surface, though, because there is a dedicated openSAP course

00:00:43 that covers all the details, called Accelerating Enterprise Integration

00:00:48 with SAP Integration Suite. As I said, we'll then take a look

00:00:53 into the capabilities of the SAP Integration Suite that we want to use in this scenario.

00:00:59 Plus, we will then finally have a look at how to set up the SAP Integration Suite

00:01:04 in SAP BTP Trial. Holger has already shown you the scenario once again

00:01:10 in the last unit but SAP Integration Suite will be our middleware

00:01:15 between the SAP S4/HANA system and our Microsoft SharePoint to publish documents to Microsoft SharePoint.

00:01:24 But what is the SAP Integration Suite actually? And I've put on a quote that actually describes

00:01:33 what the SAP Integration Suite is, and I'll read it out loud.

00:01:39 "SAP Integration Suite is an enterprise integration platform as a service

00:01:43 that allows you to seamlessly integrate on-premise and cloud-based applications and processes

00:01:49 with tools and prebuilt content managed by SAP." So let's visualize what that quote actually means.

00:02:01 The SAP Integration Suite is a platform as a service. That means it's fully managed by SAP

00:02:08 on top of the infrastructure of our hyperscalers like Microsoft Azure.

00:02:14 So you don't need to take care about the infrastructure. It's an enterprise integration platform.

00:02:20 That means enterprises do have the requirement to connect to all sort of parties.

00:02:25 Is it B2B, business-to-business, B2G, business-to-government

00:02:31 or applications, A2A? Will they be SAP or non-SAP solutions?

00:02:41 No matter if it's on premise or in the cloud, SAP offers the right tools to connect, for instance,

00:02:48 to your SAP on-premises systems using the SAP Cloud Connector

00:02:52 or also offers the right adapters to connect to all sort of solutions.

00:02:59 As the name already says, the SAP Integration Suite is a suite,

00:03:03 a collection of capabilities that enables you to connect all sort of parties

00:03:09 ranging from SAP API management that allows you to expose your APIs securely,

00:03:16 have proper governance or monitoring to get deep insights in your API usage.

00:03:24 SAP Event Mesh enables asynchronous communication to SAP or non-SAP solutions

00:03:30 that are interested in sensing and responding to business events.

00:03:37 SAP Data Intelligence for data ingestion and orchestration. One Domain Model for, as I already said,

00:03:47 SAP or non-SAP solutions that are interested in shared master data.

00:03:53 And last but not least, the two capabilities we want to use in this scenario,

00:03:59 SAP Cloud Integration and SAP Open Connectors. SAP Cloud Integration

Page 6: openSAP Building Applications on SAP BTP with Microsoft ...

6

00:04:04 is SAP's end-to-end process integration in and for the cloud.

00:04:10 It offers a intuitive web interface and also offers adapters for different protocols -

00:04:17 always with a strong focus on cloud and security. It also has a huge offering

00:04:23 for prepackaged content that can be discovered on api.sap.com,

00:04:29 that you can easily copy and configure to your own needs.

00:04:34 Or you can also publish your own integration flows or adapters

00:04:38 that others may use. The SAP Integration Advisor is an AI-powered tool

00:04:46 to accelerate integration flow development. It continuously learns and also reduces efforts

00:04:54 by more than 60%. SAP Cloud Integration will be used

00:04:58 in conjunction with SAP Open Connectors. So, what's SAP Open Connectors?

00:05:04 SAP Open Connectors provides the ability to connect to 170 or more applications,

00:05:10 non-SAP applications. Those applications and their APIs

00:05:15 are oftentimes very heterogeneous when it comes to API specification,

00:05:19 documentation, authentication, or even error handling. That's why SAP Open Connectors provides

00:05:27 a unified developer experience. No matter if it's REST endpoints,

00:05:31 SOAP endpoints, databases, proprietary SDKs or whatever it is.

00:05:38 And this applies not only to APIs, also to events and providing webhooks.

00:05:44 SAP Open Connectors provides a unified API layer and standards-based implementation

00:05:50 across every environment. This ensures that integration users, developers,

00:05:57 and the use cases are actually decoupled

00:06:00 from their backend services they rely on. If this out-of-the-box connectivity

00:06:07 doesn't suit your requirements, there's also the ability to build your own connectors

00:06:12 with the so-called Connector builder. That's it so far for the theoretical part.

00:06:19 We will now jump into the SAP BTP Trial Cockpit in order to finally set up the SAP Integration Suite.

00:06:26 So, I have already opened the SAP BTP Trial landing page.

00:06:30 If you don't have an SAP BTP Trial so far, please go back to week one, unit two,

00:06:35 where Anirban has shown you how to register for an SAP BTP Trial account.

00:06:42 Attain a Trial account and navigate to your SAP BTP Trial subaccount.

00:06:48 If you're confused by names like global account, subaccount, directories

00:06:53 or the basics of SAP BTP, please go to either opensap.com

00:07:00 and look for the openSAP course Business Technology Platform in a Nutshell,

00:07:06 or go to the SAP developer center where they do have tutorials,

00:07:11 how to get started with the SAP BTP Trial. Look for All Tutorials,

00:07:20 and search for SAP BTP get ready. There is a whole group of tutorials,

00:07:29 how to get started, how to get a 10,000 meters view of the SAP BTP,

00:07:37 Get a Free Account, that you hopefully already have,

00:07:40 or Take a Tour of SAP BTP Trial, where there's lots of explanations,

00:07:44 what global accounts are, what directories and subaccounts are,

00:07:48 what entitlements and quotas are, and so on. Go back to your SAP BTP Cockpit,

00:07:57 and navigate to your subaccount. You get an overview of services and subscriptions

00:08:06 that are available in your Trial account in the Service Marketplace.

00:08:09 As we want to enable the Integration Suite, simply search for the Integration Suite.

00:08:18 We can now create a subscription for the Integration Suite here.

00:08:24 Select Integration Suite as a service and leave the plan as trial

Page 7: openSAP Building Applications on SAP BTP with Microsoft ...

7

00:08:29 and create a subscription. This can take a few seconds.

00:08:35 Click on View Subscription in order to see the progress. And after a few seconds,

00:08:43 your SAP Integration Suite subscription should be finished. You can now see you're subscribed.

00:08:50 And if we go to the application a new page will be opened. As you have already learned,

00:08:58 the SAP Integration Suite does have multiple capabilities. And in this scenario

00:09:03 where we want to host documents from SAP S4/HANA to Microsoft SharePoint,

00:09:08 we want to use SAP Cloud Integration and SAP Open Connectors.

00:09:21 SAP Cloud Integration supports end-to-end process integration

00:09:24 for the exchange of messages. We want to use SAP Cloud Integration,

00:09:31 and also we want to use non-SAP connectivity as our SAP Open Connectors.

00:09:37 You also want to mark that checkbox and click on Next. We want to leave it as this,

00:09:44 click on Next again, and click on Activate

00:09:48 to actually enable Cloud Integration and Open Connectors. Your capabilities,

00:10:02 Cloud Integration and Open Connectors, are now being activated.

00:10:06 This provisioning can take up to 20 minutes. Please wait.

00:10:11 And we will continue with the setup then. As you can see,

00:10:17 Cloud Integration and Open Connectors are now both active. Before you can actively use both capabilities,

00:10:25 please go back to the SAP BTP Cockpit, navigate to your global account,

00:10:35 and have a look for Boosters. Boosters are a good way to interactively guide or be guided

00:10:43 through building applications or use different platform services and features.

00:10:49 And there's also one for the SAP Integration Suite because you haven't assigned your role collections

00:10:55 and the so-called service instance to use the integration runtime.

00:11:04 Click on Start and select the subaccount that you have created,

00:11:11 the SAP Integration Suite subscription. Also the Cloud Foundry organization and Cloud Foundry space

00:11:21 that fits to your SAP Integration Suite tenant. Since I only have one organization and one space

00:11:31 that's already self-explained. Click on Next,

00:11:35 and now also select the capabilities you have already selected

00:11:39 during creating the subscription for the SAP Integration Suite tenant.

00:11:45 So again, design, develop and operate integration scenarios for SAP Cloud Integration

00:11:50 and extend non-SAP connectivity for SAP Open Connectors. Click on Next

00:11:58 and finish so that the Booster can start to run. You can follow the progress.

00:12:05 The role collections are already assigned, the service quotas is already assigned

00:12:10 and the service instance is about to be created and was already successfully executed.

00:12:17 You can now go to the application once again, to see the enabled capabilities

00:12:23 of the SAP Integration Suite. There is SAP Cloud Integration, SAP Open Connectors.

00:12:30 Both of them have been enabled by you a couple of minutes ago.

00:12:35 Click on SAP Cloud Integration to get to the landing page of SAP Cloud Integration.

00:12:44 If the booster was successfully executed, you should now see a list of news and announcements

00:12:51 plus some of the prepackaged integration flow by SAP. That's it so far for setting up

00:12:59 the SAP Integration Suite tenant. Let's summarize what you've learned in this unit.

00:13:06 You should now know what the SAP Integration Suite in general is,

Page 8: openSAP Building Applications on SAP BTP with Microsoft ...

8

00:13:10 what the capabilities SAP Cloud Integration and SAP Open Connectors are,

00:13:16 and you have already set up your SAP Integration Suite tenant in SAP BTP Trial.

00:13:22 That's it for unit two. Thanks for watching

00:13:25 and see you in the next unit.

Page 9: openSAP Building Applications on SAP BTP with Microsoft ...

9

Week 2 Unit 3

00:00:05 Welcome to week two, unit three of the openSAP course,

00:00:09 Building Applications on SAP BTP with Microsoft Services. In this unit,

00:00:14 we will finally have a look at the integration flow of SAP Cloud Integration

00:00:18 to finally publish documents from an SAP S/4HANA system to Microsoft SharePoint.

00:00:24 In the last unit, we've gone through the fundamental steps

00:00:27 in order to understand what SAP Integration Suite is, what its capabilities like

00:00:32 SAP Cloud Integration and SAP Open Connectors offer, and you've already set up

00:00:37 the SAP Integration Suite on your SAP BTP trial. The majority of this unit will take place in the system.

00:00:48 That way you'll get to know the look and feel of SAP Cloud Integration,

00:00:51 SAP Open Connectors. You'll learn how to

00:00:55 authenticate against Microsoft SharePoint. And we'll also find out the right APIs

00:01:01 for SAP and Microsoft Office, like Microsoft SharePoint. Before, I'd like to explain once again,

00:01:12 on a fundamental level, what SAP Cloud Integration is. Usually, Cloud Integration handles senders and receivers.

00:01:22 For example, an SAP system could send something to a governance system,

00:01:28 or the other way around. That way you need adapters for the sender system,

00:01:33 but also for the receiver system. They can be on a protocol level like HTTPS or JMS,

00:01:40 but SAP also offers adapters on a system level, like SAP Ariba or SAP SuccessFactors.

00:01:48 Once you've received a message through an adapter, you'll probably want to convert the message

00:01:53 from an XML format to JSON, or the other way around. Also, SAP offers a way

00:02:03 to map and transform fields of those messages, from a sender system

00:02:10 to different fields in a receiver system. Additionally, for example,

00:02:14 you can also add groovy scripts in order to transform messages in your way.

00:02:21 If those adapters that SAP offers aren't enough, there's also additional adapters

00:02:27 on the SAP API Business Hub. Or you can also build your own adapters using

00:02:34 the adapter development kit. So let's finally have a look into the system

00:02:41 and see how the scenario is built. I've opened the SAP BTP trial cockpit

00:02:49 and look for instances and subscriptions in order to get to your integration Suite landing page once again.

00:02:55 Click on the icon next to the name to get to the landing page.

00:03:04 Navigate to SAP Cloud Integration, where you'll get an overview of capabilities

00:03:09 that you can do with SAP Cloud Integration. There are four different sections.

00:03:16 One is a discovery section, that you can already see, where you can find

00:03:21 pre-packaged content, like integration flows, and so on. A design section where you can find

00:03:30 packages containing integration flows and other artifacts. Monitor section, where you can see

00:03:38 what integration flows are deployed, how they're running, if there are any errors, and so on.

00:03:45 And the last section is the settings section where you can maintain, for example, users,

00:03:50 security artifacts, or configure your transport landscape. We'll have a look at the already built integration flow

00:04:00 that I have developed already. There's a package containing one artifact,

00:04:06 which is my integration flow. And if I click on it,

Page 10: openSAP Building Applications on SAP BTP with Microsoft ...

10

00:04:15 I can see the integration flow editor already. I'm only in the display mode.

00:04:22 If you go to Edit, you can drag and drop items like you can see it already in my already built integration flow.

00:04:31 If you want to know how to build this integration flow, the exercise after this unit

00:04:35 will describe everything in detail to replicate this in your own trials.

00:04:42 You can see that there are two major steps. One is to fetch the billing document from SAP S/4HANA,

00:04:52 and the other one is to upload the file to Microsoft SharePoint.

00:04:57 Usually one integration flow handles one message. If we click on the first step, for example,

00:05:04 that is a so-called content modifier. I can modify, as the name already says,

00:05:09 the content of this message my integration flow handles. It consists of a header,

00:05:17 of a body, and properties that I can exchange

00:05:21 throughout this whole integration flow. And if we have a look at the first major step,

00:05:27 to send or to pull the document from SAP S/4HANA and the HTTP adapter,

00:05:34 one of the adapters that SAP Cloud Integration offers by default.

00:05:39 You can see that we are not using a real SAP S/4HANA system in this case,

00:05:45 but we are using the SAP API Business Hub and the sandbox of it.

00:05:51 So let's quickly jump over to the API Business Hub in order to have a look what it actually is.

00:05:59 So the SAP API Business Hub offers an overview of APIs for different products,

00:06:08 for different business processes, like recruit to retire or lead to cash,

00:06:16 or different categories, like APIs, but also integrations like integration flows

00:06:22 for SAP Cloud Integration, what we've called prepackaged content,

00:06:27 events, and ODM for one domain model explorer, and so on.

00:06:34 So this is the place where you can find APIs for your SAP systems, or other artifacts.

00:06:43 As we want to pull billing documents, you can simply look for

00:06:48 billing document and get PDF, for example. And you'll see an API or other artifacts.

00:06:57 I only want to see the APIs that I'm looking for. You see that there are two APIs.

00:07:04 One is for SAP S/4HANA Cloud with a sandbox system, and one for SAP S/4HANA without a sandbox system.

00:07:13 So we want to use a sandbox system so that everybody of you can play around with data

00:07:18 from an SAP S/4HANA system. You will get all kinds of information about this API -

00:07:27 when it was last modified, when it was created,

00:07:30 what type of data the API delivers, and other resources.

00:07:37 And amongst these resources, you can also already try it out.

00:07:43 As you can see, I'm already logged in. And I can see the different options for this API I have.

00:07:51 And there's one option that is called GetPDF. I do have to enter a billing document number

00:08:00 that I've already maintained in my integration flow. So let's quickly jump back

00:08:03 in order to copy over the billing document number. For the sake of simplicity,

00:08:09 I've hard coded this document number in this integration flow.

00:08:14 But in a real scenario, you would probably get a message or an event

00:08:20 with SAP Event Mesh from an SAP S/4HANA system with the document number,

00:08:25 with a specific document number and not a hard coded one. But for the sake of simplicity and to keep it simple,

00:08:33 we have hard coded it here as one of the properties

00:08:37 we are carrying through this integration flow. So let's copy the document number.

00:08:44 Go back to the API Business Hub. And let's try to get the billing document

Page 11: openSAP Building Applications on SAP BTP with Microsoft ...

11

00:08:50 from this sandbox system. Execute the request,

00:08:57 and you'll directly get a response with a BillingDocumentBinary property

00:09:04 that we'll also see in a second in the integration flow. All right, so we have seen how to use the API,

00:09:15 in this case for the sandbox for the SAP API Business Hub. Let's quickly jump back

00:09:24 and compare what we have built in the integration flow. Remember the request URL that you see here,

00:09:32 and the one we have in the HTTP adapter. There is the connection information with the sandbox address

00:09:44 with the actual HTTP query, and a so-called property and doc ID.

00:09:52 That's the one I've hard coded in the content modifier in this first step.

00:09:58 All I need to provide then in order to authenticate against the sandbox system

00:10:02 is a so-called API key, that is allowed here. Again, the API key,

00:10:10 I've already maintained in this content modifier for this message already.

00:10:16 If you go to the Message Header, you can see that I have an API key here.

00:10:21 Where's that value coming from? You get this API key from your API Business Hub,

00:10:28 when you're logged on. Go to your name,

00:10:36 Settings, and Show API Key.

00:10:40 Simply copy it over and paste it into the integration flow. All right, so after this step,

00:10:48 we already have the document as a binary. The next two steps are needed

00:10:57 in order to convert the file into the right format for Microsoft SharePoint.

00:11:04 This one only filled us the response of the request to the sandbox of the SAP API Business Hub,

00:11:13 and gets the property we've seen, the BillingDocumentBinary, as a text.

00:11:21 And we have a step with a groovy script that we can place here with some custom coding,

00:11:27 in order to format it into the right format. We're not going to go into the details of the script,

00:11:33 but I'm showing you how that could look. For example, this coding sets the file name,

00:11:41 or the right HTTP content type. So Microsoft SharePoint

00:11:45 can interpret the incoming file in the right way. Next, we'll skip one of the steps,

00:11:57 is already "Upload the File to Microsoft SharePoint". If you click on the HTTP adapter once again,

00:12:04 we'll find some information on how we can send the data. And you'll notice that it's not a Microsoft SharePoint URL,

00:12:12 it's rather a URL for Open Connectors. Before we cover the details of this HTTP adapter,

00:12:22 let's quickly have a look at SAP Open Connectors. Therefore, go back to your SAP BTP cockpit.

00:12:32 Click once again on the icon next to Integration Suite in order to get to the landing page

00:12:38 for the Integration Suite. Click on Open Connectors.

00:12:52 Then you'll see the landing page of SAP Open Connectors. In this openSAP course,

00:12:59 we'll only cover two of the menu items. One is Connectors, the other is Instances.

00:13:04 We can create instances of some connectors. Let's have a look if we can find one

00:13:10 for Microsoft SharePoint. And as you can see, it's already the first one

00:13:14 because I've already created an instance. But there's also connectors for all sorts of others,

00:13:20 other applications. We can authenticate against an application,

00:13:26 we can get an overview of the application, or have a look at the API docs, for example.

00:13:33 So let's authenticate against Microsoft SharePoint. Therefore we'll use a name like "openSAP SharePoint",

Page 12: openSAP Building Applications on SAP BTP with Microsoft ...

12

00:13:42 get the SharePoint site address. If you haven't created a SharePoint site yet,

00:13:46 please revisit week two, unit one, where Holger has shown you

00:13:51 how to set up Microsoft SharePoint, or have a look at the exercise that we provided.

00:13:58 So let's go over to Microsoft SharePoint and copy over the SharePoint URL.

00:14:08 Paste it in here without the protocol. And we need an API key and an API secret.

00:14:16 That's the application that you have registered in Azure Active Directory,

00:14:21 also in week two, unit one, together with Holger. So let's go over to Azure Active Directory

00:14:27 and have a look at the application. If we go to the overview of the application,

00:14:32 we get the API key, that is here the application or client ID.

00:14:39 Also copy that one and paste it over to the connector instance.

00:14:44 The API secret is something we need to create first. Go back to the application in Azure Active Directory.

00:14:53 Go to certificates and secrets and create a new client secret.

00:15:08 And also copy over the value. Paste it in here.

00:15:16 And the last thing that needs to be done is, we have created API permissions for a delegated user.

00:15:24 So switch the setting to true. We're good to go.

00:15:30 And if we create the instance, I'll directly be authenticated

00:15:34 against Microsoft Azure Active Directory, because I'm already logged in in the other tab.

00:15:40 And as you can see, the SharePoint connector instance was already created.

00:15:46 We can now test around with the APIs, for example. If we look for the API docs,

00:15:54 you can see a Swagger UI, where you can interactively test the APIs.

00:16:00 There's one, for example, to post files that we will use in the integration flow.

00:16:06 But for the sake of demoing what is possible, we can search for documents, for example.

00:16:14 We want to try it out. And I want to search for a welcome document

00:16:20 in a file or a folder name, I can execute it.

00:16:24 And the API will be tested with my logged-on user. We already get a response.

00:16:31 And as you can see, there should be a file, welcome.docx, in my general site.

00:16:37 With that we can almost use the SAP Open Connectors in our integration flow.

00:16:42 So let's quickly go back to the Open Connectors and see how the URL is looking

00:16:48 and what parameters we need. What you have seen in the previous request is

00:16:57 how the request looks. So we have a URL,

00:17:01 and we have some parameters that are sent, like the authorization header, and so on.

00:17:09 That URL we can already use in the integration flow, but with a different path.

00:17:17 Let's go and look for the right path. And that's actually the first one we need in here.

00:17:21 So we want to upload a file to Microsoft SharePoint. It's a POST request that we need to send

00:17:28 with the path, path.files, and it needs several parameters or headers.

00:17:36 It's the authorization header that we will also see in the integration flow

00:17:41 I've already built, the path, the size, and the file.

00:17:47 So let's quickly go over to the integration flow and have a look how that looks

00:17:51 in my pre-built integration flow. If we click again on the HTTP adapter,

00:17:58 you can see that this is the URL we've also seen over there

00:18:02 in the interactive API documentation, in the Swagger UI, and also the query parameters like size and the path.

00:18:12 It's a POST method, and it requires a request header,

00:18:17 the authorization header, so SAP Open Connectors

Page 13: openSAP Building Applications on SAP BTP with Microsoft ...

13

00:18:20 knows that we are authenticated and authorized. Therefore, we have set the request header

00:18:28 in a dedicated step before. That's this one.

00:18:31 It's also, like the one we had as a first step, a content modifier,

00:18:37 where we set a message header. It's the authorization header

00:18:42 with the copied and pasted value from the interactive API documentation,

00:18:47 and also a helpful parameter to set the right site. With that, we can almost post the file

00:18:56 from SAP S/4HANA to Microsoft SharePoint. But how does this integration flow get triggered?

00:19:03 As I said, in a real scenario, that might look a little different

00:19:06 because the SAP S/4HANA system would probably send an event using the SAP Event Mesh service,

00:19:13 with the document number, for example. For our testing purposes,

00:19:17 I've put in a starting timer. That means whenever I deploy this integration flow,

00:19:24 it only runs once. Let's do that.

00:19:29 I deploy the integration flow. And we'll see in a second what happens.

00:19:39 There is also a monitor section that we can use in order to see

00:19:45 what happens in our integration runtime. You can see that

00:19:54 the integration flow was successfully deployed, and will hopefully appear in couple of seconds in here.

00:20:03 If we have a look at all the integration content we have, we can see a number of integration flows

00:20:09 that are either started or stopped, or other integration flows.

00:20:16 If you look at the messages that were processed, you can see that a couple of seconds ago,

00:20:23 when we deployed integration flow, it was successfully executed.

00:20:35 Here we go. The message was successfully processed.

00:20:41 And if we have a look into our Microsoft SharePoint site, you see that there is not only this welcome dummy file,

00:20:48 but also now a PDF file that is coming from SAP S/4HANA. Here we go.

00:20:55 The file was uploaded a couple of seconds ago. And if we open it, you should see an actual PDF file

00:21:01 with some content coming from SAP S/4HANA. That's it for this demo.

00:21:08 So let's summarize what we've done. You've seen that we use Microsoft SharePoint sites

00:21:17 to store documents from SAP S/4HANA, because oftentimes,

00:21:22 business users do want to access their data using Microsoft Office products,

00:21:27 or to publish documents to a wider range of users. We've also used the SAP Integration Suite

00:21:33 and its capabilities like SAP Cloud Integration, where we used the integration flow

00:21:38 that you've seen a couple of seconds ago, in conjunction with an Open Connectors instance.

00:21:46 The source system or the sender system for our document wasn't an actual SAP S/4HANA system

00:21:52 or an SAP S/4HANA Cloud system. It was the sandbox of the SAP API Business Hub

00:21:59 with the exact equal APIs that an SAP S/4HANA Cloud system, or SAP S/4HANA on-premise system has.

00:22:09 So what you've learned in this unit. You will hopefully have a basic understanding

00:22:14 of SAP Cloud Integration, the benefits of SAP Open Connectors,

00:22:19 that you have your APIs decoupled from the actual back end, and get more functions on top

00:22:25 like an interactive API documentation, and so on. Where to find the right SAP and Microsoft APIs,

Page 14: openSAP Building Applications on SAP BTP with Microsoft ...

14

00:22:34 like the SAP API Business Hub, or this interactive documentation in SAP Open Connectors.

00:22:41 And you should get a feeling of how an end-to-end integration flow looks like.

00:22:47 In the next unit, we will have a look at how to make the setup even more sophisticated

00:22:52 for more advanced scenarios, like a failover scenario or load balancing, and so on.

00:22:59 That's it for this unit. See you in the next unit.

00:23:01 Thanks for watching.

Page 15: openSAP Building Applications on SAP BTP with Microsoft ...

15

Week 2 Unit 4

00:00:05 Welcome to week two, unit four of the openSAP course,

00:00:08 Building Applications on SAP BTP with Microsoft Services. In the last unit, we spoke about

00:00:14 the SAP Integration Suite. How to use its capabilities

00:00:17 like SAP Cloud Integration and SAP Open Connectors to send documents from an SAP S/4HANA system to Microsoft SharePoint

00:00:26 by using a so-called integration flow. In this unit, I'd like to have a look at a more high-level scenario.

00:00:34 What if we combine SAP Cloud Integration with a service from Microsoft called Azure Traffic Manager,

00:00:40 in order to enable a so-called intelligent routing. Over the course of this unit,

00:00:46 I'd like to cover a few aspects of this scenario. Why it could make sense to run

00:00:51 multiple SAP Integration Suite tenants in parallel. What Azure Traffic Manager is

00:00:58 and what role it plays in this so-called intelligent routing scenario.

00:01:02 Also, what do we need to have upfront in order to have everything in place

00:01:07 to enable this scenario? And last but not least,

00:01:11 we'll also talk about what comes with that scenario, what you need to keep in mind.

00:01:19 So in the last unit, we had a single subaccount,

00:01:23 in West Europe, with SAP Cloud Integration. SAP Open Connectors doesn't have a role in this scenario here.

00:01:30 We have the sender client that is sending messages proactively to our SAP Cloud Integration.

00:01:37 Last time we were pulling data, this time somebody else sends the messages.

00:01:42 This sender needs a URL, where to send the messages to. And in this case, as you can see,

00:01:48 it has a primary. whatever URL. That's the dedicated endpoint URL for our SAP Cloud Integration endpoint.

00:01:59 What if the SAP Cloud Integration service is not available for whatever reason?

00:02:05 May it be a maintenance window, may it be unexpected, extraordinary high load,

00:02:11 or whatever it is. Whenever our SAP Cloud Integration is unexpectedly not available,

00:02:17 the message might get lost. That's the reason why we might have

00:02:22 multiple SAP Integration Suite tenants with SAP Cloud Integration in parallel.

00:02:29 Imagine if we not only have our SAP Cloud Integration in the subaccount

00:02:34 in West Europe, that's the upper one, but we have an additional tenant in West US,

00:02:40 that's the lower one. In the scenarios we were speaking of,

00:02:47 the one investor is unexpectedly not available. In this case, we can send the messages to the one in West US.

00:02:55 But if you want to do that, you need to tell the sender

00:02:59 to which tenant it needs to send the messages. So instead of the primary URL,

00:03:06 the sender needs to know the URL for the one in West US.

00:03:10 This could get quite cumbersome, it's manual effort, error-prone, and so on,

00:03:16 if you need to do that manually. That's the reason why we are using

00:03:21 a so-called custom domain. The domain here is my.cloudintegration.com

00:03:27 and whatever endpoint for the integration flow we are using. This time, when we are using the custom domain,

00:03:33 the client only sends it to this domain and is abstracting away

00:03:38 which tenant actually handles the request. This is done by Azure Traffic Manager

Page 16: openSAP Building Applications on SAP BTP with Microsoft ...

16

00:03:44 that is calling the right tenant and automatically knows which tenant to use.

00:03:53 So in this case, the one in West Europe is not available

00:03:55 and the request is automatically going to the one in West US

00:03:59 and the message doesn't get lost. But there's also other reasons to use Azure Traffic Manager

00:04:06 and multiple SAP Integration Suite tenants in parallel. We are going a step back and only have one

00:04:13 Cloud Integration tenant here. We now have not only a sender in Germany, for example,

00:04:20 but also a sender in the US. Both do have different latencies.

00:04:26 That means the request from Germany to the tenant in West Europe is a lot faster

00:04:33 than the request coming from the US. Here I just have fictional numbers with 35 milliseconds

00:04:41 versus 200 milliseconds. This is oftentimes not really wanted

00:04:46 and needs to be avoided. In this case, we do have the same setup once again,

00:04:53 a tenant in West Europe and a tenant in West US. But this time Azure Traffic Manager

00:04:59 doesn't check if one tenant is available or not. We configure Azure Traffic Manager

00:05:05 to pick the tenant with the lowest latency. This way, the request from Germany

00:05:11 is going to the tenant in West Europe because it's the closest one.

00:05:17 For the request coming from the US, it was going also to the one in West Europe before.

00:05:25 It's now routed, via Azure Traffic Manager, to the tenant in the US.

00:05:31 That way both requests are going to the closest tenants

00:05:35 and both have fictional number of equal latencies. Before you can actually set up such a scenario,

00:05:48 there are some prerequisites. As you have probably seen,

00:05:52 there needs to be multiple Integration Suite tenants. Otherwise, we cannot set up Azure Traffic Manager

00:05:59 with multiple endpoints. You need a domain.

00:06:03 That is the one the clients are sending the messages to, instead of the particular ones

00:06:09 from the SAP Cloud Integration endpoints from the tenants in Europe or US.

00:06:15 Plus you need so-called SAP custom domain service in both the subaccounts.

00:06:22 Also, we are using Azure Traffic Manager, and that way you definitely need to have Azure Traffic Manager.

00:06:30 Plus what you need is an auxiliary endpoint for Azure Traffic Manager policies.

00:06:35 That's what I've just said, that Azure Traffic Manager is automatically checking

00:06:39 which is the best tenant. In the first scenario where one of the tenants wasn't available,

00:06:46 Azure Traffic Manager uses the endpoint to check which tenant is available.

00:06:50 Or in the second scenario, with the latencies,

00:06:54 Azure Traffic Manager is using this auxiliary endpoint in order to check which endpoint is the right one to use.

00:07:06 All right, so we are going to have a look into the system now and let's check how we can set up Azure Traffic Manager

00:07:13 in the right way. So what you can see is

00:07:19 I do have my Web interface for cloud integration US

00:07:22 and cloud integration in Europe open. In both tenants, I do have an integration flow, this is pretty similar.

00:07:33 Both of the endpoints do offer a REST endpoint. That is different for both

00:07:39 cloud integration tenants, obviously. And that's the endpoint a potential sender does have to know.

Page 17: openSAP Building Applications on SAP BTP with Microsoft ...

17

00:07:48 And that's what we want to avoid with Azure Traffic Manager. The integration flow is relatively simple.

00:07:56 Everything it does is it receives a message. And gives back an indicator

00:08:03 of which tenant is answering my request. For the one in Europe,

00:08:09 it's hello from EU20. And for the one in US,

00:08:12 it's hello from US20. Let's have a look at how Azure Traffic Manager

00:08:19 is right now behaving. I've maintained both tenants.

00:08:25 There's an endpoint for cloud integration in Europe, that's enabled. It's also online.

00:08:32 And has the highest priority. That means whenever the cloud integration tenant in Europe

00:08:36 is online, all the requests should go to the tenant in Europe.

00:08:42 And there is the cloud integration tenant in the US. That's also enabled and also online.

00:08:49 Let's check how Azure Traffic Manager does know which tenant is online

00:08:54 and which is not online. In the Configuration tab, I can maintain

00:09:00 how Azure Traffic Manager is monitoring the endpoints. I do have a protocol setting and which port,

00:09:08 and also which path it needs to call in order to find out if a tenant is available.

00:09:15 If the feedback for this call does have a particular HTTP code or in a code range,

00:09:22 in my case, it's exactly 200, then it knows the tenant is online.

00:09:29 If the tenant does deliver an HTTP code, other than 200, Azure Traffic Manager assumes that

00:09:36 the tenant is not online. And you can also maintain some failover settings.

00:09:41 That means how often does Azure Traffic Manager check if the tenant is online or not.

00:09:49 So right now, Azure Traffic Manager assumes both tenants are online.

00:09:56 Let's go and check if the messages do get to the tenants. That's how I'm sending a request to

00:10:09 the REST API of the cloud integration flow that we've seen in Europe.

00:10:15 And let's check if the feedback is the right one. We get hello from EU20.

00:10:21 And the HTTP code is 200. Let's also send the request to the tenant in the US.

00:10:29 And as you see, the URL is different from the one in Europe, because both tenants do have different end points.

00:10:40 And as you can see, I do also get a feedback. Hello from US20,

00:10:44 because the tenant in the US was answering. Now, let's go back and take one of the endpoints offline.

00:10:54 For example, let's go to the one in Europe. And undeploy this integration flow.

00:11:04 This integration flow is used for Azure Traffic Manager

00:11:08 to check if the endpoint is available and thus is the tenant available.

00:11:16 Coincidentally, the integration flow, we are testing for the availability for the tenant

00:11:24 is the same as we are trying to reach using the terminal. So as you can see,

00:11:35 the endpoint for my integration flow in Europe20 has gone because I've undeployed the integration flow.

00:11:43 If you go back to Azure Traffic Manager, Azure Traffic Manager will notice in a couple of seconds

00:11:48 that this tenant isn't available anymore. And as you can see, the tenant in Europe has

00:12:00 another status now and not anymore online. If you go back and try to send messages,

00:12:07 the one in Europe shouldn't be able to answer anymore because the endpoint is not anymore available.

00:12:14 And as you can see, we get an HTTP 404.

00:12:19 That means that this integration flow is not available anymore.

00:12:23 And because we are using this endpoint also for checking the availability of the tenant,

Page 18: openSAP Building Applications on SAP BTP with Microsoft ...

18

00:12:29 Azure Traffic Manager assumes that the tenant is not available anymore

00:12:33 because the HTTP code is not 200. Let's also check if the one in the US still works.

00:12:41 And as you can see, the one in the US still works

00:12:43 because we haven't touched the one in the US. Now let's try if we can reach

00:12:51 our tenant using the custom domain. So this is the domain

00:12:57 the sender does need to use, once we have enabled this intelligent routing

00:13:04 using Azure Traffic Manager. That means the sender doesn't know

00:13:08 which tenant is available or not. It just wants somebody to handle this request.

00:13:14 And as you can see, the one in Europe is not available but the request still gets handled with HTTP 200.

00:13:22 And the one in the US is answering my request. Let's check, if we deploy the integration flow in Europe once again,

00:13:33 if Azure Traffic Manager recognizes that the tenant in Europe should handle the request

00:13:38 because the one in Europe has priority one. Let's deploy the integration flow.

00:13:59 And in a few seconds, you should see in the Azure Traffic Manager

00:14:03 that this tenant is again online. And the tenant is online again.

00:14:13 If we send a request once again, then the tenant in Europe should answer it.

00:14:25 And as you can see, we do send a request to the same URL, but a different tenant is answering,

00:14:32 because in the upper scenario, the one in Europe was not available.

00:14:38 We simulated that the tenant is not available, by undeploying the integration flow.

00:14:44 And then the second scenario, the tenant in Europe is back

00:14:47 and is able to answer the request. So the only missing piece is now,

00:14:54 how do we get from the custom domain, via Azure Traffic Manager to my endpoint,

00:15:01 in the particular regions. And as you can see,

00:15:05 the Azure Traffic Manager profile does have a DNS name. That's cloudintegration-priority.trafficmanager.net.

00:15:16 And that's the one I can maintain as a so-called C name, canonical name, or alias,

00:15:23 in the DNS for my domain. So I've bought a domain in Azure that we can maintain here.

00:15:34 That's the one you probably know from the request I was sending to Azure Traffic Manager,

00:15:41 a couple of seconds ago. That's the sub domain I was using for the request.

00:15:51 And as you can see, there is an entry called C name, canonical name, or alias.

00:15:57 Routing to my DNS name of the Azure Traffic Manager. Let's also try to do a DNS lookup.

00:16:09 If we use CPI failover, that's the subdomain I was just showing you in the DNS zone

00:16:15 and the actual domain name, you should hopefully see how it gets resolved.

00:16:22 So the custom domain, including the subdomain,

00:16:26 gets resolved to cloudintegration-priority.trafficmanager.net.

00:16:31 That's the DNS name of my Azure Traffic Manager profile. That one gets resolved

00:16:37 to my endpoint of one of the regions, because the one in Europe is available.

00:16:44 It gets resolved to EU20. And the one in EU20 gets resolved to a particular IP.

00:16:53 And that's the last step in this unit where we want to check how to map the runtime URL

00:17:00 of SAP Cloud Integration in one of the regions to the custom domain.

00:17:08 So I'm logged in to my Cloud Foundry environment, using the Cloud Foundry CLI.

00:17:16 As you can see, it's the one in EU20. And let's check if there are some custom domains.

00:17:26 And here you can see that the actual route in EU20 is pointing to my subdomain, plus the domain

00:17:37 I've shown you a couple of seconds ago. That way you're getting from the actual domain

Page 19: openSAP Building Applications on SAP BTP with Microsoft ...

19

00:17:45 plus subdomain to the runtime endpoint in Cloud Integration.

00:17:50 So we've covered this scenario for when one of the tenants is not available,

00:17:55 but I've also shown you how to use Azure Traffic Manager in order to reduce the latency, for example.

00:18:02 Therefore, let's go back to the Azure portal in order to show you

00:18:06 how you can configure Azure Traffic Manager for other scenarios.

00:18:12 That's, once again, the Azure Traffic Manager profile, I've shown you for the scenario

00:18:17 where one of the tenants is not available. There's the routing method priority.

00:18:22 But there's also other configuration possibilities. For example, if you want to change the routing method to performance,

00:18:30 then the traffic is going to the endpoint that has the lowest latency.

00:18:36 Or also you can use other options as weighted, so acting as a load balancer.

00:18:42 That's possibly 60% of the requests going to the tenant in Europe

00:18:46 and the other 40% to the tenant in the US. That's it for the demo.

00:18:53 You have seen the demo of Azure Traffic Manager in conjunction with SAP Cloud Integration.

00:18:59 Azure Traffic Manager is a service that acts on DNS level. That means users do send requests to Azure Traffic Manager

00:19:08 and Azure Traffic Manager resolves the domain names. Azure Traffic Manager does have an active health monitoring.

00:19:16 What you've just seen, where our Azure Traffic Manager profile

00:19:20 showed the status for the SAP Cloud Integration, in Europe and also in the US.

00:19:26 You can define different policies like the one we have for different HTTP codes.

00:19:36 You can implement different scenarios, not only the one I've shown you as a so-called fail over,

00:19:42 or high availability, whatever you want to name it, but also based on geo-location or performance,

00:19:50 so with the lowest latency. But also you can use it for exchanging endpoints seamlessly.

00:19:56 That means you don't need to notify the sender system that there is a new endpoint

00:20:00 because Azure Traffic Manager handles it automatically. If we want to implement such a scenario,

00:20:07 there are a few things that you need to keep in mind. First, you need to externalize some control mechanisms.

00:20:15 For example, integration flow can be scheduled in SAP Cloud Integration. That way, if you have multiple tenants,

00:20:24 all the integration flows will be scheduled in all of the tenants.

00:20:28 If you use the external service, Azure Traffic Manager

00:20:31 routes the traffic to only one of the tenants and only one of the integration flows get scheduled.

00:20:38 You also need to keep in mind that the tenants need to be synchronized manually.

00:20:44 That means that the integration flows in both of the tenants need to be exactly the same.

00:20:49 Otherwise the integration flows might behave differently. Therefore you can use SAP Cloud Transport Management.

00:20:57 Also don't forget that both of the tenants need to have the exact same security artifacts.

00:21:05 And if you want to implement such a scenario, please keep in mind that you need to also apply these mechanisms

00:21:12 to involved systems like an SAP S/4HANA system. In this unit,

00:21:20 you should have learned the basics of Azure Traffic Manager, how it behaves, what you can configure,

Page 20: openSAP Building Applications on SAP BTP with Microsoft ...

20

00:21:26 and also how it works in conjunction with SAP Cloud Integration.

00:21:32 Also I've shown you a couple of the scenarios that are possible with Azure Traffic Manager

00:21:37 and the SAP Integration Suite. Last but not least, you should have

00:21:44 a rough understanding of what needs to be done in order to set it up.

00:21:48 And also what you need to keep in mind in order to have it working properly

00:21:54 In the next unit, Holger will show you something about eventing

00:21:57 in the SAP and Microsoft atmosphere. Thanks for watching.

Page 21: openSAP Building Applications on SAP BTP with Microsoft ...

21

Week 2 Unit 5

00:00:05 Hello, and welcome to week two, unit five of our openSAP course

00:00:10 Building Applications on SAP Business Technology Platform with Microsoft Services. My name is Holger Bruchelt and I'm a program manager

00:00:18 at Microsoft for SAP architecture and integration. In this unit we want to take a look at eventing.

00:00:24 And I think the whole eventing scenario is something that is really, really powerful

00:00:29 and that is just getting started. So in the previous episodes,

00:00:34 and also with a lot of other scenarios, we see very often a pull-based approach

00:00:40 that other applications, client applications always need to query and pull for certain updates.

00:00:46 Remember our SharePoint integration, where we had the service that was looking for changes

00:00:53 in the SAP system, and only when there was a change, then it finally then also pushed the information

00:00:57 back over to SharePoint. But the idea of this event integration

00:01:02 is really to have a flow where there's an event happening on the source side.

00:01:07 And this event is pushed to a notification app or something like that.

00:01:12 And this is something that we want to take a look at in this specific unit.

00:01:17 So what we want to start with is actually a look at the event-driven architectures,

00:01:23 just an overall overview, what does it mean? What we see with customers, and so on.

00:01:30 Then we'll take a look at the SAP Event Mesh. So basically the eventing architecture that is available

00:01:36 as part of the Business Technology Platform, and that allows you to connect to your on-premise system,

00:01:41 but also to other SaaS applications from SAP. And then we'll also take a look at the

00:01:47 Azure eventing options. And obviously finally then try to see or provide an outlook

00:01:52 of how these different eventing architectures can work together.

00:01:58 So let's start with what is actually Event Mesh. So the idea is that you have obviously

00:02:05 a multitude of business systems where several events can happen - this can be a change in the purchase order

00:02:12 in your S/4HANA system. This can be a new employee being onboarded

00:02:17 in SuccessFactors, or some change in a sales activity in your SAP customer experience.

00:02:24 Now all of these events can be consolidated and pushed and tracked in SAP Event Mesh.

00:02:34 The idea here is that you can really unblock certain scenarios.

00:02:38 So there is not an application waiting and actively querying for,

00:02:41 is there a new purchase order created? Is there a new employee onboarded?

00:02:46 But this is really an asynchronous communication. So Event Mesh takes care of basically more or less

00:02:53 collecting these events and then notifying different so-called subscribers, so that these subscribers,

00:02:59 the client applications don't need to have all these pull-based interactions that need to really

00:03:06 put a lot of load and stress on the source systems just by, is there something new? Is there something new?

00:03:10 Is there something new? It's really this complete change of the architecture

00:03:16 that events from the sources systems, or that the source systems themselves notify

00:03:23 yeah, Event Mesh. And Event Mesh then

00:03:24 has a list of subscribers where these events then can be pushed forward.

Page 22: openSAP Building Applications on SAP BTP with Microsoft ...

22

00:03:31 Now, if we look at the number of source systems that are supported by SAP Event Mesh,

00:03:39 we can obviously see that SAP S/4HANA Cloud, SuccessFactors, but also the classic ERP systems are supported.

00:03:48 There are so-called event enablement add-ons that you can install both on your ECC, but also on your

00:03:54 S/4HANA on-premise systems, that enable these systems to send the events to SAP Event Mesh.

00:04:03 It's also nice that SAP, similar like Microsoft in this specific case, are working with CNCF

00:04:10 on the cloudevents standard to really make sure that the integration of these events

00:04:15 is not something proprietary, but that we are really trying to develop this

00:04:20 in a very open fashion so that the interoperability of different events, coming, for example,

00:04:25 from an S/4HANA Cloud system, can be very easily proxied and sent over to other eventing systems.

00:04:35 So looking at these scenarios, the flow is always more or less the same.

00:04:39 So you have your SAP back-end system where a certain event is happening.

00:04:43 Again, this can be a purchase order that is created, this can be an employee that is onboarded,

00:04:49 or something like that. Once this event is registered, the event,

00:04:54 or the notification of this specific event can actually be sent via SAP Event Mesh

00:05:01 and then can be used to create, for example,

00:05:10 an extension in the Business Technology Platform. So again, look at this scenario where you have

00:05:15 a purchase order that is created, and now all of a sudden you can embed this information

00:05:19 in an SAP Fiori application that then showcases or notifies the user, look there is a new sales order

00:05:28 you need to approve, reject, release the sales order So you can act on this.

00:05:35 Typically this notification event has only very, very limited information.

00:05:40 In a lot of cases, this is just the sales order number or the purchase order number, or something like that,

00:05:46 or the employee ID. So it's a very slim and small notification.

00:05:52 So in a lot of cases, what happens is that the extension needs to have a so-called

00:05:58 callback functionality back to the source system to ask, well,

00:06:02 look I learned that there's a new purchase order so please give me additional information

00:06:07 on this specific purchase order. So with this, SAP already has a beautiful environment

00:06:13 that allows you to listen and react to events on your different SAP back-end systems,

00:06:19 and also build new applications via the Business Technology Platform and enrich these scenarios.

00:06:28 Now, when talking to a lot of customers, obviously not everything's completely isolated

00:06:33 in the SAP environment. There are lots of other systems,

00:06:37 non-SAP systems available at customers. And obviously also on the Microsoft side,

00:06:43 we have different messaging solutions. There's actually a broad range of solutions

00:06:49 that cover different aspects of the messaging scenario. And we quickly want to take a look at

00:06:56 some of these solutions. So I actually want to start with relay

00:07:01 because relay is more or less the connectivity service that allows us to bridge scenarios or data sources across firewalls.

00:07:10 So if have your system still on-premise, obviously a lot of Azure services are running in the cloud.

00:07:18 I mean, we also have with Azure Stack and some Azure Arc functionalities

Page 23: openSAP Building Applications on SAP BTP with Microsoft ...

23

00:07:25 the possibility also to deploy solutions in an on-premise environment.

00:07:29 But typically there are obviously firewalls in between, so you need to bridge these connectivities,

00:07:35 so that's where relay allows you to create the secure tunnels. Now, if we look at the message-oriented services

00:07:44 that can, for example, also benefit from relay, then we have three kinds of services -

00:07:49 Event Grid, Service Bus, and Event Hub. So all of these different services

00:07:53 have different target scenarios. Event Grid is a push-style distribution.

00:08:01 So basically you get the event into Event Grid and Event Grid then has a number of subscribers

00:08:06 that Event Grid can push out these notifications to. So for example, this could be a logic app that is triggered.

00:08:14 This could be an Azure function that is triggered and that then is used to, I don't know,

00:08:21 create a new Web application or to trigger another process there. Service Bus is a pull-style scenario, so basically similar.

00:08:31 We get the event, but then you have different subscribers again that ask and look for different notifications.

00:08:38 Is there something new that I can use? Should I use this specific message in my application

00:08:49 and continue from there? And Event Hub goes in a similar direction,

00:08:54 but it's really for high-volume scenarios, so when you have thousands of events coming in per second,

00:09:02 and you really need to distribute these numbers or these events in a real high-volume scenario.

00:09:10 Then Event Hub is a beautiful scenario. So I just want to highlight that there are different options,

00:09:17 that there are different services available, depending on the specific use case that you are looking at.

00:09:25 Now, when we start to talk about different customers, then in a lot of scenarios, this Event Grid scenario

00:09:32 is actually the perfect solution. So Event Grid has already out of the box

00:09:37 a lot of event sources that it allows you to connect, so this can be a simple blob storage connector.

00:09:44 So if a new document is uploaded to a blob storage, or this can be an IoT hub scenario.

00:09:52 So there's really a number of out-of-the-box event sources that Event Grid can connect to.

00:09:58 And then also from a subscriber or event handler perspective, there are lots of event handlers

00:10:04 that allow a simple consumption of these specific events. Obviously the whole pattern is very similar

00:10:12 to what we talked about in the very beginning with the SAP Event Mesh, where we really decouple

00:10:19 and we end up with an asynchronous communication between the events that are created in the source

00:10:28 and the events that are then pushed to the different target systems.

00:10:34 Now looking at SAP Event Mesh and Event Grid and talking to a lot of customers,

00:10:41 it became clear that in a lot of scenarios, it actually makes sense to combine

00:10:46 these different scenarios. So think of a company that is using an S/4HANA system,

00:10:52 and where obviously a lot of purchase orders are created. Now, these purchase orders can be beautifully integrated

00:10:59 and made available via SAP Event Mesh, but in some companies, obviously there's a lot of

Page 24: openSAP Building Applications on SAP BTP with Microsoft ...

24

00:11:06 application logic being built in Azure. A lot of customers are using services like Logic Apps

00:11:12 or Power Ultimate to react to certain events. Now what we've been working on,

00:11:19 or what we are actually working on right now with SAP, and actually by the time we've published the course,

00:11:27 you should obviously hopefully already see some of the results here, that we have an integration

00:11:32 of SAP Event Mesh into Azure Event Grid, so that events from the SAP side can easily be handed over

00:11:41 to Azure Event Grid, so that I as a Microsoft developer could just connect to my Event Grid and, via this channel,

00:11:49 consume, for example, also purchase orders from the SAP side.

00:11:54 A beautiful thing here is that we're also doing this the other way around.

00:11:58 Think of a scenario where you are the SAP developer and you are very familiar

00:12:02 with creating SAP Fiori application using the Business Technology Platform,

00:12:07 or even ABAP scenarios. Now all of a sudden, you are empowered to

00:12:12 connect to the SAP Event Mesh, I mean, something that you are probably then already very familiar with,

00:12:18 but Event Mesh does not only contain now events from your S/4HANA system or from your SuccessFactors system,

00:12:25 but because of this connection between SAP Event Mesh and Azure Event Grid, you all of a sudden have also access

00:12:32 to events that are native from the Microsoft universe. So think of a scenario where you have an exchange calendar,

00:12:43 and now a new event is created in your calendar. Because of the integration of exchange

00:12:49 with Azure Event Grid, these events are obviously there in Event Grid

00:12:52 but now we can connect Azure Event Grid to SAP Event Mesh, and again, you as an SAP developer

00:13:00 can consume and work with these events without really having to know anything

00:13:04 specific about the Microsoft side. All of this is not done proprietary

00:13:11 between SAP and Microsoft, but we are really working together very closely with the CNCF Foundation

00:13:17 on the cloudevents standard. So we are trying to bring a lot of the ideas

00:13:22 and concepts that we're working in between SAP and Microsoft also in the CNCF community.

00:13:29 So again, this is something that is, at the time of the recording, not yet available,

00:13:34 but we we're working very, very closely the teams from SAP and Microsoft, on this

00:13:39 to really make sure that we have a beautiful integration of SAP Event Mesh and Azure Event Grid.

00:13:46 With this, actually, again, this was just an outlook episode, so to speak, an outlook unit.

00:13:53 There's lots of documentation there. And as mentioned, a lot of these things are still in flux

00:13:59 and we're still looking into different ways how this connectivity, how this connection can be done best.

00:14:07 There's a bunch of lists, obviously the cloudevents.io. We have the events on the SAP side all documented

00:14:15 in the SAP API Business Hub. And also on the Microsoft side

00:14:19 we have documentations on the different messaging services on Azure Event Grid specifically,

00:14:26 and some additional scenarios also in the Discovery Center.

00:14:31 With this, thank you very much for listening to this unit. I'm looking forward to seeing you in one of the next units.

Page 25: openSAP Building Applications on SAP BTP with Microsoft ...

25

00:14:38 Thank you.

Page 26: openSAP Building Applications on SAP BTP with Microsoft ...

26

Week 2 Unit 6

00:00:05 Hello, and welcome to week two, unit six of the openSAP course Building Applications on SAP

BTP with Microsoft Services.

00:00:14 My name is Holger Bruchelt. And in this unit,

00:00:16 Max and I want to wrap up the second week and also provide an outlook of the next week.

00:00:21 So in this unit, we want to talk about the SAP and Microsoft engineering partnership

00:00:27 and look at one of the scenarios that has been in development around the networking integration,

00:00:33 the SAP Private Link service. So let's get started.

00:00:38 As mentioned before, Christian Klein and Satya Nadella had talked about the expanded partnership

00:00:42 at the beginning of 2021, and a lot of topics were discussed then. The Teams integration, which we will also look at in the next week,

00:00:50 is only one of the topics. Actually, when it comes to accelerating the migrations for SAP systems

00:00:57 to S/4HANA on Azure, strengthening the security and resilience,

00:01:01 and empowering the developers, we have put a lot of effort and energy into these topics.

00:01:07 And you can already see a lot of results in this. We talked about the deployment of productive SAP solutions

00:01:14 using the SAP Cloud Appliance Library or simplifying the migration of your ECC systems to S/4HANA on Azure

00:01:21 using the database migration options to Azure. We also invested a lot in the simplification of single sign on

00:01:28 between your SAP and Microsoft environments. Something that is obviously very crucial,

00:01:33 when it comes to the teams integration that Christian also mentioned.

00:01:37 We also started with the integration of the SAP Sales Cloud into Teams, where we have now several SAP applications

00:01:46 in the Teams store, like the ByDesign integration

00:01:49 or the Qualtrics integration or a few others. But in addition to that, there are other things.

00:01:54 And one of the things is the SAP Private Link service that is currently available in beta.

00:02:01 This Private Link service allows you to connect your SAP system running on Azure with your Business Technology Platform running on Azure

00:02:09 in a very secure and dedicated way. Actually, let's head over to Max who can show us

00:02:16 and introduce us to this topic a little more. Thanks Holger,

00:02:20 and also a very warm welcome from my side. So let's cover the technical aspect slowly.

00:02:27 On this slide, you can see an SAP BTP environment running on Azure.

00:02:32 That means it's an Azure infrastructure or a subscription that is owned by SAP.

00:02:39 On the right-hand side you can see an Azure subscription

00:02:42 that's owned by you, potentially. Both are, technically speaking,

00:02:48 Azure environments, even though it's different networks. So for example,

00:02:53 if you have your SAP, non-SAP system, or an Azure service running in your Azure subscription,

00:03:01 all the data, if it's requested by the SAP BTP environment is going through to public Internet using public endpoints.

00:03:10 With the SAP Private Link service, which is right now in beta status, you can avoid that.

00:03:16 The SAP Private Link service establishes a connection to the Azure Private Link service

00:03:22 that is exposing a load balancer and is routing the traffic, as I said,

Page 27: openSAP Building Applications on SAP BTP with Microsoft ...

27

00:03:27 either to your SAP system or non-SAP system in Azure, or even an Azure service endpoint.

00:03:37 When the connection is established you'll get a private IP that you can then use in the SAP BTP Cloud Foundry environment.

00:03:47 With that, in a nutshell, you get access to private Azure service endpoints.

00:03:53 You avoid the usage of public endpoints and you'll level up your security game with that.

00:04:00 And you also avoid the data transfer between SAP BTP and your SAP system on Azure, potentially.

00:04:10 Holger is going to show you how it looks in a real system now. Over to you Holger.

00:04:17 Yeah, thank you very much Max, for this introduction of what the scenario looks like.

00:04:20 With this, let's actually take a look at what it looks like in real life,

00:04:25 so in a quick demo. So I want to start with a quick view from the end user.

00:04:34 So the end user, for example, sees this SAP Fiori application here.

00:04:38 This Fiori application connects to an SAP system, retrieves product information here,

00:04:44 and this placed this in this UI5 Fiori element. Now, for the end user,

00:04:50 it doesn't really matter how the integration is done, whether this is done via the SAP Cloud Connector,

00:04:56 whether this is connecting to a public IP address, or whether this is using the Private Link service.

00:05:03 In my specific setup, well we are going to connect to

00:05:06 an SAP system that I've deployed here in my Azure subscription

00:05:10 using the Cloud Appliance Library. So you can see this, this typical configuration,

00:05:14 there's a V-Net configured. There are two servers,

00:05:17 there's a server for the NetWeaver stack, there's a virtual machine for the Windows jump host, basically,

00:05:25 on which, potentially, I could actually install the SAP Cloud Connector.

00:05:30 In my case, what I've done is here, this, this virtual machine for the ERP system

00:05:36 is actually locked down. So I have only one private IP address.

00:05:40 There are no public IP addresses. I have configured the network in a way

00:05:44 that there's no outbound or inbound traffic. The only thing that I have done in addition

00:05:50 to the original Cloud Appliance Library setup is that I've configured this SAP load balancer.

00:05:57 Now this load balancer now allows me to connect to my SAP system, to the HTTP endpoint of my SAP system.

00:06:05 And then with this load balancer, I can create a private link service.

00:06:09 This private link service now connects to the load balancer. And from there I have configured

00:06:16 a private endpoint connection. This private endpoint connection is now something

00:06:21 that can be consumed on the SAP side. So if I switch over to the Business Technology Platform,

00:06:27 then what you could do to get started is you would click on Create,

00:06:31 you would look for the private link service and in this private link service, you could give it a name,

00:06:37 let's call it openSAP-Private-Link. And now if you click on Next,

00:06:43 then you can configure some details like what is the welcome message?

00:06:46 What should the approval message be so that you can actually approve this message on the Azure site.

00:06:52 And then you just continue here the process, click on Create, and the connectivity between

00:06:58 your load balancer on the Azure site and your Business Technology Platform is done. So that's something that I've already done.

Page 28: openSAP Building Applications on SAP BTP with Microsoft ...

28

00:07:07 So here you can see the private link service that is configured here, there's one binding configured.

00:07:12 And actually with this binding that you can see here, we can now leverage this in our application, in our SAP Fiori application,

00:07:21 to connect via this private link endpoint to our Azure subscription and from there to the load balancer and the data in your SAP system.

00:07:32 So a very beautiful integration and a very elegant integration that allows you now to have a very secure

00:07:39 connectivity without the need, without the requirements to open up firewall ports

00:07:44 for, obviously, inbound, but also outbound connectivity, but still being able to get to the relevant data from the SAP system

00:07:54 to the Fiori user interface. Actually, for all of this,

00:07:57 and obviously we'll not go into details in this openSAP course here,

00:08:02 but actually we have a lot of really great documentation around this.

00:08:06 So our colleague Martin Pankraz has created several blog posts there that really outline how to configure this.

00:08:13 And on top of that, there's actually also an official documentation

00:08:17 on the developers.sap.com page where you also have a step-by-step detailed description

00:08:25 or tutorial of how to set up this SAP Private Link service with Azure. So with this, back over to you, Max.

00:08:36 Thank you Holger, for your demo. So let's summarize week two,

00:08:40 as this is the last unit of this week. Over the course of this week,

00:08:46 you should have gotten a basic understanding of integration scenarios using SAP and Microsoft products.

00:08:53 For instance, the SAP Integration Suite, one of its capabilities like SAP cloud integration,

00:08:58 but also SAP open connectors. Using Microsoft SharePoint APIs

00:09:05 through SAP open connectors or using Azure traffic manager to realize so-called intelligent routing scenarios

00:09:12 with SAP cloud integration. And that's only the very beginning.

00:09:16 We tried to keep it as basic as possible. So all of you could have followed the optional exercises in GitHub.

00:09:25 If you haven't started the exercises, don't worry. You can still get started in week three

00:09:30 where Howard and Holger will guide you through a so-called leave request scenario

00:09:35 using a conversational AI bot in Microsoft Teams using the SAP Workflow Management of SAP,

00:09:44 but also using Microsoft Graph and so-called adaptive cards in Outlook.

00:09:51 Thanks for being with us, and see you in the next week.

Page 29: openSAP Building Applications on SAP BTP with Microsoft ...

www.sap.com/contactsap

© 2021 SAP SE or an SAP affiliate company. All rights reserved. No part of this publication may be reproduced or transmitted in any form or for any purpose without the express permission of SAP SE or an SAP affiliate company. The information contained herein may be changed without prior notice. Some software products marketed by SAP SE and its distributors contain proprietary software components of other software vendors. National product specifications may vary. These materials are provided by SAP SE or an SAP affiliate company for informational purposes only, without representation or warranty of any kind, and SAP or its affiliated companies shall not be liable for errors or omissions with respect to the materials. The only warranties for SAP or SAP affiliate company products and services are those that are set forth in the express warranty statements accompanying such products and services, if any. Nothing herein should be construed as constituting an additional warranty. In particular, SAP SE or its affiliated companies have no obligation to pursue any course of business outlined in this document or any related presentation, or to develop or release any functionality mentioned therein. This document, or any related presentation, and SAP SE’s or its affiliated companies’ strategy and possible future developments, products, and/or platform directions and functionality are all subject to change and may be changed by SAP SE or its affiliated companies at any time for any reason without notice. The information in this document is not a commitment, promise, or legal obligation to deliver any material, code, or functionality. All forward-looking statements are subject to various risks and uncertainties that could cause actual results to differ materially from expectations. Readers are cautioned not to place undue reliance on these forward-looking statements, and they should not be relied upon in making purchasing decisions. SAP and other SAP products and services mentioned herein as well as their respective logos are trademarks or registered trademarks of SAP SE (or an SAP affiliate company) in Germany and other countries. All other product and service names mentioned are the trademarks of their respective companies. See www.sap.com/trademark for additional trademark information and notices.