Data Imports - Object: Enrollments


This article covers the bulk import of enrollments from a file, one-time or on a scheduled basis (normally only done one-time, as part of the initial implementation). The main Data Imports - An Overview article should also be reviewed for information on importing data to Absorb in general. For the purposes of this article, we'll assume that you are already familiar with managing enrollments individually in Absorb (more info on enrollments can be found here).

Note that Enrollments include both Course Enrollments and Curricula Enrollments. You can import one or the other or both in a single file.



Quick Start

Here are the minimum pieces of input that we'll need from you in order to set things up:

Preparing the File

Ensure you've downloaded the most recent Absorb Data Mapping document from this helpdesk article. Refer to the Courses tab for a list of fields that can be included, including the minimum required fields and any dependencies. Once your file is created, please take a moment to validate the content by considering the items noted here.


In addition to the generic configuration options available to all modules, the following configuration options are available for Users (mandatory marked with *):


It's notable that while most other modules allow for a delta file to be automatically generated (see our Configuration article, "Delta File?"), enrollments do not. The entire file is always processed.

Column Mapping

The Data Imports - Configuration article covers column mapping in general. You will need to specify which Absorb fields should be mapped to each column in the file based on column headers (e.g. The column with header "Course" should be mapped to the Absorb "Course External ID" field). The following fields/columns are mandatory for Enrollments:

  • User_ExternalId (or whatever the User Lookup property is)
  • Course_ExternalId (or whatever the Course Lookup property is)
  • IsActive
  • Status
  • DateStarted
  • DateCompleted

There are a few columns with special considerations:

Absorb supports the concept of multiple enrollments in a single course or curriculum. The IsActive field is used to control this. Generally, if a client is planning to import only a single enrollment per User and Course pair then this value should be set to 1 (Active).

However, if a client’s User had taken the Course twice, then the client would likely set the oldest enrollment record to 0 (Inactive) and the most recent enrollment record to 1 (Active). It is important to point out that inactive enrollments are available for reporting only and are not displayed in the Learner UI. For this reason, it is very important that enrollments that should be deemed as ‘active’ are correctly set to 1 when and where appropriate. There are a few options to automatically setting this flag if desired - see the Enrollment Priority configuration 


Correlation Properties

Unique Identifier*
This option decides how we will uniquely identify each enrollment for the purposes of updating existing records (i.e. the key). Options available:

  • User & Course: A combination of user & course unique identifiers will be used to uniquely identify the enrollment.

    • User Lookup*                                                                                                    

      This property will be used to look up the user this enrollment is for. Options available:

      • Username
      • External ID* (most common)
      • Email*
      • Employee Number

        *Absorb does not enforce uniqueness on these fields, but the import will require a unique match in order to successfully process. Duplicate matches will result in skipped records. External ID is most commonly used.

    • Course Lookup*

    • This property will be used to look up the course this enrollment is for. Options available:

      • ID (long GUID from the Absorb admin portal)
      • External ID* (most common)
      • Name*

    • Session Lookup*

      • None (usually assumes Sessions are being imported separately)
      • Single per course: Each course that is having enrollments imported will have a single historical session created under it, and all enrollment records attached to it.
      • Single per day per course: Same as the above option, but a separate historical session will be created for each unique Start Date included in the import file for ILC enrollments.
      • Most recent: Rather than actually creating a session, the import will check for existing sessions in the LMS and attach the enrollment record to the most recent one for that course (based on session start date).
      • None (usually assumes Sessions are being imported separately)
      • Single per session: Creates a single Class under the Session if one doesn't already exist.
      • Single per enrollment: Creates a new Class for each enrollment record in the file, under the corresponding Session, using the Start/End Dates for the enrollment record. This option can result in many Classes under a given Session.
      • Single per day: Similar to above, but we will not create a new Class if one already exists for a given Start Date in the file.
  • Enrollment ID: The enrollment's Id (long GUID) from Absorb will be used to uniquely identify each record. Can only be used with existing enrollments.


Enrollment Priority*
This will decide the processing logic for the IsActive flag, which controls whether an enrollment is inactive or not. There can only ever be one active enrollment record per user & course pair, so this setting is used to resolve conflicts. This logic is tightly tied to whether we are creating or updating enrollments, so there are also some options specific to that. Options available:

  • Records from file: If there is already an active enrollment in the LMS, but another active record is provided in the file, the LMS one will be set to inactive/historical and the one from the file set as the active one. Note that if more than one active record for the same course & user pair is provided in the file, the records are processed sequentially and the last one is left as active. Only new enrollments are created.
  • LMS record: If there is already an active enrollment in the LMS, but another active record is provided in the file, the LMS one will be set to active and the ones from the file set as inactive/historical. Only new enrollments are created.
  • Most recent record: If there is already an active enrollment in the LMS, but another active record is provided in the file, the one with the most recent Start Date will be set as active and all others set to inactive/historical. If there are multiple active records for the same user & course pair in the file, we will also choose the most recent one. This option is good if you are having trouble setting the IsActive flag reliably in your file. Only new enrollments are created.
  • Update existing: If an existing enrollment exists, update it based on the file. Otherwise, create a new enrollment based on the file. If the file sets an enrollment to active, all existing enrollments will be set to inactive/historical. 
  • Update only: If an existing enrollment exists, update it based on the file. Otherwise, do not create a new enrollment. If the file sets an enrollment to active, all existing enrollments will be set to inactive/historical. 

    Note that "Update only" is the only valid choice when using Enrollment Id as your Unique Identifier.



Related Objects

The following list of objects are often imported alongside Departments:


* Imported enrollments with a status of Complete (3) will automatically issue certificates. The associated course(s) must have 'Learners receive a certificate upon completion' enabled prior to the enrollment import in order for automatic issuance of certificates. In many cases this removes the need for a separate certificates file.

Refer to the Absorb Data Mapping document from this helpdesk article for more information on the objects above.

Data Examples




Was this article helpful?
1 out of 2 found this helpful