How to create a course

Brief description:

Using IMS-ES it is possible to create a course by creating a group with some extension data. This means that in itslearning both a hierarchy and a (connected) course will be created.
The OrganisationType of the hierarchy (see Managing groups) must always be Course.
It is however not required to specify this explicitly. If you omit setting the OrganisationType then it will default to Course automatically.

Methods to set organisation type:

IMS ES Request

Comments

createGroup
createGroups
updateGroup
updateGroups
replaceGroup
replaceGroups

  • It is not allowed to change the type of a hierarchy connected to a Course
  • It is not allowed to change a hierarchy of type Site, School or CourseGroup to a Course.
  • It is allowed to change a hierarchy of type Unspecified to a Course (though of course, the normal restrictions for creating a course still apply).

Methods to get organisation type:

readGroup
readGroups
readGroupsForPerson


Input parameters:

  • (Optional) groupType - if you set the OrganisationType, make sure it is set to Course. Otherwise the request will fail.
  • relationship - You must specify the syncId of the parent hierarchy
  • extensionField (course) - This should contain the title of the course
  • extensionField (course/code) - This should contain the course code
  • (Optional) extensionField (course/credits) - Set this if you wish to specify the course credits

Example in itslearning:

Example 1:

I want to add a new course to the organisation with syncId = "SchoolA"

Example 2:

I want to read all the courses for the user with syncId = "UserA".

NOTE: This will actually return all hierarchies for the user. You will have to filter the courses yourself by checking the OrganisationType.

Example 1

Request to create course:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ims="http://www.imsglobal.org/services/gms/xsd/imsGroupManMessSchema_v1p0" xmlns:ims1="http://www.imsglobal.org/services/common/imsCommonSchema_v1p0" xmlns:ims2="http://www.imsglobal.org/services/gms/xsd/imsGroupManDataSchema_v1p0">
<soapenv:Header/>
<soapenv:Body>
<ims:createGroupRequest>
<ims:sourcedId>
<ims1:identifier>CourseA</ims1:identifier>
</ims:sourcedId>
<ims:group>
<ims2:groupType>
<ims2:scheme>ItslearningOrganisationTypes</ims2:scheme>
<ims2:typeValue>
<ims2:type>Course</ims2:type>
</ims2:typeValue>
</ims2:groupType>
<ims2:relationship>
<ims2:relation>Parent</ims2:relation>
<ims2:sourceId>
<ims1:identifier>SchoolA</ims1:identifier>
</ims2:sourceId>
</ims2:relationship>
<ims2:description>
<ims2:descShort>Description of the hierarchy connected to the course</ims2:descShort>
</ims2:description>
<ims2:extension>
<ims1:extensionField>
<ims1:fieldName>course</ims1:fieldName>
<ims1:fieldType>String</ims1:fieldType>
<ims1:fieldValue>CourseA</ims1:fieldValue>
</ims1:extensionField>
<ims1:extensionField>
<ims1:fieldName>course/code</ims1:fieldName>
<ims1:fieldType>String</ims1:fieldType>
<ims1:fieldValue>CourseA</ims1:fieldValue>
</ims1:extensionField>
</ims2:extension>
</ims:group>
</ims:createGroupRequest>
</soapenv:Body>
</soapenv:Envelope>

Example 1

Response:

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" xmlns:u="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
<s:Header>
<h:syncResponseHeaderInfo xmlns:h="http://www.imsglobal.org/services/common/imsMessBindSchema_v1p0" xmlns="http://www.imsglobal.org/services/common/imsMessBindSchema_v1p0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<messageIdentifier/>
<statusInfo>
<codeMajor>success</codeMajor>
<severity>status</severity>
<messageIdRef/>
</statusInfo>
</h:syncResponseHeaderInfo>
<o:Security s:mustUnderstand="1" xmlns:o="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
<u:Timestamp u:Id="_0">
<u:Created>2013-08-30T10:42:35.384Z</u:Created>
<u:Expires>2013-08-30T10:47:35.384Z</u:Expires>
</u:Timestamp>
</o:Security>
</s:Header>
<s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<createGroupResponse xmlns="http://www.imsglobal.org/services/gms/xsd/imsGroupManMessSchema_v1p0"/>
</s:Body>
</s:Envelope>

Example 2:

