Technical Articles
Author's profile photo Martin Frick

[SAP & MS Teams] 1 – Preface and scenario introduction

Blog post series – Updates

2022/02/08: Part 2 – Target application features (click here)

2022/02/10: Part 3 – Requirements and application architecture (click here)

2022/02/14: Part 4 – SAP BTP subaccount configuration and test users (click here)

2022/02/17: Part 5 – SAP SuccessFactors instance setup (click here)

2022/02/22: Part 6 – Set up your SAP Cloud Integration instance (click here)

2022/02/28: Part 7 – Get your Microsoft Azure settings ready (click here)

2022/03/01: Part 8 – Deploy your Microsoft Teams extension (click here)

2022/03/15: Part 9 – Improvement ideas and further topics (click here)


In the upcoming weeks, we will publish a blog post series that will get you up to speed on how to extend SAP business workflows into the Microsoft Azure ecosystem by developing your own Microsoft Teams extension application for SAP SuccessFactors. Whereas this sample scenario makes use of dedicated SAP and Microsoft Azure services, the presented approach opens a variety of new and exciting integration options for the SAP environment.

Selecting from various ways of developing a Microsoft Teams extension, this series will have a special focus on using features of the SAP Business Technology Platform. With the increasing adoption of the RISE with SAP offering, you and other innovative cloud customers out there can immediately start reaping the benefits by using the presented integration pattern. By efficiently using SAP Business Technology Platform services, RISE with SAP customers can take advantage of exciting new ways to integrate SAP S/4HANA, SAP SuccessFactors or other SAP offerings with Microsoft services.

Using Microsoft Teams to extend SAP business workflows is just the very first example of possible scenarios which can be easily adapted to various SAP solutions and Microsoft services. Once you understand the key concepts of this blog , you will be able to translate them to your own requirements and apply them to the products you use to support and improve your business processes. If you want to find out how to leverage the strengths of both SAP’s and Microsoft’s cloud technologies, you should bookmark this blog post series and learn how it can change your company’s working environment of tomorrow.

As you can see in the architecture below, you will be working with various SAP and Microsoft tools and technologies during this blog post series. Don’t worry, there will be a separate blog post focusing on the architecture details. So this is just an appetizer of what’s to come!


Architecture appetizer

This installment will provide you with a brief overview of the upcoming publications, the target audience for this scenario and an introduction into the topic of Microsoft Teams extensions.

First things first

As one of the first questions by the community, customers, or internal colleagues is always the same, let me provide you with the GitHub repository for this sample scenario right away. Clone and check out the code during the next weeks to get a better understanding of the blog post series.

Please be aware, that the GitHub (once published) might receive further updates, as we’re still working on some of the known issues. Just make sure you’re pulling regularly. As this scenario was part of a broader SAP Discovery Center mission on SAP and Microsoft integration use cases, please make sure you’re selecting the full-scope branch while following this blog post series.


GitHub repository – full scope

Target audience

The target audiences for this blog post series are application developerscloud architectsprocess consultants, or anyone else interested in new and innovative scenarios combining the SAP and Microsoft cloud environments. Whereas a major part of the series provides guidance on the implementation of such a scenario, it will also show all the interested readers out there the great outcomes the combination of SAP and Microsoft environments can offer. Therefore, the first two parts of this blog post series will be less technical and focus on the why and what questions.

Why should we develop a Microsoft Teams extension?
What features does a potential extension offer?

From the third part onward, the series will become much more technical, allowing all interested readers a potential deployment of this sample scenario into their own sandbox environment.

Solution environment

As you might guess, there are various ways of developing and hosting your own Microsoft Teams extension. This blog post series shows you one recommended approach to doing so. A Microsoft Teams extension can be deployed to various kinds of web servers and application logic could also be implemented using a code only approach instead of integration tools. There are advantages and disadvantages to all approaches.

As stated at the beginning of this blog post, the presented approach is intended first and foremost for you and all other cloud customers out there, such as RISE with SAP, who are already developing extension or integration scenarios within the SAP BTP environment. It will also help you leverage existing technical capabilities and valuable knowledge by enabling developers to use SAP’s strategic cloud offerings for Microsoft Azure integration scenarios.

