About the integration
DataCamp supports integrating with an LMS via SFTP. In the integration, the DataCamp content catalog and learning events are sent to an SFTP server provided by the customer’s LMS in the form of flat CSV files on a periodic basis. The LMS then uses these files to update its internal catalog and progress/completion records.
Content and events sync process
DataCamp can sync its full catalog to the LMS. This includes courses, projects, practices, assessments, skill and career tracks and custom tracks. For courses, projects, practices and assessments, content completions can be synced. Furthermore, for courses, we can sync started events.
The sync interval is customizable, we support hourly, daily, weekly and monthly syncs. Furthermore, the timestamp on which the sync happens can be customized to your needs. It’s also possible to plan the first sync ahead of time.
CSV file structure
To cope with the variety in LMS’es, the content of the CSV files sent by DataCamp is fully customizable. The structure of the CSV file is defined in a template, for which the Handlebars syntax is used. The DataCamp team is happy to help you set up the right template, based on the available fields found in the available fields section below.
Available fields
The table below summarizes the fields that can be used in the content CSV files.
Name | Description |
General | |
contentType | The content type of the item, e.g. COURSE |
id | The unique identifier for the content item on DataCamp |
xapiId | The IRI for the item used in the xApi integration |
title | The title of the content item. Titles are in the format “[title] - [contentType]”, e.g. “Wrangling and Visualizing Musical Data - Project |
description | The description of the content item |
url | The url to the content item |
imageUrl | The URI for the thumbnail, based on the technology (R, SQL …) if available, the DataCamp logo if not. You can chose between svg, jpg or png |
live | Set to “true” for active content, “false” for archived content |
technology | If available, the technology of the content item |
updatedAt | The timestamp when the item was last updated |
Courses | |
topic | the topic of the course, consisting of a name and description |
instructors | The list of instructors for the item, consisting of a fullName per instructor |
timeNeededInHours | The amount of hours needed to complete the item |
includedInLicenses | The products the content item is part of |
infoUrl | The url of the internal description page for the content item |
publicInfoUrl | The url of the external landing page for the content item |
Projects | |
isGuided | Whether this is a guided or unguided project |
topics | A list of topics for the item, consisting of a name and description per topic |
instructors | The list of instructors for the item, consisting of a fullName per instructor |
timeNeededInHours | The amount of hours needed to complete the item |
publicInfoUrl | The url of the external landing page for the content item |
Assessments | |
infoUrl | The url of the internal description page for the content item |
publicInfoUrl | The url of the external landing page for the content item |
Practices | |
infoUrl | The url of the internal description page for the content item |
Skill and career tracks | |
category | “Skill” for skill tracks, “career” for career tracks |
content | The list of content items included in the track, consisting of contentType, contentId and position per content item |
includedInLicenses | The products the content item is part of |
Custom tracks | |
category | Set to “custom” |
content | The list of content items included in the track, consisting of contentType, contentId and position per content item |
The table below summarizes the available fields for the learning events CSV files.
Name | Description |
contentId | The DataCamp id of the item associated with the event |
contentType | The content type of the completed or started item |
The e-mail address of the user that completed or started the item | |
nameid | If available, the nameid (send by the IDP) of the user that completed or started the item |
timestamp | The timestamp on which the event was generated |
eventType | The type of the event (possible values are 'completion' or 'started') |
SSO and deeplinking
All content items sent by DataCamp have a url, which is a so-called deeplink. If single sign-on is enabled and set to required for your organization on the DataCamp side, these links will redirect learners to their identity provider before redirecting them to the actual content on DataCamp.
If single sign-on with the same identity provider is configured on the LMS, this allows a seamless experience between the LMS and DataCamp. If learners are already logged into their LMS, they will not have to sign in again when they launch a content item on DataCamp.
Full and delta files
DataCamp can sync its catalog and events via SFTP in two ways: full files and delta files.
When making use of full files, the CSV files sent for every sync will contain all items in the DataCamp catalog and all events made for the organization. In that case, the LMS is responsible for only inserting what it hasn’t stored yet, and making sure that what it has stored is up-to-date according to the file.
When using delta files, this responsibility lies at DataCamp. The first file for both content and learning events will be a full file as described above. The files that follow in the following syncs will each time be deltas on the previous sync. This means that they will only contain:
- New content items launched since the last successful sync;
- Updates to existing content items that happened since the last successful sync;
- events that occurred since the last successful sync.
You can choose to make use of one of these files, but it is also possible to include both files in every sync.
File naming
The integration can be set up to flexibly name the files. Files can have a fixed name, in which case files uploaded during a sync will overwrite any existing files from the previous sync. In the case of flexible names, a timestamp can be included in the filename. This timestamp is the timestamp on which the file is generated. We currently support all common date and time formats.
File encryption
DataCamp supports sending CSV files in an encrypted way using PGP encryption. When enabled, files are encrypted with your public key before they are uploaded to the SFTP server. The corresponding private key will then be needed on your side to decrypt the files while importing them into your LMS.
Server authentication
DataCamp supports password and public key authentication for SFTP. In the first case, you can provide DataCamp with a username and password. In the second case, DataCamp can provide a public key that you can whitelist on your server.
Prerequisites
Before setting up an integration via SFTP, the following requirements must be met:
- You need to have an SFTP server available with either:
- An account created that can be used by DataCamp to upload files
- The possibility to add trusted public keys
- An LMS that supports importing content via CSV files
Setup
In order to set up an integration via SFTP, start by configuring your LMS to download and process CSV files from your SFTP server.
Next, provide DataCamp with the following information:
- Whether you want to make use of full or delta files;
- What content types should be synced (courses, projects …);
- If learning events should be synced, which event types the file should include (completion and/or started)
- The credentials for your SFTP server, including:
- Hostname,
- Port
- Username/password in case of password-based SFTP authentication,
- Path to which the files should be uploaded, with sufficient permissions for the provided user
- File format (csv, txt …)
- CSV delimiter (“,”, “;” …)
- Your PGP public key if files should be encrypted;
- How the files should be named;
- The sync cadence and timestamp of the first sync.
The DataCamp team will set up the integration.
FAQ
Will a user completion be included in an SFTP sync if a course is skipped?
Completions for skipped courses are not included in SFTP files containing learning events files.(Courses can be skipped as part of a track, when passing a "test-out" assessment).