Guidelines for Loading a Course to Oracle Learning Using CourseV3

If you have activity sequencing turned on, you can load courses, offerings, activities, and classroom and instructor reservations to the Oracle Learning catalog using the CourseV3 object. If it's turned off, use the Course object.

Tip: Unused Attributes can get deprecated, so always use the most recent DAT file.

To verify that the course successfully loaded, use the Courses task on the My Client Groups > Learning page. To verify that an offering, activities, and classroom and instructor reservations successfully loaded, use the Offerings task.

Here's the hierarchy and processing order for the relevant learning objects:

  1. CourseV3

    1. CourseDefaultAccessV3
    2. OfferingV3

      1. OfferingDefaultAccessV3
      2. EvaluationActivityV3
      3. OfferingActivitySectionV3

        1. SelfPacedActivityV3
        2. InstructorLedActivityV3

          1. AdhocResourceV3
          2. ClassRoomReservationV3
          3. InstructorReservationV3
  2. CourseV3Translation
  3. OfferingV3Translation
  4. SelfPacedActivityV3Translation
  5. InstructorLedActivityV3Translation
  6. OfferingActivtiySectionV3Translation
  7. EvaluationActivityV3Translation

When you create the course hierarchy, you need to create the sections and activities in a separate .dat file from the course and offerings. Here's how you create the complete course hierarchy:

  1. Load the CourseV3 and OfferingV3 objects using a single CourseV3.dat file.

    • Make sure that the required CourseID, CourseNumber, EffectiveStartDate, OwnedByPersonId, and Title attributes all have the appropriate values.
    • Make sure that the OfferingNumber doesn't exceed 26 characters. Otherwise the autogenerated SectionNumber for the default section will exceed 30 characters and result in an HCM Data Loader error.
  2. Load the EvaluationActivityV3, OfferingActivitySectionV3, SelfPacedActivityV3, InstructorLedActivityV3, and other applicable objects together in a separate CourseV3.dat file.

    • Make sure that the .dat file also includes the parent OfferingV3 reference, even if you aren't updating the parent. Otherwise the load process fails with an error.
    • For all activities, use the OfferingSectionId and OfferingSectionNumber values from the OfferingActivitySectionV3 object as the parent surrogate ID and user key respectively.

Rich Text Syllabus and Cover Art

A course file can have a rich text syllabus description and cover art.

  • To load rich text, you need to reference a rich text file in the Syllabus attribute, such as an .html. To load the rich text files, place them all in a folder called ClobFiles and zip the folder. Then include that zip inside the Course.zip file.
  • To load cover art, you need to reference an image file in the CoverArtFile and CoverArtFileName attributes, such as a .jpg file. To load the image files, place them in a folder called BlobFiles and zip the folder. Then include that zip inside the Course.zip file.

Course Validations

The load process does these validations:

  • On create, the CourseNumber value doesn't exist and the Title and OwnedByPersonID values aren't null
  • The Person object exists for the provided OwnedByPersonId value
  • The Trailer Video record for the provided TrailerLiId value exists in Oracle Learning
  • Checks if a CoverArtFile is provided and if so, that the CoverArtFile extension is one of these valid file formats: .jpeg, .jpg, .bmp, .tiff, .png, or .gif, and can be read
  • The EffectiveStartDate value isn't empty or null
  • The PublishStartDate value is before the PublishEndDate value
  • The MinimumExpectedEffort value is either 0 or a positive number
  • The MaximumExpectedEffort, MinimumPrice, and MaximumPrice values are a positive number
  • The MinimumExpectedEffort value is less than the MaximumExpectedEffort value
  • The MinimumPrice value is less than the MaximumPrice value
  • It can retrieve the access properties for the learning item

Offering Validations

