SuccessFactors Learning and Microsoft Teams VLS Integration
Authors: Sandeep Nahata and Euna Lee


The SuccessFactors Learning community rejoiced with a new feature introduced in the 2H 2021 release. In November 2021, Microsoft Teams was added as a Virtual Learning System (VLS) vendor available to integrate with the Learning module joining the already supported and well-known virtual meeting platforms such as WebEx and Adobe Connect.
A VLS integration in SuccessFactors Learning enables learning administrators to easily create and schedule training sessions to be delivered in virtual meeting rooms directly from the LMS. Setting up the Teams integration involves two sets of activities that are performed in the Microsoft Azure portal and in the SuccessFactors Learning module. The technical set up in Azure must be completed first before the set up in LMS can take place.
Microsoft Azure Portal setup:
-
Register the Application
- Login to your Azure portal
- Go To Azure Active Directory -> App Registrations
- Select New Registration and Add a Name for the Application e.g. SuccessFactors_Learning
- Select “Accounts in this organizational directory only (TALENTEAM LTD only – Single tenant)” or “Accounts in any organizational directory (Any Azure AD directory – Multitenant)” based on your setup type
- Redirect URI can be left blank.
- Click on Register

- Copy the Values for Application (client) ID and Directory (tenant) ID to the supporting excel provided

-
Generate a Client Secret
- On the Overview Screen for your App Registration, Click on Client Credentials: Add a certificate or Secret

- Click on New Client Secret, provide a description and expiration
- Please note that the integration will stop working when the client secret expires so look at options to either have a longer expiry periods (align with IT Security Policies) or ensure processes are in place to renew/extend the certificate expiry and update SuccessFactors Learning with the new details.
- A New Client Secret will be generated. Copy the Value and Secret ID to the Excel Spreadsheet provided. Please note that the secret value is usually masked after you move away from the page. If you don’t copy it upon generation, you may not be able to retrieve it and will need to generate a new one.

-
Set Microsoft Graph API Permissions
- On the App Registration screen, Click on API Permissions from the left menu and click on Add a Permission
- Choose Microsoft Graph -> Application Permissions

- Add the following permissions
- OnlineMeetings.ReadWrite.All – This is required to setup meetings on behalf of the user
- User.Read.All – This is required to link instructor accounts with Users in Teams
- OnlineMeetingArtifact.Read.All – This is of type application permissions which are required to fetch online meeting artifacts.
- Once the permissions have been added, click on Grant Admin consent for “Company Name”

- The status column should change to a green tick with the message “Granted for Company name”
-
Configure the Application Policies for Application Authentication.
The CsApplicationAccessPolicy policy controls which users the integration can act on behalf of. It is important that the integration can act on behalf of instructors so that it can retrieve meeting attendance information. To complete these steps, you must be an admin with admin access to Microsoft Teams and have access to PowerShell 5.1 or later.
- Open PowerShell
- *Run Command “Connect-MicrosoftTeams”
- An authentication window may appear where you have to provide your Teams/Azure login details.
- *Create a policy for the app registration with the following command
New-CsApplicationAccessPolicy -Identity <Policy_Name> -AppIds “<App_ID from Step1” -Description “<Description>”
e.g.
New-CsApplicationAccessPolicy -Identity SFLearning -AppIds “44eea86e-d1e0-4ac9-9132-4e07b80e418c” -Description “SFLMSVLStoTeams”
- Assign the policy to all users or specific users. Given the setup requires an Azure/Teams Admin Involvement, it may be worth enabling this for all users that your IT policies permit for.
- *All Users (Global Policy)
Grant-CsApplicationAccessPolicy -PolicyName SFLearning -Global
or
Set-CsApplicationAccessPolicy -Identity “Global” -AppIds 33a2b0b6-ef65-46ea-922e-4fbfeda8198b |
- *Specific Users (Individual Policy) – to be run for each instructor
Grant-CsApplicationAccessPolicy -PolicyName SFLearning -identity “instructor@example.com”

- The above commands will be automatically generated by the Excel Spreadsheet based on the inputs entered earlier.
* Each of the commands are automatically generated in the Excel Workbook attached. You can simply copy paste the commands into PowerShell
SuccessFactors Learning setup:
-
Enable VLS in LMS
- Navigate to System Administration > Configuration > System Configuration > LMS_ADMIN
- Change/confirm the setting ‘vleEnabled=’ to true
-
Add Teams VLS Configuration File
- Download the latest version of the VLS configuration template for MS Teams. This is available on the SAP Help portal (see ‘Additional Resources’ section below for a direct link to the SAP guide).
- Insert the required customer-specific information obtained from the Azure portal set up to the Teams configuration file template.
- Navigate to System Administration > Configuration > VLS Configuration and copy/paste the xml as a new VLS configuration file and save.
Add Instructor VLS Settings
-
- Navigate to People > Instructors and insert the Account ID in the ‘VLS Settings’ tab on each instructor record that should have access to the Teams VLS server.
- The Account ID would be the instructor’s email address and a password is not required.
- Select the ‘Use Existing Account’ radio button and apply the changes.