Request to get course for a user:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ims="http://www.imsglobal.org/services/gms/xsd/imsGroupManMessSchema_v1p0" xmlns:ims1="http://www.imsglobal.org/services/common/imsCommonSchema_v1p0">
<soapenv:Header/>
<soapenv:Body>
<ims:readGroupsForPersonRequest>
<ims:personSourcedId>
<ims1:identifier>UserA</ims1:identifier>
</ims:personSourcedId>
</ims:readGroupsForPersonRequest>
</soapenv:Body>
</soapenv:Envelope>

Example 2

Response:

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" xmlns:u="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
<s:Header>
<h:syncResponseHeaderInfo xmlns:h="http://www.imsglobal.org/services/common/imsMessBindSchema_v1p0" xmlns="http://www.imsglobal.org/services/common/imsMessBindSchema_v1p0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<messageIdentifier/>
<statusInfoSet>
<statusInfo>
<codeMajor>success</codeMajor>
<severity>status</severity>
</statusInfo>
</statusInfoSet>
</h:syncResponseHeaderInfo>
<o:Security s:mustUnderstand="1" xmlns:o="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
<u:Timestamp u:Id="_0">
<u:Created>2013-08-30T13:54:30.466Z</u:Created>
<u:Expires>2013-08-30T13:59:30.466Z</u:Expires>
</u:Timestamp>
</o:Security>
</s:Header>
<s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<readGroupsForPersonResponse xmlns="http://www.imsglobal.org/services/gms/xsd/imsGroupManMessSchema_v1p0">
<groupSet>
<group>
<sourcedId>
<identifier xmlns="http://www.imsglobal.org/services/common/imsCommonSchema_v1p0">autogenerated_IMS_59969085</identifier>
</sourcedId>
<group>
<groupType xmlns="http://www.imsglobal.org/services/gms/xsd/imsGroupManDataSchema_v1p0">
<scheme>ItslearningOrganisationTypes</scheme>
<typeValue>
<type>Site</type>
<level>0</level>
</typeValue>
</groupType>
<relationship xmlns="http://www.imsglobal.org/services/gms/xsd/imsGroupManDataSchema_v1p0">
<relation>Parent</relation>
<sourceId>
<identifier xmlns="http://www.imsglobal.org/services/common/imsCommonSchema_v1p0">autogenerated_IMS_59969085</identifier>
</sourceId>
<label>Is parent of</label>
</relationship>
<description xmlns="http://www.imsglobal.org/services/gms/xsd/imsGroupManDataSchema_v1p0">
<descShort>IMS</descShort>
<descFull/>
</description>
<extension xmlns="http://www.imsglobal.org/services/gms/xsd/imsGroupManDataSchema_v1p0">
<extensionField xmlns="http://www.imsglobal.org/services/common/imsCommonSchema_v1p0">
<fieldName>visibleinsearch</fieldName>
<fieldType>Boolean</fieldType>
<fieldValue>True</fieldValue>
</extensionField>
</extension>
</group></group>
<group>
<sourcedId>
<identifier xmlns="http://www.imsglobal.org/services/common/imsCommonSchema_v1p0">SchoolA</identifier>
</sourcedId>
<group>
<groupType xmlns="http://www.imsglobal.org/services/gms/xsd/imsGroupManDataSchema_v1p0">
<scheme>ItslearningOrganisationTypes</scheme>
<typeValue>
<type>School</type>
<level>1</level>
</typeValue>
</groupType>
<relationship xmlns="http://www.imsglobal.org/services/gms/xsd/imsGroupManDataSchema_v1p0">
<relation>Parent</relation>
<sourceId>
<identifier xmlns="http://www.imsglobal.org/services/common/imsCommonSchema_v1p0">autogenerated_IMS_59969085</identifier>
</sourceId>
<label>Is parent of</label>
</relationship>
<description xmlns="http://www.imsglobal.org/services/gms/xsd/imsGroupManDataSchema_v1p0">
<descShort>SchoolA</descShort>
<descFull/>
</description>
</group></group>
<group>
<sourcedId>
<identifier xmlns="http://www.imsglobal.org/services/common/imsCommonSchema_v1p0">CourseA</identifier>
</sourcedId>
<group>
<groupType xmlns="http://www.imsglobal.org/services/gms/xsd/imsGroupManDataSchema_v1p0">
<scheme>ItslearningOrganisationTypes</scheme>
<typeValue>
<type>Course</type>
<level>2</level>
</typeValue>
</groupType>
<relationship xmlns="http://www.imsglobal.org/services/gms/xsd/imsGroupManDataSchema_v1p0">
<relation>Parent</relation>
<sourceId>
<identifier xmlns="http://www.imsglobal.org/services/common/imsCommonSchema_v1p0">SchoolA</identifier>
</sourceId>
<label>Is parent of</label>
</relationship>
<description xmlns="http://www.imsglobal.org/services/gms/xsd/imsGroupManDataSchema_v1p0">
<descShort>Description of the hierarchy connected to the course</descShort>
<descFull/>
</description>
<extension xmlns="http://www.imsglobal.org/services/gms/xsd/imsGroupManDataSchema_v1p0">
<extensionField xmlns="http://www.imsglobal.org/services/common/imsCommonSchema_v1p0">
<fieldName>visibleinsearch</fieldName>
<fieldType>Boolean</fieldType>
<fieldValue>True</fieldValue>
</extensionField>
<extensionField xmlns="http://www.imsglobal.org/services/common/imsCommonSchema_v1p0">
<fieldName>course</fieldName>
<fieldType>String</fieldType>
<fieldValue>CourseA</fieldValue>
</extensionField>
<extensionField xmlns="http://www.imsglobal.org/services/common/imsCommonSchema_v1p0">
<fieldName>course/code</fieldName>
<fieldType>String</fieldType>
<fieldValue>CourseA</fieldValue>
</extensionField>
<extensionField xmlns="http://www.imsglobal.org/services/common/imsCommonSchema_v1p0">
<fieldName>course/credits</fieldName>
<fieldType>String</fieldType>
<fieldValue/>
</extensionField>
</extension>
</group></group>
</groupSet>
</readGroupsForPersonResponse>
</s:Body>
</s:Envelope>