The load process does these validations on create:

  • The PersonId value isn't null and the Person and InstructorResource objects already exist for the provided PersonId value
  • The InstructorResourceNumber value exists in Oracle Learning
  • The OwnedByPersonId value isn't null and the Person object already exists for the provided OwnedByPersonId value
  • The OfferingNumber value doesn't already exist in Oracle Learning
  • The Title, OfferingType, and CourseId values aren't null

It also does these validations:

  • The values for these attributes aren't empty or null:

    • EffectiveStartDate
    • OfferingStartDate
    • OfferingEndDate
    • MaximumCapacity when the EnableCapacity value is 'Y'
    • PrimaryLocation ILT and blended offerings

      • For virtual classrooms, set the PrimaryLocationId value -1
      • For not defined classrooms, set the PrimaryLocationId value -2
    • Coordinator
    • FacilitatorType when you provide either a PrimaryInstructorId or TrainingSupplierId value
    • TrainingSupplierId when the FacilitatorType value is ORA_TRNG_VENDOR
    • PrimaryInstructorId when FacilitatorType is ORA_INSTRUCTOR
  • The Person object exists for the provided PersonID or OwnedByPersonId values
  • The course details for the provide CourseLearningItemId value exist in Oracle Learning
  • The Questionnaire record for the provided QuestionnaireCode value exists in Oracle Learning
  • A default questionnaire for the provided OfferingId value doesn't exist
  • The PublishStartDate value is before the PublishEndDate value
  • The offering PublishStartDate value is after the course PublishStartDate value
  • The MinimumCapacity value is 0 or a positive whole number
  • The MaximumCapacity value is a positive whole number
  • The MinimumCapacity value is less than the MaximumCapacity value
  • The EnableCapacity and EnableWaitList values are either 'Y' and 'N'
  • The AccessPermissionId and TrainingSupplierId values exist in Oracle Learning
  • The FacilitatorType value is ORA_TRNG_VENDOR or ORA_INSTRUCTOR
  • An offering has only one evaluation activity otherwise the process ends in error

    • To use the default evaluation, for QuestionnaireCode, enter -1. To use a specific evaluation, enter its questionnaire code.

Default Section

The load process automatically does this work for the default section of an offering:

  • Sets SectionTitle to Default Section.
  • Automatically generates the SectionNumber value using the parent OfferingNumber and the _SEC suffix.  For example, if the offering number is OFFERING-202104280937-HDL , then the generated section number is OFFERING-202104280937-HDL_SEC.
  • Sets Position to 1. If you add more sections to the offering, set the Position values in the appropriate sequence, starting at 2.
  • Sets ShowSectionIfSingleSectionExists to N so that the section isn't visible to learners. If you add more sections to the offering, the load process ignores any value for this attribute. This attribute is equivalent to the Enable as a visible section to learners option on the Activities tab of the offering details page.

CourseV3 DAT File Structure with Attributes

METADATA|CourseV3|CourseId|EffectiveStartDate|EffectiveEndDate|CourseNumber|Title|ShortDescription|Syllabus|PublishStartDate|PublishEndDate|MinimumExpectedEffort|MaximumExpectedEffort|CurrencyCode|MinimumPrice|MaximumPrice|CoverArtFile|CoverArtFileName|OwnedByPersonId|OwnedByPersonNumber|SourceType|SourceId|SourceInfo|SourceSystemOwner|SourceSystemId|GUID|SyllabusText

METADATA|CourseDefaultAccessV3|DefaultAccessId|DefaultAccessNumber|EffectiveStartDate|EffectiveEndDate|FollowCommunity|FollowSpecialization|SelfViewMode|SelfInitialStatus|SelfEnrollForm|SelfActivateApprove|SelfEnrollQuestionnaire|SelfQuestionnaireCode|SelfPrereqType|SelfWithdrawPrereqDays|MgrInitialStatus|MgrActivateApprove|MgrWithdrawPrereqDays|MgrMarkComplete|SourceSystemId|SourceSystemOwner|GUID|CourseId|CourseNumber