Furthermore, as this is not an enclosed SAP service offering but can be easily modified and enhanced by developers, it is intended for those teams and customers out there, looking for a solution which can be adjusted to their personal needs.  Especially if you’re planning to integrate not just a single SAP product with Microsoft Teams, but a multitude of solutions like SAP S/4HANASAP SuccessFactors or SAP Concur at the same time. This is where the real strength of SAP Integration Suite comes into play! Keeping this approach in mind, the target solution is primarily supposed to:

  • make use of the extension and integration features provided by SAP BTP
  • be highly customizable based on the customer’s own requirements
  • act as a foundation for integration scenarios covering other SAP solutions


SAP solution integration using SAP BTP

Please keep the above focus and technology decisions in mind while following along with the upcoming blog posts and wondering why a certain product or service is used. Nevertheless, if you understand the concepts and ideas in this sample scenario, you will be able to translate the ideas to other landscapes or technologies quite easily.

Experience level

Due to the advanced complexity of this topic, it requires a certain amount of development experience in the different technologies used. Not all steps will be described in full detail, as this blog post series assumes basic to intermediate knowledge of topics like SAP Business Technology Platform, SAP Cloud Integration, and the Azure Active Directory.

Whereas the most complicated steps are described in reasonable detail, please make use of your favorite search engine to find out about other basic steps required (e.g., setting up the required users in Azure Active Directory or similar).

Please ensure you’ve got the required knowledge yourself or can engage further resources during the implementation phase. The same applies to required authorizations in the different system components, as in most of the used technologies, administrative access is required! Therefore a sandbox or trial environment might be more suitable for this scenario.

If you want to enhance the existing solution or modify it to meet your custom needs, you are more than welcome to do so. Please be aware that this will also require knowledge in the Microsoft Bot Framework as well as JavaScriptNode.js and React development skills. As tons of great documentation for building Microsoft Teams extensions is available, please understand that not all basics can be treated in detail within such a blog post series.

Okay enough introductory words for today. Let’s check out the structure of the upcoming blog series.

Blog post series structure

The blog post series is going to be published in multiple editions, which are structured the following way:

  1. Preface and scenario introduction (this blog post)
  2. Target application features (click here)
    • What to expect once you implemented all blog posts
    • Samples of the Microsoft Teams extension application
  3. Requirements and application architecture (click here)
    • Check the availability of this scenario’s system requirements
      • SAP SuccessFactors instance
      • SAP Business Technology Platform services
      • Microsoft Azure and Teams subscriptions
    • Understand the detailed architectures
      • Communication from Microsoft Teams to SAP SuccessFactors
      • Communication from SAP SuccessFactors to Microsoft Teams
      • Security aspects of the architecture design
  4. SAP BTP subaccount configuration and test users (click here)
    • Set up your SAP Integration Suite for integration capabilities
    • Create a Process Integration Runtime instance for API access
    • Configure an XSUAA instance to handle security
    • Set up trust between Azure Active Directory and SAP BTP
    • Create test users in Azure Active Directory
  5. SAP SuccessFactors instance setup (click here)
    • Set up OAuth clients for Principal Propagation and technical API access
    • Configure the Intelligent Services Center for notification handling
  6. Set up your SAP Cloud Integration instance (click here)
    • Configure your security settings for Principal Propagation
    • Provide your security settings for technical API access
    • Setup the security details for notification handling
    • Upload and deploy the integration flows
  7. Get your Microsoft Azure settings ready (click here)
    • Configure a new application registration for your extension application
    • Integrate your application with the SAP BTP enterprise application
    • Configure a Bot Service instance for your extension application
    • Create a Storage Account to store bot related data
  8. Deploy your Microsoft Teams extension (click here)
    • Maintain the extension application details in the manifest file
    • Provide the environment variables of your landscape
    • Deploy the extension application to SAP BTP
    • Upload the application manifest file to Microsoft Teams
  9. Improvement ideas and further topics (click here)
    • Access on-premise systems like SAP S/4HANA
    • Scope of the current solution approach
    • Other enhancement scenarios

Let’s get started with a brief introduction of the Microsoft Teams extension world, answering the question, “Why?” you are doing all this and why a Microsoft Teams extension is a fantastic addition to your existing SAP solutions.


The following part of the series will give you a brief introduction to why integration between SAP solutions like SAP SuccessFactors and Microsoft Teams can be a real benefit for employees and drive the adoption of the solution itself instead of replacing its functionalities. Furthermore, I will briefly summarize the key pillars of the upcoming Microsoft Teams extension application.

Microsoft Teams extension


Microsoft Teams

The importance of Microsoft Teams and virtual meeting services in general have increased tremendously in business and personal contexts during the last few years. Not just because of the convenient features offered by products like Microsoft Teams, but due to recent global events, that have completely changed the way you and your colleagues work and collaborate in the first half of the 21st century.