The LMS is now ready for use with Teams VLS!
The SuccessFactors Learning Experience:
Once the necessary configuration steps are completed as documented above, Learning admins have the ability to select the Teams VLS server for the classes which are planned to be delivered virtually during the class creation process. This automatically creates the virtual meetings in Teams. As admins update the time slots at the class level, this also updates the virtual sessions in Teams. This eliminates the need to perform these tasks in Teams and lessens the admin burden on training delivery.
Listed below are the key features of the integration:
- Maintenance of the registration list in Teams based on the user registrations and withdrawals in the LMS.
- Ability for instructors to launch the virtual sessions directly from their My Classes area.
- Ability for users to join the virtual sessions directly from their My Assignments tile.
- Ability to automatically record learning events for the virtual trainings based on the attendance in the virtual sessions. Admins must enable this on the class level and the VLS Attendance Processing APM must be scheduled to run in the customer’s environment.
Additional Resources – S-User ID login is required:
SAP VLS Configuration Guide – this document also contains the link to download the VLS configuration file templates
Knowledge Base Article for Microsoft Teams VLS – this article provides links to other Microsoft resources and articles for the Azure portal set up.
MSTeams_Config_Final
Additional Notes:
- Please note that the setup steps included here may vary from the steps provided by SAP but the steps included above seems to have worked during our repeated testing
- At the time of posting this blog, we were able to test this successfully in SalesDemo Environments, DC23, DC22 and DC4. It appears that there may be data center specific challenges you may run into and the best course is to get in touch with SAP support for help.
- We’ll soon be updating this with some FAQs as well based on the questions asked during the session
If you need further support, you can also ask us about one of our flexible support contracts where we can help with this and anything else to do with SAP SuccessFactors!
14 Comments
This is great, however my company uses Zoom instead of MS Teams. Would love to see a guide for VLS integration of Zoom.
You might find this helpful- https://blogs.sap.com/2022/05/25/zoom-vls-integration-with-successfactors-learning/
Hi Sandeep Nahata and Euna Lee
Great blog.
Do you have screenshots and/or a demo, how this looks like from the Instructor or End-User perspective.. both in SuccessFactors within the platform, within notifications and within Microsoft Teams.
There is a lot of settings for meetings in Microsoft Teams, which one are used, and can the Instructor change the settings for the specific sessions afterwards?
Do we need any Office 365 License for the instructor or student? Can the student be someone outside the organization with a gmail account? Any video with the use case about this integration?
Can you please post Skype Integration with LMS VLS !
Hello
Below is the link on SAP Help Site on on integration with Skype, I hope this helps.
https://help.sap.com/docs/SAP_SUCCESSFACTORS_LEARNING/b5f34f583e874dd58c40525e4504b99e/cbc139a758aa4ba3808737b7ab125666.html?locale=en-US
Possible to use delegated permission instead of application permission? OnlineMeetings.ReadWrite.All is more access than we typically like to grant.
Perhaps best raised with SAP and Microsoft on how the integration is built but based on our testing so far, the integration does not work with delegated permission and requires application permission.
This is not scalable for a huge organization with constant changing needs. I like the suggestion of Dave to use delegated permission is that something that you could investigate into? I don’t like to have a wide open permission that I then need to manually manage constantly to restrict it to the required persons that needs it.
Since SF is using SSO I would assume delegated access (with the same permissions as the Application) should do the trick and not exposes all meeting info of the whole company.
Hello and thank you for the information that you have provided above.
In your experiences with testing this functionality , can you advise if the Teams event hyperlink is included in the ICS file that gets sent with the automated notification from SF LMS to end user participant email accounts, and whether it’s an active link or displayed as plain text?
Many thanks in advance for your response!
What can be the cause of this error:
“This meeting could not be updated on the VLS server. Please try again later or note the error code and contact your VLS administrator.
VLS Error Code: Exception while delete Teams meeting”
Please advise.
Thanks
Could be a permission issue on Teams side. Alternatively, is it possible that the meeting was deleted in teams (or outlook directly) and is then being deleted from the LMS (and hence its not able to find the meeting in Teams directory)
How can you see the attendance list from the Teams side?
Please see a link that explains this further. This is a Teams function so you may need to check with your microsoft administrators
https://docs.microsoft.com/en-us/microsoftteams/teams-analytics-and-reports/meeting-attendance-report