Introduction
Enterprise users often move between SAP applications, Microsoft Teams, Outlook, and other Microsoft 365 services to complete a single business process. The integration of SAP Joule with Microsoft 365 Copilot helps reduce this context switching by providing a conversational experience across the SAP and Microsoft ecosystems.
With the integration enabled, users can access supported SAP capabilities from Microsoft 365 Copilot or Teams. In the opposite direction, users working with Joule can use supported Microsoft 365 context, such as emails, calendar information, and Teams conversations. Microsoft describes this as a managed, bidirectional integration that does not require an organization to build a custom Copilot agent.
We recently worked through this integration and found that the technical steps are only one part of the journey. Identity mapping, tenant design, consent, user provisioning, system propagation, and ownership across SAP and Microsoft teams all require careful planning.
This article presents a structured implementation approach, the most important validation steps, and the challenges administrators should anticipate.
Important: Product behavior, supported scenarios, permissions, and setup procedures can change. Always validate the current requirements against the official SAP and Microsoft documentation before implementing changes in a production environment.
What Does the Integration Provide?
The integration supports two main interaction directions.
Microsoft 365 Copilot to SAP Joule
A user working in Microsoft 365 Copilot or Microsoft Teams can ask an SAP-related question. The request is routed to Joule, which processes the question using the SAP applications and capabilities available to that user.
Example:
@Joule Show me my remaining leave balance.
Depending on the configured SAP solution and enabled Joule capabilities, this request could retrieve information from SAP SuccessFactors.
SAP Joule to Microsoft 365
A user working in Joule can request supported Microsoft 365 information.
Example:
Find emails from customers concerning delayed payments.
Microsoft’s documentation identifies HR, procurement, finance, sales, and supply-chain scenarios as representative use cases. Supported experiences depend on the SAP products connected to Joule and the standard capabilities currently available from SAP and Microsoft.
The Microsoft AppSource listing explains that the SAP Joule app can provide transactional, navigational, and informational capabilities. The capabilities actually available to a user depend on the connected SAP solution, Joule configuration, licensing, and role-based authorization.
High-Level Architecture
The integration involves the following primary components:
- Microsoft Entra ID
- SAP Cloud Identity Services, Identity Authentication
- SAP Business Technology Platform
- SAP Joule
- Microsoft 365 Copilot
- Microsoft Teams, where applicable
- SAP applications connected to Joule
The identity foundation is an OpenID Connect trust relationship between Microsoft Entra ID and SAP Cloud Identity Services. SAP processes the SAP-specific business request, while Microsoft provides the Copilot and Teams user experience.
A simplified request flow looks like this:
User
|
v
Microsoft 365 Copilot or Teams
|
v
Microsoft Entra ID authentication
|
v
SAP Cloud Identity Services trust and user mapping
|
v
SAP Joule
|
v
Connected SAP business application
For the reverse direction, Joule passes a supported request through the authorized Microsoft integration so that relevant Microsoft 365 information can be accessed under the signed-in user’s permissions.
Prerequisites
Before starting the implementation, confirm the following:
- Joule is subscribed, activated, and connected to at least one supported SAP business tenant.
- SAP Cloud Identity Services is available and configured for the BTP landscape.
- A Microsoft Entra ID tenant is available.
- Microsoft 365 Copilot is deployed to the intended users.
- Users have the appropriate Microsoft 365 Copilot and SAP licenses.
- Users who will access Joule from Microsoft 365 have been created or replicated in the SAP Cloud Identity Services user store.
- Administrative access is available for Microsoft Entra ID, Microsoft 365, SAP Cloud Identity Services, and SAP BTP.
- Conditional authentication for Joule has been reviewed and configured where required.
- Security, privacy, and compliance teams have approved the intended information flows.
Microsoft’s public overview lists SAP S/4HANA Cloud Private Edition, SAP S/4HANA Cloud Public Edition, SAP SuccessFactors, selected SAP Ariba scenarios, and other Joule-supported cloud applications as examples of supported applications. The SAP documentation should be treated as the authoritative source for the latest product-specific availability.
Step 1: Define the Tenant Strategy
Tenant planning should happen before creating the Entra application.
SAP states that Joule maintains a 1:1 relationship with a Microsoft Entra ID tenant. A single Entra tenant therefore cannot be used to configure multiple Joule environments in this integration model. For example, a development Joule environment and a production Joule environment cannot both be associated with the same Entra tenant. SAP recommends using a dedicated Microsoft 365 tenant when a separate integration test environment is required.
Document the following before proceeding:
SAP BTP global account:
SAP BTP subaccount:
Joule environment:
SAP Cloud Identity Services tenant:
Microsoft Entra tenant name:
Microsoft Entra tenant ID:
Microsoft 365 environment:
Integration owner:
Identity owner:
Security approver:
Lesson learned
The tenant constraint can affect project timelines, licensing, test planning, and security approval. It should be addressed during solution design rather than discovered during configuration.
Step 2: Collect Tenant and Issuer Information
You will need both the Microsoft Entra issuer and the SAP Cloud Identity Services issuer.
The Entra issuer follows this pattern:
https://login.microsoftonline.com/<ENTRA_TENANT_ID>/v2.0
The SAP Cloud Identity Services issuer can normally be obtained from its OpenID Connect discovery endpoint:
https://<IAS_DOMAIN>/.well-known/openid-configuration
Open the endpoint and record the exact value of the issuer property. The issuer value should be copied exactly, including protocol and domain, and normally without an unintended trailing slash.
Validation checkpoint
Confirm that:
- The Entra tenant ID belongs to the intended environment.
- The SAP Cloud Identity Services issuer resolves successfully.
- The issuer value matches the domain used in the trust configuration.
- Custom domains, if used, are included in the design.
Small differences in issuer URLs can cause token validation errors or repeated authentication redirects.
Step 3: Register the Federation Application in Microsoft Entra ID
In the Microsoft Entra admin center, navigate to:
Identity
> Applications
> App registrations
> New registration
Create an application with a meaningful name, such as:
Federation with SAP Cloud Identity Services
Configure the web redirect URI:
https://<IAS_DOMAIN>/oauth2/callback
After registration, record:
- Application (client) ID
- Directory (tenant) ID
Both values are required during later stages of the integration. [community.sap.com]
Step 4: Add All Required Redirect URIs
Do not assume that one SAP Cloud Identity Services domain is sufficient. Depending on the tenant configuration, SAP may expose multiple supported domains.
Typical callback patterns include:
https://<TENANT>.accounts.ondemand.com/oauth2/callback
https://<TENANT>.accounts.cloud.sap/oauth2/callback
If a custom domain is used:
https://<CUSTOM_DOMAIN>/oauth2/callback
Add each applicable address under the application’s web authentication configuration. Missing callback URLs can result in redirect URI mismatch errors or inconsistent sign-in behavior when users enter through different endpoints. please make end of urls without spaces.
Step 5: Configure the Federated Credential
In the Entra application, navigate to:
Certificates & secrets
> Federated credentials
> Add credential
Select Other issuer and configure values corresponding to the SAP Cloud Identity Services trust.
A representative configuration includes:
Issuer:
<SAP_CLOUD_IDENTITY_ISSUER>
Subject identifier:
Federation with Entra ID
Audience:
https://login.microsoftonline.com/<ENTRA_TENANT_ID>/v2.0
The subject identifier must later correspond with the configuration in SAP Cloud Identity Services. Record the exact value instead of relying on memory or manually retyping it.
Common challenge
A mismatch in the issuer, subject, or audience can create authentication failures even when the Entra application itself appears healthy.
Step 6: Configure Claims, Permissions, and Token Versions
Add the required Microsoft Graph delegated permissions to the federation application:
emailoffline_accessopenidprofile
Grant tenant-wide administrative consent and verify that the permission status shows as granted. Also configure the optional email claim for the access token when required by the documented setup.
The documented application manifest configuration uses version 2 access tokens:
"requestedAccessTokenVersion": 2
For the corresponding legacy manifest property, the documented value is:
"accessTokenAcceptedVersion": 2
Review the current Entra portal experience and SAP instructions before editing manifest properties, particularly because portal labels and legacy manifest views can change.
Common challenge
It is possible for interactive sign-in to succeed while downstream token exchange still fails. This often leads teams to focus on the user account even though the actual problem is consent, token version, audience, or API exposure.
Step 7: Expose the Federation Application API
In the Entra application, navigate to:
Expose an API
Configure the Application ID URI according to SAP’s documented format. The SAP Community procedure specifically notes that the identifier must end with the expected accounts.cloud.sap domain format.
Create the delegated scope:
access_as_user
Provide an appropriate administrator consent name and description, then save the scope.
Carefully distinguish between:
- The
access_as_userscope exposed by the federation application - The
access_as_userpermission later added for SAP’s Copilot API access application
Although the names are similar, they serve different parts of the integration configuration.
Step 8: Configure Microsoft Entra ID as the Corporate Identity Provider
In the SAP Cloud Identity Services administration console, navigate to:
Identity Providers
> Corporate Identity Providers
> Create
Create a provider with settings similar to:
Display name:
Federation with Entra ID
Identity provider type:
OpenID Connect Compliant
Use the Entra issuer and federation application client ID collected earlier. Complete the trust configuration and ensure that the subject information corresponds exactly with the federated credential created in Entra ID.
Validation checkpoint
Test authentication through SAP Cloud Identity Services before adding Microsoft 365 Copilot to the troubleshooting scope. This isolates identity federation from agent installation and Joule routing.
Step 9: Validate User Provisioning and Identity Mapping
All intended users must exist in the SAP Cloud Identity Services user store. Authentication in Entra ID alone does not guarantee that Joule can identify and authorize the user.
Check that the following attributes are consistent:
- Login name
- Email address
- User principal name
- Subject identifier
- User status
- Relevant group or role assignments
Common challenge
A pilot user may have the correct Microsoft 365 Copilot license and still be unable to use Joule because the matching identity is absent, inactive, or inconsistently mapped in SAP Cloud Identity Services.
Use a small group of pilot accounts and create a simple identity comparison sheet before expanding the rollout.
Step 10: Add Microsoft 365 Copilot to the Joule Landscape
In the SAP BTP cockpit, open the system landscape and add a system of type:
M365 Copilot for SAP Joule
Enter the Microsoft 365 tenant ID associated with the intended Copilot and Teams deployment.
For a new Joule implementation, the integration can be activated during the Joule Booster execution. For an existing Joule implementation, add the new system to the relevant formation in the BTP cockpit.
Validation checkpoint
Confirm that:
- The correct Microsoft tenant ID was entered.
- The new system is present in the landscape.
- The system is included in the correct Joule formation.
- The formation has completed successfully.
- No previous test tenant association is still active.
Step 11: Install SAP Joule from Microsoft AppSource
Use the Microsoft 365 admin center to install and deploy the official SAP Joule app to the appropriate users or groups.
The official AppSource listing states that the app connects to SAP solutions already integrated with Joule and can provide transactional, navigational, and informational capabilities based on the underlying SAP solution. It also notes that the necessary Microsoft and SAP licensing must be in place.
After the setup is complete, it can take up to two hours before the Joule agent becomes accessible from Microsoft 365 Copilot Chat. Do not immediately rebuild the application or modify permissions simply because the agent is not visible in the first few minutes.
Operational recommendation
Record:
Deployment start time:
Assigned user group:
App deployment status:
First successful visibility time:
First successful test time:
This helps distinguish normal propagation from an actual configuration failure.
Step 12: Enable Joule to Pass Requests to Microsoft 365 Copilot
The reverse direction requires additional consent for SAP’s Copilot API access application.
According to SAP’s documented procedure, an administrator first performs the tenant-specific consent flow for the SAP Copilot API access application. The federation app is then updated by adding the delegated access_as_user permission from:
svc-ai-joule-copilot-api-access
After adding the permission, grant administrator consent and verify that its status changes to Granted.
This step is necessary when Joule must access supported Microsoft information, such as Outlook calendar context, under the signed-in user’s authorization.
Step 13: Test the Integration in Both Directions
Testing only the launch experience is not sufficient. Validate identity, routing, authorization, and business responses.
Test A: Microsoft 365 Copilot to Joule
Example:
@Joule What is my remaining leave balance?
Or, where supported:
@Joule Show me open purchase orders past their expected delivery date.
Microsoft lists HR, procurement, and finance as representative scenarios for requests initiated from Copilot and routed to Joule. Actual availability depends on the connected SAP applications and enabled standard scenarios.
Test B: Joule to Microsoft 365
SAP’s documented validation example is:
What is in my calendar today?
If the integration and permissions are working, Joule should request the relevant Microsoft calendar information for the signed-in user.
Test C: Authorization Boundary
Test with:
- A fully licensed pilot user
- A user without the required SAP role
- A user not provisioned to SAP Cloud Identity Services
- A user outside the deployment group
The integration should not give users broader SAP or Microsoft access than their existing permissions permit. The AppSource description emphasizes that Joule provides role-based access to connected SAP processes and data.
Challenges and Troubleshooting Guide
1. The Joule Agent Does Not Appear
Possible causes:
- Microsoft 365 deployment is still propagating.
- The app was assigned to the wrong group.
- The user does not have the required Microsoft 365 Copilot license.
- The user has not signed out and back in.
- The Microsoft tenant does not match the tenant configured in BTP.
SAP notes that the agent can require up to two hours to become available after installation and setup.
2. Authentication Repeats or Redirects Continuously
Check:
- All applicable callback addresses
- SAP Cloud Identity Services issuer
- Entra issuer
- Federated credential subject
- Audience value
- Corporate identity provider configuration
The SAP identity configuration guide documents these values as interdependent parts of the OpenID Connect trust.
3. Authentication Works but Joule Does Not Respond
Check:
- Whether the user exists in SAP Cloud Identity Services
- Whether the Joule formation is complete
- Whether the appropriate SAP business system is integrated with Joule
- Whether the required SAP role is assigned
- Whether admin consent has been granted
- Whether the requested scenario is supported
Microsoft notes that this managed integration supports standard Joule and Microsoft 365 Copilot scenarios and is distinct from custom agents created in Copilot Studio or Microsoft Foundry.
4. Joule Cannot Access Microsoft 365 Information
Check:
svc-ai-joule-copilot-api-accessis presentaccess_as_userwas added- Administrative consent was granted
- The user has access to the relevant Microsoft 365 service
- Conditional Access is not blocking the token flow
SAP’s reverse-integration procedure requires the delegated permission and administrator consent before Joule can pass supported requests to Microsoft services.
5. Development and Production Tenant Collision
If an Entra tenant is already associated with one Joule environment, do not assume it can also support another Joule environment. Review the 1:1 tenant limitation and use a separate test Microsoft 365 tenant when necessary.
Security, Privacy, and Governance Considerations
The integration should not be approached as a purely technical app installation. It connects two enterprise identity and AI ecosystems, so security and governance teams should review the use cases, application permissions, consent, data handling, audit responsibilities, and user communications.
SAP advises that generative AI output should be reviewed before use and that users should avoid entering sensitive personal data or other personal data they do not want processed. SAP also notes that Microsoft 365 Copilot processing is governed by the customer’s agreement with Microsoft.
Recommended governance controls include:
- Start with a limited pilot group.
- Use least-privilege SAP roles.
- Review Entra enterprise application permissions.
- Document all administrator consent actions.
- Define an incident and access-revocation process.
- Verify organizational retention and compliance requirements.
- Train users to validate AI-generated responses.
- Do not use production credentials or sensitive data in screenshots.
- Review use cases with data protection and works council representatives where applicable.
Key Lessons Learned
1. Treat identity federation as its own workstream
Most implementation delays are not caused by the conversational experience itself. They are caused by mismatched issuers, callback URLs, user identities, permissions, or consent.
2. Confirm tenant topology before configuration
The 1:1 relationship between a Joule environment and an Entra tenant can significantly affect development and production planning.
3. Test one direction at a time
First test Microsoft 365 Copilot to Joule. Then test Joule to Microsoft 365. This makes it easier to identify whether the failure is related to the Joule agent, SAP business authorization, or Microsoft API access.
4. Allow time for Microsoft 365 propagation
Agent visibility is not always immediate. SAP documents a potential delay of up to two hours.
5. Separate managed integration from custom-agent requirements
The Joule and Microsoft 365 Copilot integration is a prebuilt, managed experience. If a requirement involves custom orchestration, organization-specific SAP APIs, proprietary workflows, or custom agents, Microsoft positions Copilot Studio, the Microsoft 365 Agents SDK, and Microsoft Foundry as separate extension approaches.
Conclusion
Integrating SAP Joule with Microsoft 365 Copilot can provide a valuable conversational bridge between SAP business processes and the Microsoft 365 working environment. Users can access supported SAP capabilities from Copilot or Teams, while Joule can use supported Microsoft 365 context without requiring a custom agent for the standard integration.
The implementation becomes much more predictable when it is treated as a coordinated identity, security, SAP platform, and Microsoft 365 deployment. Tenant planning, exact issuer values, complete redirect URI configuration, user replication, delegated permissions, administrative consent, and controlled testing are the areas that deserve the most attention.
Our most important lesson was simple: validate every trust boundary independently before testing the entire conversational journey. This approach reduces troubleshooting time, makes ownership clearer, and produces a more reliable production rollout.
Documentations and Further Reading
SAP Help Portal: Integrating Joule with Microsoft 365 Copilot
The primary SAP integration page covering prerequisites, BTP landscape configuration, Joule app installation, tenant limitations, and propagation expectations.Microsoft Learn: SAP Joule and Microsoft 365 Copilot Integration
A useful public overview of the bidirectional architecture, supported scenarios, prerequisites, setup flow, and troubleshooting. The page was updated in May 2026.SAP Community: Configuring SAP Cloud Identity Services and Microsoft Entra ID for Joule
A detailed walkthrough for establishing the OpenID Connect trust, including application registration, redirect addresses, credentials, permissions, token settings, API exposure, and corporate identity provider configuration.SAP Community: Enable Joule to Pass Requests to Microsoft Copilot and Teams
Covers the reverse integration, SAP Copilot API access application, delegated permission, administrator consent, and a calendar-based validation scenario.Microsoft AppSource: SAP Joule
The official application listing describing prerequisites and Joule’s transactional, navigational, and informational capability types.Microsoft Learn: About SAP with Microsoft AI
Provides broader architectural context for using the managed Joule integration, extending through Copilot Studio, or building more advanced enterprise AI solutions.Microsoft Learn: Copilot Studio and SAP Overview
Useful when the standard Joule integration does not cover a custom business requirement and a custom SAP-aware agent is being considered.