Besides core collaboration tools, Microsoft Teams offers so-called Apps which are well known to most of us and offer additional features for the environment. This reaches from gimmicks like a task planner up to advanced tools like SharePoint integration. A list of available apps can be found in the App Store of your Teams client or in the Microsoft Marketplace (click here).

Besides a lot of standard apps, Microsoft also offers 3rd party developers the option to provide their own extensions for the collaboration environment.  On the one hand, this adds new features for Microsoft Teams users. On the other hand, it creates visibility of a company’s service offerings within the Microsoft Teams environment. No matter if it is an integration with project management tools or dedicated services supporting business processes, all 3rd party apps can be added by you from the App Store with just a few clicks.

Doesn’t this undermine the actual solution offerings?!

Most of the 3rd party apps are not supposed to replace the actual software or service features but offer dedicated functionality directly from within Microsoft Teams. This allows you to stay in a familiar environment and make seamless use of core features provided by external services to fulfill your tasks.

Think of scheduling a new meeting from within Microsoft Teams in which you would like to integrate a virtual meeting instance of a 3rd party tool. Without a Microsoft Teams integration, you would need to open the respective 3rd party app, create a new meeting, set the meeting time, add the participants of your current Microsoft Teams channel, add the name of the Microsoft Teams channel as description, … Sounds like a lot of extra effort for such a small task, no?

Wouldn’t it be way easier to have an additional button within Microsoft Teams (injected by 3rd party extension app). Once you hit this button, the extension app could read your current Microsoft Teams context, create the meeting instances in the background, and send it out to all your chat participants, including a link to a virtual meeting session?


Schedule 3rd party meeting

While not replacing the actual purpose of the 3rd party application (hosting virtual meetings), such a small but convenient gimmick would serve the following purposes. On the one hand, it helps in preventing distraction as it’s not requiring you to leave the current Microsoft Teams environment. We all know how inviting our favorite shopping website is once we are distracted from our current task... On the other hand, the extension app will save you valuable time, you can use for more productive tasks.

So far so good! I’m sure you understand now that good Microsoft Teams extension will not only provide additional visibility to existing service or software offerings, but primarily support and simplify your daily working life. Isn’t it a solution where everyone benefits from?

SAP extensions for Microsoft Teams


SAP loves Microsoft Teams

Being one of the largest enterprise software providers on the globe, there are a countless number of Microsoft Teams extension use cases in the SAP sphere, which can simplify your life as an SAP enthusiast. Just think of the sheer amount of business processes in an S/4HANA system requiring your daily attention…

While several out-of-the-box Microsoft Teams apps for SAP solutions already exist, in this blog post series we want to show you how to develop your own Microsoft Teams extension application. So instead of waiting for a standard solution for your concrete SAP use-case (which might not even fit your requirements 100%), why not learn how to create a self-made app?

The extension application developed in the upcoming blog posts will show you how to do so and allow you to interact with one of your potential SAP systems, in this case SAP SuccessFactors. You will see that once the first application is developed and deployed, the possibilities for other use-cases are just a few lines of code away.

So, what is the use-case of the application you’re going to implement in this blog post series?

The extension use case


Time Off request in SAP SuccessFactors

The use-case covered is supporting an activity, which is relevant to probably every single person out there, working on a small or huge company. It is about creating a time off request. No matter if you’re sick, want to leave on vacation or need to fulfill a jury duty, a time off request must be created in the HR-system.

The number of potential leave reasons is endless and business processes (like workflows, recalculations, …) triggered by such a request are very complex. Therefore, human resource management solutions like SAP SuccessFactors, offer dedicated functionalities, workflows, and standard processes, to manage leave requests based on your individual requirements as a customer.

Hint: In the following, this blog post series will be using time off request and leave request in a congruent sense.

So far so good, we’ve found a scenario relevant for a lot of people out there. Awesome! But where is the role of Microsoft Teams in such a scenario? What part of the leave request process can be simplified by a Microsoft Teams extension app? Let’s think about it for a few seconds!

The role of Microsoft Teams

As already explained, a Microsoft Teams extension serves the purpose of quickly conducting important tasks in a familiar working and collaboration environment. By providing seamless and well-integrated core features, you can remain within Microsoft Teams and perform tasks and important to-dos with just a few mouse clicks. The same applies to the leave request scenario!


Veeerrryyy high level concept