Creating course groups

Brief description:

Since release 43 it is now possible to create course groups using IMS-ES. This can be easily achieved by setting the OrganisationType of the hierarchy (see Managing groups) to CourseGroup.

Methods to set organisation type:

IMS ES Request

Comments

createGroup
createGroups
updateGroup
updateGroups
replaceGroup
replaceGroups

  • It is not allowed to change the type of a hierarchy connected to a CourseGroup
  • It is not allowed to change a hierarchy of type Site, School or Course to a CourseGroup.
  • It is not allowed to move a course group to another course.
  • It is allowed to change a hierarchy of type Unspecified to a CourseGroup (though of course, the normal restrictions for creating a course group still apply).

Methods to get organisation type:

readGroup
readGroups
readGroupsForPerson


Input parameters:

  • groupType - This must always be set to CourseGroup.
  • relationship - You must specify the syncId of the parent hierarchy, and this should always be a hierarchy connected to a course.
  • descShort - This will be the title for both the hierarchy and the course group.

Example in itslearning:

Example 1:

I want to add a new course group to the course with syncId = "CourseA"

Example 2:

I want to read all the course groups for the user with syncId = "UserA".

NOTE: This will actually return all hierarchies for the user. You will have to filter the course groups yourself by checking the OrganisationType.

Example 1

Request to create course group:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ims="http://www.imsglobal.org/services/gms/xsd/imsGroupManMessSchema_v1p0" xmlns:ims1="http://www.imsglobal.org/services/common/imsCommonSchema_v1p0" xmlns:ims2="http://www.imsglobal.org/services/gms/xsd/imsGroupManDataSchema_v1p0">
<soapenv:Header/>
<soapenv:Body>
<ims:createGroupRequest>
<ims:sourcedId>
<ims1:identifier>CourseGroupA</ims1:identifier>
</ims:sourcedId>
<ims:group>
<ims2:groupType>
<ims2:scheme>ItslearningOrganisationTypes</ims2:scheme>
<ims2:typeValue>
<ims2:type>CourseGroup</ims2:type>
</ims2:typeValue>
</ims2:groupType>
<ims2:relationship>
<ims2:relation>Parent</ims2:relation>
<ims2:sourceId>
<ims1:identifier>CourseA</ims1:identifier>
</ims2:sourceId>
</ims2:relationship>
<ims2:description>
<ims2:descShort>Test group</ims2:descShort>
</ims2:description>
</ims:group>
</ims:createGroupRequest>
</soapenv:Body>
</soapenv:Envelope>

