The ITranslateCourseSection interface is used to translate a LIS course section into an IPSIS course section.
The interface implementation is D2L.IM.IPSIS.LIS.CMS.ITranslateCourseSection.
The following template configuration list provides a starting point for any LIS implementation:
IPSIS, Default
- CourseSectionRequestBaseTranslator (Sort Order = 10)
- CourseSectionRequestParentOfferingIdRequiredTranslator (Sort Order = 20)
- CourseSectionRequestNameRequiredTranslator (Sort Order = 30)
- CourseSectionRequestDepartmentRequiredTranslator (Sort Order = 40)
- CourseSectionRequestSemesterOptionalTranslator (Sort Order = 50)
- CourseSectionRequestStartDateEndDateRequiredTranslator (Sort Order = 60)
- CourseSectionRequestStatusOptionalTranslator (Sort Order = 70)
CourseSectionRequestBaseTranslator
The CourseSectionRequestBaseTranslator obtains the unique identifier of the course section from the request.
Implementation
D2L.IM.IPSIS.LIS.RequestAdapters.CMS.Default.CourseSectionRequestBaseTranslator
Expected behavior
The translator performs the following tasks:
- Sets the OrgUnitCode and OrgUnitName to the value provided in the sourcedGUID.sourcedid.
- Processing continues to the next translator.
Entity
Property
|
Translation Result Object
|
LIS Request Mapping
|
Code
|
result.Entity.Code
|
courseSectionRecord.sourcedGUID.sourcedId
|
Name
|
result.Entity.Name
|
courseSectionRecord.sourcedGUID.sourcedId
|
Error behavior
If there is a problem during processing, an IncompleteRequestException is thrown. This results in:
- The suspension of all further processing.
- A LIS response header containing:
- CodeMajor = failure.
- Severity = status.
- CodeMinor = invaliddata.
Configuration notes
This translator (or an alternative Base translator) must be configured first in the list of translators.
CourseSectionRequestParentOfferingIdRequiredTranslator
The CourseSectionRequestParentOfferingIdRequiredTranslator requires and maps the course offering Parent Id.
Implementation
D2L.IM.IPSIS.LIS.RequestAdapters.CMS.Default.CourseSectionRequestParentOfferingIdRequiredTranslator
Expected behavior
The translator performs the following tasks:
- Sets the ParentOfferingId of the result to contain the value from the ParentOfferingId in the request.
- Processing continues to the next translator.
ParentOfferingId
Property
|
Translation Result Object
|
LIS Request Mapping
|
Parent OfferingId
|
result.ParentOfferingId
|
courseSectionRecord.courseSection.parentOfferingId
|
Error behavior
If there is a problem during processing, an IncompleteRequestException is thrown. This results in:
- The suspension of all further processing.
- A LIS response header containing:
- CodeMajor = failure.
- Severity = status.
- CodeMinor = invaliddata.
Configuration note
This translator can be positioned anywhere after the Base translator.
CourseSectionRequestNameRequiredTranslator
The CourseSectionRequestNameRequiredTranslator requires and maps the section name.
Implementation
D2L.IM.IPSIS.LIS.RequestAdapters.CMS.Default.CourseSectionRequestNameRequiredTranslator
Expected behavior
The translator performs the following tasks:
- Updates the OrgUnitName to contain the value from the title in the request.
- Processing continues to the next translator.
Entity
Property
|
Translation Result Object
|
LIS Request Mapping
|
Name
|
result.Entity.Name
|
courseSectionRecord.courseSection.title
|
Error behavior
If there is a problem processing, an IncompleteRequestException is thrown. This results in:
- Suspension of all further processing.
- A LIS Response header containing:
- CodeMajor = failure.
- Severity = status.
- CodeMinor = invaliddata.
Configuration note
This translator can be positioned anywhere after the Base translator.
CourseSectionRequestDepartmentRequiredTranslator
The CourseSectionRequestDepartmentRequiredTranslator requires and maps the Department Id.
Implementation
D2L.IM.IPSIS.LIS.RequestAdapters.CMS.Default.CourseSectionRequestDepartmentRequiredTranslator
Expected behavior
The translator completes the following tasks:
- Sets the ParentDepartmentId of the result to contain the value from the org.orgName in the request.
- Processing continues to the next translator.
ParentDepartmentID
Property
|
Translation Result Object
|
LIS Request Mapping
|
Parent DepartmentId
|
result.ParentDepartmentId
|
courseSectionRecord.courseSection.org.orgName
|
Error behavior
If there is a problem during processing, an IncompleteRequestException is thrown. This results in:
- The suspension of all further processing.
- A LIS response header containing:
- CodeMajor = failure.
- Severity = status.
- CodeMinor = invaliddata.
Configuration notes
This translator can be positioned anywhere after the Base translator.
CourseSectionRequestSemesterOptionalTranslator
The CourseSectionRequestSemesterOptionalTranslator maps the Semester Id.
Implementation
D2L.IM.IPSIS.LIS.RequestAdapters.CMS.Default.CourseSectionRequestSemesterOptionalTranslator
Expected behavior
The translator performs the following tasks:
- Sets the ParentSemesterId of the result to contain the value from the academicSession in the request (if provided).
- Processing continues to the next translator.
ParentSemeseterId
Property
|
Translation Result Object
|
LIS Request Mapping
|
Parent SemesterId
|
result.ParentSemesterId
|
courseSectionRecord.courseSection.academicSession
|
Error behavior
If there is a problem during processing, an IncompleteRequestException is thrown. This results in:
- The suspension of all further processing.
- A LIS response header containing:
- CodeMajor = failure.
- Severity = status.
- CodeMinor = invaliddata.
Configuration notes
This translator can be positioned anywhere after the Base translator.
CourseSectionRequestStartDateEndDateOptionalTranslator
The CourseSectionRequestStartDateEndDateOptionalTranslator sets the start and end date of the section.
Implementation
D2L.IM.IPSIS.LIS.RequestAdapters.CMS.Default.CourseSectionRequestStartDateEndDateOptionalTranslator
Expected behavior
The translator performs the following tasks:
- Sets the start and end dates of the OrgUnit to contain the values from the first timeFrame.begin and timeFrame.end in the request.
- Processing continues to the next translator.
Entity
Property
|
Translation Result Object
|
LIS Request Mapping
|
Start Date
|
result.Entity.StartDate
|
courseSectionRecord.courseSection.timeFrame(0).begin
|
End Date
|
result.Entity.EndDate
|
courseSectionRecord.courseSection.timeFrame(0).end
|
Error behavior
If there is a problem during processing, an IncompleteRequestException is thrown. This results in:
- The suspension of all further processing.
- A LIS response header containing:
- CodeMajor = failure.
- Severity = status.
- CodeMinor = invaliddata.
Configuration notes
- This translator can be positioned anywhere after the Base translator.
- This translator cannot be configured with CourseSectionRequestStartDateEndDateRequiredTranslator.
CourseSectionRequestStartDateEndDateRequiredTranslator
The CourseSectionRequestStartDateEndDateRequiredTranslator requires and maps the start and end dates for the Course Section.
Implementation
D2L.IM.IPSIS.LIS.RequestAdapters.CMS.Default.CourseSectionRequestStartDateEndDateRequiredTranslator
Expected behavior
The translator performs the following tasks:
- Sets the start and end dates of the OrgUnit to contain the values from the first timeFrame.begin and timeFrame.end in the request.
- Processing continues to the next translator.
Entity
Property
|
Translation Result Object
|
LIS Request Mapping
|
Start Date
|
result.Entity.StartDate
|
courseSectionRecord.courseSection.timeFrame(0).begin
|
End Date
|
result.Entity.EndDate
|
courseSectionRecord.courseSection.timeFrame(0).end
|
Error behavior
If there is a problem during processing, an IncompleteRequestException is thrown. This results in:
- The suspension of all further processing.
- A LIS response header containing:
- CodeMajor = failure.
- Severity = status.
- CodeMinor = invaliddata.
Configuration notes
- This translator can be positioned anywhere after the Base translator.
- This translator cannot be configured with CourseSectionRequestStartDateEndDateOptionalTranslator.
CourseSectionRequestStatusOptionalTranslator
The CourseSectionRequestStatusOptionalTranslator sets the status of the section.
Implementation
D2L.IM.IPSIS.LIS.RequestAdapters.CMS.Default.CourseSectionRequestStatusOptionalTranslator
Expected behavior
The translator performs the following tasks:
- Sets the IsActive property of the OrgUnit to contain the value from the status in the request, if the courseSectionRecord.courseSection.status property has been set.
- If the status is not provided, then the value defaults to null as the field is a nullable boolean.
- If the status is provided, but the value was not found in the dictionary (via the VocabManager), then the value is set to false.
- Processing continues to the next translator.
Entity
Property
|
Translation Result Object
|
LIS Request Mapping
|
Status
|
result.Entity.IsActive
|
courseSectionRecord.courseSection.status
|
Error behavior
If there is a problem during processing, an IncompleteRequestException is thrown. This results in:
- The suspension of all further processing.
- A LIS response header containing:
- CodeMajor = failure.
- Severity = status.
- CodeMinor = invaliddata.
Configuration note
This translator can be positioned anywhere after the Base translator.
CourseSectionRequestTruncateOrgUnitCodeTranslator
The CourseSectionRequestTruncateOrgUnitCodeTranslator truncates the org unit code of the result object if the code is longer than 50 characters. The truncated code is set at 50 characters.
Implementation
D2L.IM.IPSIS.LIS.RequestAdapters.CMS.Default.CourseSectionRequestTruncateOrgUnitCodeTranslator
Expected behavior
The translator performs the following tasks:
- Checks to see if the result.Entity.Code is longer than 50 characters. If yes, the code is truncated to 50 characters.
- Processing continues to the next translator.
Configuration note
This translator can be positioned anywhere after the Base translator.
CourseSectionRequestCreateParentsTranslator
The CourseSectionRequestCreateParentsTranslator auto-provisions org units, that is, course offerings, templates, and departments from the Ellucian ILP section request.
Implementation
D2L.IM.IPSIS.LIS.RequestAdapters.CMS.Default.CourseSectionRequestCreateParentsTranslator
Expected behaviour
When a section request is received from Ellucian ILP, it triggers the following activities in the Brightspace platform:
- Create/update a Department based on the mappings below
- Create/update a Course Template based on the mappings below
- Create/update a Course Offering based on the mappings below
- Create/update a Section based on the request
Additionally, org units are re-parented if a new parent comes through with a different org structure.
Entity
Property
|
Translation Result Object
|
LS Request Mapping
|
id |
result.Entity.id |
courseSectionRecord.sourceGUID.sourceId |
title |
result.Entity.title |
courseSectionRecord.courseSection.title.textString |
label |
|
courseSectionRecord.courseSection.label.textString |
parent |
|
courseSectionRecord.courseSection.parentOfferingId |
department |
|
courseSectionRecord.courseSection.org.orgName.textString |
term |
|
courseSectionRecord.courseSection.academicSession.textString |
departmentId |
|
courseSectionRecord.courseSection.org.id.textString |
startDate |
|
courseSectionRecord.courseSection.timeFrame.begin |
endDate |
|
courseSectionRecord.courseSection.timeFrame.end |
status |
result.Entity.status |
courseSectionRecord.courseSection.status |
Error behaviour
If there is a problem during processing, an IncompleteRequestException is thrown. This results in:
- The suspension of all further processing.
- An LIS response header containing:
- CodeMajor = failure.
- Severity = status.
- CodeMinor = invaliddata.
If the course section request fails, the parent org units are not removed.
Configuration notes
D2L recommends the following configuration order when you use this translator:
- CourseSectionRequestBaseTranslator
- CourseSectionRequestNameRequiredTranslator
- CourseSectionRequestCreateParentsTranslator
- CourseSectionRequestStartDateEndDateOptionalTranslator