Working with course templates in IMS ES
Synopsis
This document describes the use of the course template extension to IMS-ES.
The course copy feature allows a new course to be based on an existing course template, and starting from R106 you can also use IMS-E to create new courses based on pre-existing templates.
The process for setting up course template and courses based on the templates:
- Terms are set up (and SyncKeys are manually entered) (Manual process )
- IMS ES Import is creating template courses from properly structured XML files.
- Template course is configured, populated and shared as a template in the UI (Manual procedure, see )
- IMS ES Import is creating courses based on the template
The process cannot be fully automated at this time. It involves manual steps to set up terms and configure/populate courses, as outlined below:
Keep in mind that the course copy feature is a point-in-time copy of the template course.
The new course instance will not be kept in sync with any changes made to the original template, and there is currently no option to "resync" after a course instance has been created.
Extension to IMS-ES
The IMS-ES import has been extended to support the creation of courses based on Course Templates.
Courses are created in IMS-ES by adding an <extension> section to the request with the following <extensionFiled> sections:
- course name, fieldName="course" (mandatory)
- course code, fieldName="course/code" (optional)
- course credits, fieldName ="course/credit" (optional)
Course template can be specified by the following <extensionFiled> sections:
- course template, fieldName="course/template/synckey"
- creator, fieldName="course/template/coursecreatorsynckey"
- terms
Terms to be replaced should be specified as a separate <extensionField> each. Such <extensionField> fieldName should contain unique ID of the term. It should be specified as {termId}.
- fieldName="course/template/terms/{termId}/sourcetermsynckey"
- fieldName="course/template/terms/{termId}/newtermsynckey"
Course can also have an external template id:
- course external template id, fieldName="course/template/externaltemplateid"
Sections description:
Element | Type | Description |
Course Template | SyncKey | The synckey of the course template. If this is specified then the new course is to be based on a template and the items below become manditory/option as described. Validation rule: The course template SyncKey must exist, and must refer to a course template, not a regular course. |
Creator | SyncKey | Identifier of the user who will “own” the course and content/elements in the course. Validation rule: The creator SyncKey must exist, and the creator must be a member of the organisation that owns the course. |
Terms | SyncKey | Identifies the terms to be copied across to the course instance. Validation rule. must exist if specified. |
Course External Template Id | integer | Identifier of the shareable planner. Validation rule: Optional. Must refer to a shareable planner. Creator SyncKey must exist too. |
If specified "Course Template" and "Course External Template Id" the course template will be used for course creation the External Template Id will be skipped.
Some example XML
<
extension
xmlns
=
"http://www.imsglobal.org/services/gms/xsd/imsGroupManDataSchema_v1p0"
>
<!--// course created with this course title-->
<
extensionField
xmlns
=
"http://www.imsglobal.org/services/common/imsCommonSchema_v1p0"
>
<
fieldName
>course</
fieldName
>
<
fieldType
>String</
fieldType
>
<
fieldValue
>English course (4)</
fieldValue
>
</
extensionField
>
<!--// course created with this course code-->
<
extensionField
xmlns
=
"http://www.imsglobal.org/services/common/imsCommonSchema_v1p0"
>
<
fieldName
>course/code</
fieldName
>
<
fieldType
>String</
fieldType
>
<
fieldValue
>ENG13/18</
fieldValue
>
</
extensionField
>
<!--// course created with this course credits-->
<
extensionField
xmlns
=
"http://www.imsglobal.org/services/common/imsCommonSchema_v1p0"
>
<
fieldName
>course/credits</
fieldName
>
<
fieldType
>String</
fieldType
>
<
fieldValue
/>
</
extensionField
>
<!--// course external template id-->
<
extensionField
xmlns
=
"http://www.imsglobal.org/services/common/imsCommonSchema_v1p0"
>
<
fieldName
>course/template/externaltemplateid</
fieldName
>
<
fieldType
>Int</
fieldType
>
<
fieldValue
>ExternalTemplateId</
fieldValue
>
</
extensionField
>
<!--// course template sync key-->
<
extensionField
xmlns
=
"http://www.imsglobal.org/services/common/imsCommonSchema_v1p0"
>
<
fieldName
>course/template/synckey</
fieldName
>
<
fieldType
>String</
fieldType
>
<
fieldValue
>CourseTemplateSyncKey</
fieldValue
>
</
extensionField
>
<!--// course creator sync key-->
<
extensionField
xmlns
=
"http://www.imsglobal.org/services/common/imsCommonSchema_v1p0"
>
<
fieldName
>course/template/coursecreatorsynckey</
fieldName
>
<
fieldType
>String</
fieldType
>
<
fieldValue
>CourseCreatorSyncKey</
fieldValue
>
</
extensionField
>
<!--// term #1 source sync key-->
<
extensionField
xmlns
=
"http://www.imsglobal.org/services/common/imsCommonSchema_v1p0"
>
<
fieldName
>course/template/terms/1/SourceTermSyncKey</
fieldName
>
<
fieldType
>String</
fieldType
>
<
fieldValue
>Term1SourceTermSyncKey</
fieldValue
>
</
extensionField
>
<!--// term #1 new sync key-->
<
extensionField
xmlns
=
"http://www.imsglobal.org/services/common/imsCommonSchema_v1p0"
>
<
fieldName
>course/template/terms/1/NewTermSyncKey</
fieldName
>
<
fieldType
>String</
fieldType
>
<
fieldValue
>Term1NewTermSyncKey</
fieldValue
>
</
extensionField
>
<!--// term #2 source sync key-->
<
extensionField
xmlns
=
"http://www.imsglobal.org/services/common/imsCommonSchema_v1p0"
>
<
fieldName
>course/template/terms/2/SourceTermSyncKey</
fieldName
>
<
fieldType
>String</
fieldType
>
<
fieldValue
>Term2SourceTermSyncKey</
fieldValue
>
</
extensionField
>
<!--// term #2 new sync key-->
<
extensionField
xmlns
=
"http://www.imsglobal.org/services/common/imsCommonSchema_v1p0"
>
<
fieldName
>course/template/terms/2/NewTermSyncKey</
fieldName
>
<
fieldType
>String</
fieldType
>
<
fieldValue
>Term2NewTermSyncKey</
fieldValue
>
</
extensionField
>
</
extension
>
Defining courses as templates
Defining courses as templates is a manual process, and must be completed manually before you can create coursed based on the template.
Courses can be shared as templates on a School and Site level.
Sharing a course as a template for others is an option that is controlled by a profile setting, so it is possible to configure on profile and policy which users are able to share courses as templates. Sharing a course is done from the Course settings page:
Specifiying SyncKeys for terms
Terms in itslearning's implementation of IMS ES are used only for matching the terms in the template with terms in the new course.
The terms must exist already (will not be auto-created), and the term sync key must be entered manually when creating the term in the UI.
Terms are optional, so if you create a new course based on a template which has terms, the new course will have the same terms as the template.
You have the option to replace the terms if you e.g. want to use the same template from the previous year, but with an updated set of terms.
So:
- If you specify a termsynckey that does not exist, the term will NOT be created
- If you specify a termsynckey that does not exist, the import service will disregard the whole course (i.e not import the course nor the hierarchy) and an error will be returned
- If terms have not been added to the template course when you create a new course instance from this template, you can add terms to the course instance later
- The terms can be read through the Organisation API