Microsoft Viva Learning Integration

About the integration

DataCamp provides a direct integration with Microsoft Viva Learning, making our content and learning records (completions) available on the LMS. 


List of DataCamp content on Viva Learning

Content sync process

We currently offer synchronization between DataCamp and Viva Learning of the following content:

  • Courses
  • Practices
  • Projects
  • Assessments
  • Skill / Career Tracks
  • Custom Tracks

Viva Learning does not differentiate between any of these concepts, and only knows the concept of a "catalog item" - which is thus not the same as a course in DataCamp. This means that structurally DataCamp represents all its content in the same way in Viva, but differentiate between types using the catalog item format, as seen below.


Example of what different DataCamp content types look like in Viva Learning

We synchronize content on a periodic basis (multiple times per day), so new DataCamp content will appear in your library shortly after it goes live. When DataCamp content is archived, it’s also archived on your Viva Learning instance in the next sync.

Content mapping

The table below summarizes the metadata for each content item DataCamp sends to Viva Learning.

Name Description
externalId The unique identifier for the content item on DataCamp, e.g. “course-123”
title The title of the content item, e.g. “Data Visualization with Python”
description Description of the content item.
contentWebUrl Content item URL. Deeplink URL if SSO is enabled and configured for the group.
languageTag Always “en-us”
sourceName Always “DataCamp”
thumbnailWebUrl PNG thumbnail asset
numberOfPages Always 0
duration Duration of the content item, converted to edm:Duration format, e.g. “PT15M” meaning 15 minutes, or “PT3H” meaning 3 hours
format Type of the content item, e.g. “Course” for courses, “Project” for projects, etc.
createdDateTime The date of ingestion to Viva Learning (not the date it was created on DC)
lastModifiedDateTime The date when the content item was last updated on DataCamp
contributors List of instructors that compiled the content item, if applicable. Some content items, such as assessments, do not have instructors.
skillTags List of technologies and/or topics related to the content item. 
additionalTags Currently unused, always an empty list.
isActive Determines whether the content item is active in your Viva Learning instance. Always “true”.
isPremium Always “true”
isSearchable Always “true”

 

Completions sync process

Next to content, DataCamp can optionally sync content completions to your Viva Learning instance. 

Completions are synced close to real time, which means that if a learner completes some content item on DataCamp, the completion should appear in Viva Learning within a few minutes.

User identifiers

To send a completion to Viva Learning, we have to tie the completion to the correct user in your Viva learning LMS by their Microsoft Entra ID. We support the following methods to identify users:

  1. Email - we'll try to find the user's Microsoft Entra ID by their DataCamp account email, meaning the learner's email on Datacamp must match the email in your LMS. This is why we require the "Read all basic user profiles" permission during admin consent.
  2. NameID - you provide us the required user identifiers (Microsoft Entra IDs) via SSO (SAML)
  3. LMS Username - you provide us the required user identifiers (Microsoft Entra IDs) via a special SAML attribute ("lms_username"), see more info below. 

Custom user identifiers

As mentioned above, we can use the learner's email or nameid (sent via SSO) as the user's identifier in the completions we send. But, in case you want to send a completely different identifier that is neither of these (email or nameid), then we allow you to send over an identifier via a custom SAML attribute named "LMS_USERNAME". If you include this attribute in the SAML response, and let us know beforehand, we'll send this as the user identifier in upcoming completion syncs.

For this field, we accept the following attribute names:

  • LMS_USERNAME
  • http://schemas.xmlsoap.org/ws/2005/05/identity/claims/lms_username

SSO and deeplinking

DataCamp provides SSO support to allow for a seamless sign-in experience so that learners can jump directly into learning on DataCamp in one simple click. 

This is made possible by so-called deeplinks that are sent over as the content URLs to your Viva Learning instance by default, if you have an active SSO integration on DataCamp. These links will redirect learners to their identity provider before redirecting them to the actual content on DataCamp.

Prerequisites

In order to set up an integration with Viva Learning, the following requirements must be met:

  • You must have an active Viva Learning license
  • You must have an active enterprise subscription on DataCamp
  • You must have admin privileges on your Viva Learning instance, in order to accept a consent form
  • You must be an admin in the DataCamp group 
  • If you want users to be identified via NameID or custom user identifiers to sync completions, SSO for DataCamp must be enabled and configured correctly

Setup

The following steps will describe how to set up an integration with Viva Learning.

Step 1: Request an integration from DataCamp support (or your CSM)

First, notify DataCamp support (or your assigned CSM) to get the integration process started, and include the following information:

  • The list of content types you want to sync, from the following:
    • Courses
    • Practices
    • Projects
    • Assessments
    • Tracks (Skill & Career)
    • Custom Tracks
  • Whether you want completions to be synced to your LMS

Step 2: Consent form is visited and accepted by the Viva Learning admin

Your DataCamp contact will provide you with a URL that must be visited by your Viva Learning admin. They must be an admin in your DataCamp group and logged in before clicking the link!

The URL looks like the following:

https://lms-api.datacamp.com/viva/onboarding/initiate-admin-consent?...

(The URL will also contain many query parameters specific to your DataCamp group.)

When visited, if they have sufficient permissions, the admin will see a consent form that they’ll have to accept:


Viva Learning Consent form displayed when the link is visited

After accepting the consent form, they’ll be redirected back to DataCamp where they’ll see the message: “Successfully created the DataCamp provider in your Viva Learning tenant.”. This means DataCamp was successfully created as a custom provider in your Viva Learning instance, that we will sync your content to.

If the consent form fails, please double check that you are already logged in to DataCamp before giving consent. In case it’s another issue, we will investigate and assist you in resolving it.

After completing the admin consent form, the integration will be enabled and begin synchronizing content, and optionally, completions.

Keep in mind that content can take up to 24 hours to be visible in your Viva Learning instance.

 

FAQ

What are the requested permissions in the admin consent form used for?

We require permissions for these main reasons: to manage the Datacamp provider in your LMS, to sync our content catalog, and send user completions. Below we'll explain what each of the permissions in the admin consent form are used for:

  • Manage learning provider - required during onboarding to create and update the DataCamp provider in your Viva Learning LMS
  • Manage all learning content - required to create and update our content for the DataCamp provider in your LMS
  • Read and write all self-initiated courses - required to create completions (learning records) in your LMS when they complete content on Datacamp
  • Read and write all assignments - required to create completions of assigned content in your LMS. This feature is not supported yet.
  • Read all users' basic profiles - required for us to find a user's Microsoft Entra ID by their Datacamp email, to send their completion to your LMS. Creating a completion requires a Microsoft Entra ID.
  • Sign in and read user profile - this is a default delegated permission when using the admin consent flow, and only pertains to the current admin user, and only for the current session.