Generic SFTP integration

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
email 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).