Example 1

Response:

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" xmlns:u="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
<s:Header>
<h:syncResponseHeaderInfo xmlns:h="http://www.imsglobal.org/services/common/imsMessBindSchema_v1p0" xmlns="http://www.imsglobal.org/services/common/imsMessBindSchema_v1p0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<messageIdentifier/>
<statusInfo>
<codeMajor>success</codeMajor>
<severity>status</severity>
<messageIdRef/>
</statusInfo>
</h:syncResponseHeaderInfo>
<o:Security s:mustUnderstand="1" xmlns:o="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
<u:Timestamp u:Id="_0">
<u:Created>2013-08-30T10:42:35.384Z</u:Created>
<u:Expires>2013-08-30T10:47:35.384Z</u:Expires>
</u:Timestamp>
</o:Security>
</s:Header>
<s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<createGroupResponse xmlns="http://www.imsglobal.org/services/gms/xsd/imsGroupManMessSchema_v1p0"/>
</s:Body>
</s:Envelope>

Example 2:

Request to get course group for a user:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ims="http://www.imsglobal.org/services/gms/xsd/imsGroupManMessSchema_v1p0" xmlns:ims1="http://www.imsglobal.org/services/common/imsCommonSchema_v1p0">
<soapenv:Header/>
<soapenv:Body>
<ims:readGroupsForPersonRequest>
<ims:personSourcedId>
<ims1:identifier>UserA</ims1:identifier>
</ims:personSourcedId>
</ims:readGroupsForPersonRequest>
</soapenv:Body>
</soapenv:Envelope>

Example 2