METADATA|OfferingV3|OfferingId|EffectiveStartDate|EffectiveEndDate|OfferingNumber|OwnedByPersonId|SourceId|SourceInfo|SourceType|SourceSystemOwner|SourceSystemId|GUID|LanguageCode|Title|Description|MaximumCapacity|MinimumCapacity|OfferingType|CourseId|CourseNumber|EnableCapacity|EnableWaitlist|PrimaryLocationId|PrimaryInstructorId|TrainingSupplierId|FacilitatorType|CoordinatorId|CoordinatorNumber|DescriptionText|OfferingStartDate|OfferingEndDate|OwnedByPersonNumber|PrimaryInstructorNumber|PrimaryLocationNumber|PublishStartDate|PublishEndDate|TrainingSupplierNumber|ShowSectionIfSingleSectionExists

METADATA|EvaluationActivityV3|ActivityId|EffectiveStartDate|EffectiveEndDate|ActivityNumber|Title|OfferingId|OfferingNumber|QuestionnaireCode|QstnrRequiredForCompletion|SourceSystemId|SourceSystemOwner|GUID

METADATA|OfferingActivitySectionV3|OfferingSectionId|EffectiveStartDate|EffectiveEndDate|OfferingSectionNumber|SourceSystemOwner|SourceSystemId|GUID|Title|Description|NumberOfActivitiesToComplete|CompletionRuleType|OfferingId|SectionPosition|SequenceRuleType|OfferingNumber|DescriptionText|SequenceRuleSectionNumber

METADATA|InstructorLedActivityV3|ActivityId|EffectiveStartDate|EffectiveEndDate|ActivityNumber|ExpectedEffort|SourceInfo|SourceType|SourceId|SourceSystemOwner|SourceSystemId|GUID|Title|ShortDescription|Description|CompletionRuleType|VirtualClassroomUrl|SelfCompleteFlag|TimeZone|OfferingSectionId|ActivityPosition|SequenceRuleType|DescriptionText|OfferingSectionNumber|ActivityDate|ActivityStartTime|ActivityEndTime|SequenceRuleActivityNumber|ClassroomResourceId|ClassroomResourceNumber|VirtualProviderId|VirtualProviderNumber|VirtualProviderProduct

METADATA|AdhocResourceV3|AdhocResourceId|AdhocResourceNumber|Title|Description|Quantity|ActivityId|ActivityNumber|SourceSystemId|SourceSystemOwner|GUID

METADATA|ClassroomReservationV3|ClassroomReservationId|ClassroomReservationNumber|ClassroomResourceId|ClassroomResourceNumber|ActivityId|ActivityNumber|SourceSystemId|SourceSystemOwner|GUID

METADATA|InstructorReservationV3|InstructorReservationId|InstructorReservationNumber|InstructorResourceId|InstructorResourceNumber|ActivityId|ActivityNumber|SourceSystemId|SourceSystemOwner|GUID

METADATA|SelfPacedActivityV3|ActivityId|EffectiveStartDate|EffectiveEndDate|ActivityNumber|ExpectedEffort|SourceInfo|SourceType|SourceId|SourceSystemOwner|SourceSystemId|GUID|Title|ShortDescription|Description|ContentId|CompletionRuleType|SelfCompleteFlag|OfferingSectionId|ActivityPosition|SequenceRuleType|OfferingSectionNumber|DescriptionText|ContentNumber|SequenceRuleActivityNumber

METADATA|OfferingDefaultAccessV3|DefaultAccessId|DefaultAccessNumber|EffectiveStartDate|EffectiveEndDate|SelfViewMode|SelfInitialStatus|SelfEnrollForm|SelfActivateApprove|SelfEnrollQuestionnaire|SelfQuestionnaireCode|MgrInitialStatus|MgrActivateApprove|MgrWithdrawPrereqDays|SourceSystemId|SourceSystemOwner|GUID|OfferingId|OfferingNumber