Wouldn’t it be a great simplification if you could create a leave request right from within Microsoft Teams? Imagine an extension app which offers you an option to select your leave type, the start and end date of your leave and within seconds the request would be sent to SAP SuccessFactors?


Create a leave request from within Microsoft Teams

May it be straight from the chat with your manager, in a separate Microsoft Teams tab or as a guided bot experience. While 99% of the magic and business logic still happens in SAP SuccessFactors, the user interaction itself will be handled by the Microsoft Teams client. No more need to open a browser, load SAP SuccessFactors, desperately remember your credentials, find the correct tile from the Home screen, and so on… You all know the story…

Same for the approval of a leave request. Instead of visiting the SAP SuccessFactors system to check for new leave requests or scanning the email inbox, your manager just gets an instant notification in Microsoft Teams once a leave request is submitted. He can decide on the go whether to approve or reject the request from within Microsoft Teams.


Approve or reject a leave request

Whereas complex leave scenarios (e.g., requiring document uploads or further workflow steps) can still be handled from the comprehensive SAP SuccessFactors user interface, the simple and most frequent sick leave or your next day off can be requested within seconds using your Microsoft Teams client.

Sounds good, doesn’t it? As said, the key benefit of such an extension is to save you valuable time and to prevent distraction by reducing the amount of jumping between different UIs and systems for ordinary tasks. I think we all agree that such a feature would greatly support your daily working life, not?

Well, now we’ve found the use-case and understood the role of Microsoft Teams in this scenario, but what else does it need, to create a Microsoft Teams extension application, that is also adopted in the real world?

Think of the Microsoft extension apps you’re using yourself. Which of these apps do you like the most and why? What kinds of features are valuable to you when using an extension app in Microsoft Teams?

Key solution benefits

We also thought about these questions and identified some (from our perspective) of the most relevant key pillars driving the adoption of a Microsoft Teams extension app:

  • Seamless integration
    Make the app as Microsoft Teams native, appealing, and integrated as possible. You should never have the feeling of leaving the current MS Teams environment, by e.g., displaying the existing SAP SuccessFactors interface within the Microsoft Teams client.
  • Single-Sign-On
    No additional logins should distract you from using the app. If you’re required to login every time, you’re using the extension app, you can also open the browser and do the tasks right there.
  • Multiple entry points
    Adoption will rise by offering the leave request feature as a bot, a messaging extension or in a tab allowing you to use the app with the least mouse clicks possible and you can always choose from your favorite way of submitting a leave request.
  • Notification handling
    Send instant notifications to you as user once a leave request is submitted or updated. If you need to check for updates in SAP SuccessFactors manually, the value of a Microsoft Teams extension is drastically reduced. This is what notifications are supposed to do!
  • Two-Way support
    Leave requests created or approved in SAP SuccessFactors itself, shall also appear in Microsoft Teams and not just vice versa. As said, the extension app is not supposed to replace the actual software offerings which still can be used by you!
  • Mobile support
    To bring real value to you and other users, the extension also needs to offer its features on mobile devices. Using the native Microsoft Teams app you, need to have the option to create, approve or reject leave requests and being informed on status updates instantly.

For sure, there are many more aspects driving the adoption of a Microsoft Teams extension app, but I’m sure you can also agree on the ones selected above. These will support in making the difference between an app just “existing” in the app store and app “being used” . Whereas the listed features are some general aspects supporting the adoption of a Microsoft Teams extension app, let’s have a sneak preview of the functional aspects implemented.

Extension key features

While you will learn all about the features of the sample application in the next part of the blog post series, here’s already a short appetizer for you. Once implemented, the following business processes will be supported by the extension application:

  • Create a leave request for available time types from within Microsoft Teams
  • Check the balance of a time type before creating the leave request
  • Receive a notification once a leave request needs to be processed
  • Have an option to approve or reject leave requests with one mouse click
  • Get informed on status changes (approved, rejected, cancelled, …)
  • Keep track of approval/rejection decisions

Whereas the potential features of such a Microsoft Teams extension app are way more comprehensive than what you will build during this blog post series (e.g., upload of sick leave slips), it will give you an exceptionally good idea of how to enhance or implement such an extension scenario on your own.

What’s next?

That’s it for the first part of this blog post series. I hope you got a good understanding of Microsoft Teams extension scenarios in general and what you can expect from the upcoming blog posts. Stay excited for the next episode, in which you will see in great detail, what the result of this this whole story will look like!

Stay curious!