Response:

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" xmlns:u="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
<s:Header>
<h:syncResponseHeaderInfo xmlns:h="http://www.imsglobal.org/services/common/imsMessBindSchema_v1p0" xmlns="http://www.imsglobal.org/services/common/imsMessBindSchema_v1p0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<messageIdentifier/>
<statusInfoSet>
<statusInfo>
<codeMajor>success</codeMajor>
<severity>status</severity>
</statusInfo>
</statusInfoSet>
</h:syncResponseHeaderInfo>
<o:Security s:mustUnderstand="1" xmlns:o="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
<u:Timestamp u:Id="_0">
<u:Created>2013-08-30T13:54:30.466Z</u:Created>
<u:Expires>2013-08-30T13:59:30.466Z</u:Expires>
</u:Timestamp>
</o:Security>
</s:Header>
<s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<readGroupsForPersonResponse xmlns="http://www.imsglobal.org/services/gms/xsd/imsGroupManMessSchema_v1p0">
<groupSet>
<group>
<sourcedId>
<identifier xmlns="http://www.imsglobal.org/services/common/imsCommonSchema_v1p0">autogenerated_IMS_59969085</identifier>
</sourcedId>
<group>
<groupType xmlns="http://www.imsglobal.org/services/gms/xsd/imsGroupManDataSchema_v1p0">
<scheme>ItslearningOrganisationTypes</scheme>
<typeValue>
<type>Site</type>
<level>0</level>
</typeValue>
</groupType>
<relationship xmlns="http://www.imsglobal.org/services/gms/xsd/imsGroupManDataSchema_v1p0">
<relation>Parent</relation>
<sourceId>
<identifier xmlns="http://www.imsglobal.org/services/common/imsCommonSchema_v1p0">autogenerated_IMS_59969085</identifier>
</sourceId>
<label>Is parent of</label>
</relationship>
<description xmlns="http://www.imsglobal.org/services/gms/xsd/imsGroupManDataSchema_v1p0">
<descShort>IMS</descShort>
<descFull/>
</description>
<extension xmlns="http://www.imsglobal.org/services/gms/xsd/imsGroupManDataSchema_v1p0">
<extensionField xmlns="http://www.imsglobal.org/services/common/imsCommonSchema_v1p0">
<fieldName>visibleinsearch</fieldName>
<fieldType>Boolean</fieldType>
<fieldValue>True</fieldValue>
</extensionField>
</extension>
</group></group>
<group>
<sourcedId>
<identifier xmlns="http://www.imsglobal.org/services/common/imsCommonSchema_v1p0">SchoolA</identifier>
</sourcedId>
<group>
<groupType xmlns="http://www.imsglobal.org/services/gms/xsd/imsGroupManDataSchema_v1p0">
<scheme>ItslearningOrganisationTypes</scheme>
<typeValue>
<type>School</type>
<level>1</level>
</typeValue>
</groupType>
<relationship xmlns="http://www.imsglobal.org/services/gms/xsd/imsGroupManDataSchema_v1p0">
<relation>Parent</relation>
<sourceId>
<identifier xmlns="http://www.imsglobal.org/services/common/imsCommonSchema_v1p0">autogenerated_IMS_59969085</identifier>
</sourceId>
<label>Is parent of</label>
</relationship>
<description xmlns="http://www.imsglobal.org/services/gms/xsd/imsGroupManDataSchema_v1p0">
<descShort>SchoolA</descShort>
<descFull/>
</description>
</group></group>
<group>
<sourcedId>
<identifier xmlns="http://www.imsglobal.org/services/common/imsCommonSchema_v1p0">CourseA</identifier>
</sourcedId>
<group>
<groupType xmlns="http://www.imsglobal.org/services/gms/xsd/imsGroupManDataSchema_v1p0">
<scheme>ItslearningOrganisationTypes</scheme>
<typeValue>
<type>Course</type>
<level>2</level>
</typeValue>
</groupType>
<relationship xmlns="http://www.imsglobal.org/services/gms/xsd/imsGroupManDataSchema_v1p0">
<relation>Parent</relation>
<sourceId>
<identifier xmlns="http://www.imsglobal.org/services/common/imsCommonSchema_v1p0">SchoolA</identifier>
</sourceId>
<label>Is parent of</label>
</relationship>
<description xmlns="http://www.imsglobal.org/services/gms/xsd/imsGroupManDataSchema_v1p0">
<descShort>Description of the hierarchy connected to the course</descShort>
<descFull/>
</description>
<extension xmlns="http://www.imsglobal.org/services/gms/xsd/imsGroupManDataSchema_v1p0">
<extensionField xmlns="http://www.imsglobal.org/services/common/imsCommonSchema_v1p0">
<fieldName>visibleinsearch</fieldName>
<fieldType>Boolean</fieldType>
<fieldValue>True</fieldValue>
</extensionField>
<extensionField xmlns="http://www.imsglobal.org/services/common/imsCommonSchema_v1p0">
<fieldName>course</fieldName>
<fieldType>String</fieldType>
<fieldValue>CourseA</fieldValue>
</extensionField>
<extensionField xmlns="http://www.imsglobal.org/services/common/imsCommonSchema_v1p0">
<fieldName>course/code</fieldName>
<fieldType>String</fieldType>
<fieldValue>CourseA</fieldValue>
</extensionField>
<extensionField xmlns="http://www.imsglobal.org/services/common/imsCommonSchema_v1p0">
<fieldName>course/credits</fieldName>
<fieldType>String</fieldType>
<fieldValue/>
</extensionField>
</extension>
</group></group>
<group>
<sourcedId>
<identifier xmlns="http://www.imsglobal.org/services/common/imsCommonSchema_v1p0">CourseGroupA</identifier>
</sourcedId>
<group>
<groupType xmlns="http://www.imsglobal.org/services/gms/xsd/imsGroupManDataSchema_v1p0">
<scheme>ItslearningOrganisationTypes</scheme>
<typeValue>
<type>CourseGroup</type>
<level>3</level>
</typeValue>
</groupType>
<relationship xmlns="http://www.imsglobal.org/services/gms/xsd/imsGroupManDataSchema_v1p0">
<relation>Parent</relation>
<sourceId>
<identifier xmlns="http://www.imsglobal.org/services/common/imsCommonSchema_v1p0">CourseA</identifier>
</sourceId>
<label>Is parent of</label>
</relationship>
<description xmlns="http://www.imsglobal.org/services/gms/xsd/imsGroupManDataSchema_v1p0">
<descShort>Test group</descShort>
<descFull/>
</description>
</group></group>
</groupSet>
</readGroupsForPersonResponse>
</s:Body>
</s:Envelope>
 


Course archiving 

A course is not deleted when a hierarchy group attached to the course is deleted though the IMS ES import.  The course will be be detached from the hierarchy group and will live on as a manually created course.
Administration setting in itslearning decides whether a course should stay active or be archived when a hierarchy group is deleted:

  If you create a new hierarchy and use the same synckey as the course in the archive, you will NOT be able to re-attach the new hierarchy to the course in the archive.