Guidelines for loading a course to Oracle Learning using CourseV3
When activity sequencing is turned on, load courses, offerings, activities, and classroom and instructor reservations to the learning catalog using the CourseV3 object. When it's turned off, use the Course object.
To verify that the course, offering, activities, and classroom and instructor reservations successfully loaded, go to .
Here's the hierarchy and processing order for the CourseV3 learning objects:
-
CourseV3
- CourseDefaultAccessV3
-
OfferingV3
- OfferingDefaultAccessV3
- EvaluationActivityV3
-
OfferingActivitySectionV3
- SelfPacedActivityV3
-
InstructorLedActivityV3
- AdhocResourceV3
- ClassRoomReservationV3
- InstructorReservationV3
- CourseV3Translation
- OfferingV3Translation
- SelfPacedActivityV3Translation
- InstructorLedActivityV3Translation
- OfferingActivitySectionV3Translation
- EvaluationActivityV3Translation
Create the complete course hierarchy in two loads.
-
In a single CourseV3 .dat file, load the CourseV3 and OfferingV3 objects.
-
Make sure that the required CourseID, CourseNumber, EffectiveStartDate, OwnedByPersonId, and Title attributes 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.
-
-
After the step 1 load completes successfully, in a separate CourseV3 .dat file, load the EvaluationActivityV3, OfferingActivitySectionV3, SelfPacedActivityV3, InstructorLedActivityV3, and other applicable objects.
- 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.
- For all activities, use the OfferingSectionId and OfferingSectionNumber values from the OfferingActivitySectionV3 object as the parent surrogate ID and user key, respectively.
Effective dates
When you load current learning, set the effective start date to the device date. For future-dated learning, use the same future date. Updates aren't applied to end-dated learning. The effective start dates of any sections and activities you load for an existing course and offering need to be after the course and offering dates.
Here's an example with the same future effective start date for the course, offering, section, and activity:
METADATA|CourseV3|EffectiveStartDate|EffectiveEndDate|CourseNumber|Title|ShortDescription|Syllabus|PublishStartDate|OwnedByPersonNumber|SourceSystemOwner|SourceSystemId|PublishEndDate|MinimumExpectedEffort|MaximumExpectedEffort|FLEX:WLF_LI_COURSE|compliance(WLF_LI_COURSE=Global Data Elements)|rolerequired(WLF_LI_COURSE=Global Data Elements)|CurrencyCode|MinimumPrice|MaximumPrice
MERGE|CourseV3|2023/01/24||C_KSP_TEVA_PV|Teva PV Training|Teva PV awareness training 2021 for vendors||1951/01/01|554872|KNOWME|Course_C_KSP_TEVA_PV||0.1|0.1|Global Data Elements|Yes|Yes|||
METADATA|OfferingV3|EffectiveStartDate|EffectiveEndDate|OfferingStartDate|OfferingEndDate|OfferingNumber|CoordinatorNumber|Title|OfferingType|PublishStartDate|LanguageCode|CourseNumber|OwnedByPersonNumber|EnableCapacity|Description|DescriptionText|MinimumCapacity|MaximumCapacity|EnableWaitlist|PrimaryLocationNumber|PrimaryInstructorNumber|FacilitatorType|SourceSystemOwner|SourceSystemId
MERGE|OfferingV3|2023/01/24||2023/01/24||O_C_KSP_TEVA_PV|554872|Teva PV Training|ORA_SP|1951/01/01|US|C_KSP_TEVA_PV|554872||DESC_C_KSP_TEVA_PV.txt|Teva PV awareness training 2021 for vendors|||||||KNOWME|COF_O_C_KSP_TEVA_PV_ORA_SP
METADATA|OfferingActivitySectionV3|OfferingSectionId|EffectiveStartDate|EffectiveEndDate|OfferingSectionNumber|SourceSystemOwner|SourceSystemId|GUID|Title|Description|NumberOfActivitiesToComplete|CompletionRuleType|OfferingId|SectionPosition|SequenceRuleType|OfferingNumber|DescriptionText|SequenceRuleSectionNumber
MERGE|OfferingActivitySectionV3||2023/01/24||O_C_KSP_TEVA_PV_SEC||||Default Section|||ORA_COMPLETION_ACTIVITY||1|ORA_SECTION_ANYTIME|O_C_KSP_TEVA_PV||
METADATA|SelfPacedActivityV3|ActivityId|EffectiveStartDate|EffectiveEndDate|ActivityNumber|ExpectedEffort|SourceInfo|SourceType|SourceId|SourceSystemOwner|SourceSystemId|GUID|Title|Description|ContentId|CompletionRuleType|SelfCompleteFlag|OfferingSectionId|ActivityPosition|SequenceRuleType|OfferingSectionNumber|DescriptionText|ContentNumber|SequenceRuleActivityNumber
MERGE|SelfPacedActivityV3||2023/01/24||O_C_KSP_TEVA_PV_SEC_A01||||||||Activity 3|||ORA_REQUIRED|Y||3||O_C_KSP_TEVA_PV_SEC|||
Here's an example where the effective start dates of the section and activity are after those of the existing course and offering:
METADATA|CourseV3|EffectiveStartDate|EffectiveEndDate|CourseNumber|Title|ShortDescription|Syllabus|PublishStartDate|OwnedByPersonNumber|SourceSystemOwner|SourceSystemId|PublishEndDate|MinimumExpectedEffort|MaximumExpectedEffort|FLEX:WLF_LI_COURSE|compliance(WLF_LI_COURSE=Global Data Elements)|rolerequired(WLF_LI_COURSE=Global Data Elements)|CurrencyCode|MinimumPrice|MaximumPrice
MERGE|CourseV3|1951/01/01||C_KSP_TEVA_PV|Teva PV Training|Teva PV awareness training 2021 for vendors||1951/01/01|554872|KNOWME|Course_C_KSP_TEVA_PV||0.1|0.1|Global Data Elements|Yes|Yes|||
METADATA|OfferingV3|EffectiveStartDate|EffectiveEndDate|OfferingStartDate|OfferingEndDate|OfferingNumber|CoordinatorNumber|Title|OfferingType|PublishStartDate|LanguageCode|CourseNumber|OwnedByPersonNumber|EnableCapacity|Description|DescriptionText|MinimumCapacity|MaximumCapacity|EnableWaitlist|PrimaryLocationNumber|PrimaryInstructorNumber|FacilitatorType|SourceSystemOwner|SourceSystemId
MERGE|OfferingV3|2022/01/18||2022/11/21||O_C_KSP_TEVA_PV|554872|Teva PV Training|ORA_SP|1951/01/01|US|C_KSP_TEVA_PV|554872||DESC_C_KSP_TEVA_PV.txt|Teva PV awareness training 2021 for vendors|||||||KNOWME|COF_O_C_KSP_TEVA_PV_ORA_SP
METADATA|OfferingActivitySectionV3|OfferingSectionId|EffectiveStartDate|EffectiveEndDate|OfferingSectionNumber|SourceSystemOwner|SourceSystemId|GUID|Title|Description|NumberOfActivitiesToComplete|CompletionRuleType|OfferingId|SectionPosition|SequenceRuleType|OfferingNumber|DescriptionText|SequenceRuleSectionNumber
MERGE|OfferingActivitySectionV3||2023/01/24||O_C_KSP_TEVA_PV_SEC||||Default Section|||ORA_COMPLETION_ACTIVITY||1|ORA_SECTION_ANYTIME|O_C_KSP_TEVA_PV||
METADATA|SelfPacedActivityV3|ActivityId|EffectiveStartDate|EffectiveEndDate|ActivityNumber|ExpectedEffort|SourceInfo|SourceType|SourceId|SourceSystemOwner|SourceSystemId|GUID|Title|Description|ContentId|CompletionRuleType|SelfCompleteFlag|OfferingSectionId|ActivityPosition|SequenceRuleType|OfferingSectionNumber|DescriptionText|ContentNumber|SequenceRuleActivityNumber
MERGE|SelfPacedActivityV3||2023/01/24||O_C_KSP_TEVA_PV_SEC_A01||||||||Activity 3|||ORA_REQUIRED|Y||3||O_C_KSP_TEVA_PV_SEC|||
Rich text syllabus and cover art
You can include a rich text syllabus and cover art when you load a course.
- To include a rich text syllabus, reference the rich text file, such as an .html file, in the Syllabus attribute. Put the file in a ClobFiles folder, compress the folder, and include the .zip file in Course.zip.
- To include cover art, reference the image file, such as a .jpg file, in the CoverArtFile and CoverArtFileName attributes. Put the file in a BlobFiles folder, compress the folder, and include the .zip file in Course.zip.
Course validations
The load process validates that each course meets these requirements:
- When creating a course, the CourseNumber value is unique and the Title and OwnedByPersonId values aren't null.
- The person identified by the OwnedByPersonId value exists in the HCM app.
- The trailer video identified by the TrailerLiId value exists in Oracle Learning.
- If you provide a CoverArtFile file, it uses a supported format (.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 0 or a positive number.
- The MaximumExpectedEffort, MinimumPrice, and MaximumPrice values are positive numbers.
- The MinimumExpectedEffort value is less than the MaximumExpectedEffort value.
- The MinimumPrice value is less than the MaximumPrice value.
- The access properties for the learning can be retrieved.
Offering validations
The load process validates that each offering meets these requirements during creation:
- The PersonId value isn't null, and the person and instructor resource identified by that value exist in the HCM app.
- The InstructorResourceNumber value exists in Oracle Learning.
- The OwnedByPersonId value isn't null and the person identified by that value exists in the HCM app.
- The OfferingNumber value is unique in Oracle Learning.
- The Title, OfferingType, and CourseId values aren't null.
The load process also validates these requirements:
- The EffectiveStartDate, OfferingStartDate, OfferingEndDate, and Coordinator values aren't empty or null.
- The MaximumCapacity value isn't empty or null when the EnableCapacity value is
Y. - For ILT and blended offerings, the PrimaryLocation value isn't empty or null.
- For virtual classrooms, set the PrimaryLocationId value to
-1. - When the classroom isn't predefined, set the PrimaryLocationId value to
-2.
- For virtual classrooms, set the PrimaryLocationId value to
- The FacilitatorType value isn't empty or null when you provide either a PrimaryInstructorId or TrainingSupplierId value.
- The TrainingSupplierId value isn't empty or null when the FacilitatorType value
is
ORA_TRNG_VENDOR. - The PrimaryInstructorId value isn't empty or null when the FacilitatorType
value is
ORA_INSTRUCTOR. - The person identified by the PersonId or OwnedByPersonId value exists in the HCM app.
- The course identified by the CourseLearningItemId value exists in Oracle Learning.
- The questionnaire identified by the QuestionnaireCode value exists in Oracle Learning.
- A default questionnaire doesn't already exist for the OfferingId value.
- 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
YorN. - The AccessPermissionId and TrainingSupplierId values exist in Oracle Learning.
- The FacilitatorType value is
ORA_TRNG_VENDORorORA_INSTRUCTOR. - The offering has only one evaluation activity. To use the default evaluation,
enter
-1for QuestionnaireCode. To use a specific evaluation, enter its questionnaire code.
Default section
The load process automatically sets these values for the default section of an offering:
- Sets the SectionTitle value to Default Section.
- Generates the SectionNumber value using the parent OfferingNumber value and the _SEC suffix. For example, if OfferingNumber is OFFERING-202104280937-HDL, the generated section number is OFFERING-202104280937-HDL_SEC.
- Sets the Position value to 1. If you add more sections to the offering, set the Position values in the appropriate sequence, starting with 2.
- Sets the ShowSectionIfSingleSectionExists value to N so learners see the activities but not the default section attribute values. If you add more sections, the load process ignores any value for this attribute. This attribute corresponds 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