IMS GLC Learning Information Services: Profiles

Version 2.0

Final Release
Version 1.0

Date Issued: 31 December 2011

Latest version: http://www.imsglobal.org/lis

IPR and Distribution Notices

Recipients of this document are requested to submit, with their comments, notification of any relevant patent claims or other intellectual property rights of which they may be aware that might be infringed by any implementation of the specification set forth in this document, and to provide supporting documentation.

IMS takes no position regarding the validity or scope of any intellectual property or other rights that might be claimed to pertain to the implementation or use of the technology described in this document or the extent to which any license under such rights might or might not be available; neither does it represent that it has made any effort to identify any such rights. Information on IMS’s procedures with respect to rights in IMS specifications can be found at the IMS Intellectual Property Rights web page: http://www.imsglobal.org/ipr/imsipr_policyFinal.pdf.

Copyright © 2011 IMS Global Learning Consortium. All Rights Reserved.

Use of this specification to develop products or services is governed by the license with IMS found on the IMS website: http://www.imsglobal.org/license.html.

Permission is granted to all parties to use excerpts from this document as needed in producing requests for proposals.

The limited permissions granted above are perpetual and will not be revoked by IMS or its successors or assigns.

THIS SPECIFICATION IS BEING OFFERED WITHOUT ANY WARRANTY WHATSOEVER, AND IN PARTICULAR, ANY WARRANTY OF NONINFRINGEMENT IS EXPRESSLY DISCLAIMED. ANY USE OF THIS SPECIFICATION SHALL BE MADE ENTIRELY AT THE IMPLEMENTER'S OWN RISK, AND NEITHER THE CONSORTIUM, NOR ANY OF ITS MEMBERS OR SUBMITTERS, SHALL HAVE ANY LIABILITY WHATSOEVER TO ANY IMPLEMENTER OR THIRD PARTY FOR ANY DAMAGES OF ANY NATURE WHATSOEVER, DIRECTLY OR INDIRECTLY, ARISING FROM THE USE OF THIS SPECIFICATION.

# Table of Contents

List of Tables. 4

1 Introduction.. 6

1.1 Learning Information Service Profiles Overview... 6

1.2 Scope and Context.. 6

1.3 Structure of this Document.. 6

1.4 Nomenclature.. 7

1.5 References. 7

2 Profiling the Learning Information Services. 9

2.1 The Core Profile.. 9

2.2 The Addition Profiles. 9

3 Information Model of the Core Profile.. 11

3.1 The Set of Services. 11

3.2 The Person Management Service Statement.. 11

3.2.1 The Service Statement 11

3.2.2 The Data Model Statement 13

3.3 The Group Management Service Statement.. 21

3.3.1 The Service Statement 21

3.3.2 The Data Model Statement 23

3.4 The Membership Management Service Statement.. 27

3.4.1 The Service Statement 27

3.4.2 The Data Model Statement 29

3.5 The Course Management Service Statement.. 31

3.5.1 The Service Statement 31

3.5.2 The Data Model Statement 33

3.6 The Bulk Data Exchange Management Service Statement.. 37

3.6.1 The Service Statement 37

3.6.2 The Data Model Statement 39

4 Information Models of the Profile Additions. 42

4.1 The Final Grade Addition Profile Statement.. 42

4.1.1 The Service Statements. 42

4.1.2 The Data Model Statements. 46

4.2 The Combined Sections Addition Profile Statement.. 50

4.2.1 The Service Statements. 50

4.2.2 The Data Model Statements. 54

4.3 The Full Course Hierarchy Addition Profile Statement.. 58

4.3.1 The Service Statements. 58

4.3.2 The Data Model Statements. 66

5 WSDL Bindings of the Core Profiles. 72

6 Best Practices & Implementation Guidance.. 73

6.1 Using the Core Profile.. 73

6.2 Using the Final Grade Addition Profile.. 73

6.3 Using the Combined Sections Addition Profile.. 73

6.4 Using the Full Course Hierarchy Addition Profile.. 73

7 Conformance & Compliance to the Core Profiles. 74

7.1 Compliance to the Core Profile.. 74

7.2 Compliance to the Addition Profiles. 75

7.2.1 Final Grade Addition Profile Conformance. 76

7.2.2 Combined Sections Addition Profile. 77

7.2.3 Fill Course Hierarchy Addition Profile. 77

7.3 Mixed Compliance.. 78

Appendix A Summary of the Services for the Profiles. 79

A1 Core Profile Summary.. 79

A2 Final Grade Addition Profile Summary.. 80

A3 Combined Sections Addition Profile Summary.. 80

A4 Full Course Hierarchy Addition Profile Summary.. 81

Appendix B The Core Profiles Binding Files. 82

B1 Core Profile Binding Files. 82

B1.1 Bulk Data Exchange Data Management Service (BDEMS) 82

B1.2 Course Management Service (CMS) 82

B1.3 Group Management Service (GMS) 82

B1.4 Membership Management Service (MMS) 82

B1.5 Person Management Service (PMS) 82

B2 Final Grade Addition Profile Binding Files. 83

B3 Combined Section Addition Profile Binding Files. 83

B4 Full Course Hierarchy Addition Profile Binding Files. 83

About This Document.. 84

List of Contributors. 84

Revision History .. 85

Index...... 86

# List of Tables

Table 3.1 PMS core profile operations conformance statement. 11

Table 3.2 Permitted status codes for the PMS core profile operations. 12

Table 3.3 PMS data model profile changes. 13

Table 3.4 GMS core profile operations conformance statement. 21

Table 3.5 Permitted status codes for the GMS core profile operations. 22

Table 3.6 GMS data model profile changes. 23

Table 3.7 MMS core profile operations conformance statement. 27

Table 3.8 Permitted status codes for the MMS core profile operations. 28

Table 3.9 MMS data model profile changes. 29

Table 3.10 CMS Course Section core profile operations conformance statement. 31

Table 3.11 Permitted status codes for the CMS core profile operations. 32

Table 3.12 CMS data model profile changes. 33

Table 3.13 BDEMS core profile operations conformance statement. 37

Table 3.14 Status codes for the BulkDataExchangeManager interface operations. 38

Table 3.15 BDEMS data model profile changes. 39

Table 4.1 OMS LineItem grade addition profile operations conformance statement. 42

Table 4.2 Permitted status codes for the LineItem grade addition profile operations. 43

Table 4.3 OMS Result grade addition profile operations conformance statement. 44

Table 4.4 Permitted status codes for the Result grade addition profile operations. 45

Table 4.5 OMS data model grade addition profile changes. 46

Table 4.6 CMS Section combined sections addition profile operations conformance statement. 50

Table 4.7 Permitted status codes for the Section combined section addition profile operations. 51

Table 4.8 CMS Association combined sections addition profile operations conformance statement. 52

Table 4.9 Permitted status codes for the Association combined section addition profile operations. 53

Table 4.10 CMS combined sections data model addition profile changes. 54

Table 4.11 CMS Template full course hierarchy addition profile operations conformance statement. 58

Table 4.12 Permitted status codes for the Template full course hierarchy addition profile operations. 59

Table 4.13 CMS Offering full course hierarchy addition profile operations conformance statement. 60

Table 4.14 Permitted status codes for the Offering full course hierarchy addition profile operations. 61

Table 4.15 CMS Section full course hierarchy addition profile operations conformance statement. 62

Table 4.16 Permitted status codes for the Section full course hierarchy addition profile operations. 63

Table 4.17 CMS Association full course hierarchy addition profile operations conformance statement. 64

Table 4.18 Permitted status codes for the Association full course hierarchy addition profile operations. 65

Table 4.19 CMS data model profile changes. 66

Table 7.1 Interoperability provided by different combinations of the core profiles. 76

Table A1.1 Summary of the service behaviors required in the core profile. 79

Table A2.1 Summary of the service behaviors required in the grade addition profile. 80

Table A3.1 Summary of the service behaviors required in the combined sections addition profile. 80

Table A4.1 Summary of the service behaviors required in the full course hierarchy addition profile. 81

# 1 Introduction

## 1.1 Learning Information Service Profiles Overview

The Learning Information Services (LIS) specification is the definition of how systems manage the exchange of information that describes people, groups, memberships, courses and outcomes within the context of learning. The Learning Information Services specification is constructed following the recommendations documented in the IMS GLC Abstract Framework (IAF) [IAF, 03a], [IAF, 03b], [IAF, 03c]. This means that this specification is based upon the concepts of:

· Interoperability – Learning Information Services focuses on the exchange of information between Learning Information Services systems. There are no assumptions in the specification on how the data is managed within the Learning Information Services systems;

· Service-oriented – Learning Information Services defines the exchange of information in terms of the services being supplied by the collaboration of the systems;

· Component-based – the Learning Information Services are composed of the Person Management Service (PMS), Group Management Service (GMS), Membership Management Services (MMS), Course Management Service (CMS), Outcomes Management Service (OMS) and the Bulk Data Exchange Management Service (BDEMS);

· Behaviors and Data Models – the Learning Information Services are defined in terms of their behaviors and data models. The behaviors cause changes in the state of the data model and the state of the data model will only be altered as a result of a clearly defined behavior;

· Multiple Bindings – the Learning Information Services information model is to be defined using the Unified Modeling Language (UML). This enables reliable mapping of the information model into a range of different bindings. The binding of immediate importance is to the Web Services Description Language (WSDL);

· Adoption – whenever appropriate, the Learning Information Services specification makes use of other IMS GLC and non-IMS GLC standards and specifications.

The Profiles identify the minimal subset of the functionality of the IMS GLC LIS specification that must be supported by systems developed for deployment between a Student Information Systems and Learning Management Systems. These Profiles (there is a Core plus several Additions) define the set of operations and data models that must be supported by the systems supporting the set of services within the LIS. A system can support greater functionality but there is no guarantee of interoperability for those extra features. Interoperability is only guaranteed for the functionality described in the Profiles.

## 1.2 Scope and Context

This document is the IMS GLC Learning Information Services Profiles v1.0 document. It contains the minimum service and data functionality statements that must be supported by systems that are used to support the exchange of learning information between a Student Information System (SIS) and a Learning Management System (LMS). These statements define a subset of the service and data functionality in each of the services that comprise the LIS.

Other Profiles can be defined for LIS. There is no guarantee of interoperability between the Core and other profiles.

## 1.3 Structure of this Document

The structure of this document is:

2. Profiling the Learning Information Services | An overview of the Profiles defined for LIS;
3. Information Model of the Core Profile | Identifies the subset of the full Learning Information Services i.e., the services, their operations and the associated data models, that form the requirement of the core profile;
4. Information Models of the Profile Additions | Identifies the subset of the full Learning Information Services i.e., the services, their operations and the associated data models, that form the requirement of the three addition profiles. The three addition profiles are final grade, combined sections and full course hierarchy;
5. WSDL Bindings of the Core Profiles | Describes the mapping of the information model descriptions to the WSDL bindings;
6. Best Practices & Implementation Guidance | Best practice recommendations for the use of the core and the addition profiles. This includes coverage of the use-cases addressed by the Core Profiles;
7. Conformance & Compliance to the Profiles | A discussion of conformance and compliance to the individual Profiles and the various combinations of Core/Addition Profiles;
Appendix A Summary of the Services for the Profiles | A summary of the services and operations supported for each of the Profiles;
Appendix B The Profiles Binding Files | The set of WSDL and XSD binding files that should be used for the binding of the Profiles.

## 1.4 Nomenclature

a-API Abstract Application Programming Interface

API Application Programming Interface

BDEMS Bulk Data Exchange Management Service

CMS Course Management Service

GMS Group Management Service

IAF IMS GLC Abstract Framework

IMS GLC IMS Global Learning Consortium, Inc.

LIS Learning Information Services

LMS Learning Management System

MMS Membership Management Service

OMS Outcomes Management Service

PIM Platform Independent Model

PMS Person Management Service

PSM Platform Specific Model

RFC Request For Comment

SDN Specification Development Note

SIS Student Information System

UML Unified Modeling Language

URL Uniform Resource Locator

WSDL Web Services Description Language

XSD XML Schema Definition

## 1.5 References

[APG, 05a] IMS GLC Application Profile Guidelines Overview: Part 1 – Management Overview v1.0, IMS Global Learning Consortium, K.Riley, October 2005. http://www.imsglobal.org/ap/index.html.

[APG, 05b] IMS GLC Application Profile Guidelines White Paper: Part 2 Technical Manual, S.Wilson and K.Riley, Version 1.0, IMS Global Learning Consortium, October 2005. http://www.imsglobal.org/ap/index.html.

[BDEMS, 11a] IMS GLC Bulk Data Exchange Management Service v1.0 Information Model v1.0 Final Release, L.Feng, W.Lee and C.Smythe, IMS Global Learning Consortium, November 2011.

[BDEMS, 11b] IMS GLC Bulk Data Exchange Management Service WSDL Binding v1.0 Final Release, L.Feng, W.Lee and C.Smythe, IMS Global Learning Consortium, November 2011.

[CMS, 11a] IMS GLC Course Management Service v1.0 Information Model v1.0 Final Release, L.Feng, W.Lee and C.Smythe, IMS Global Learning Consortium, November 2011.

[CMS, 11b] IMS GLC Course Management Service v1.0 WSDL Binding v1.0 Final Release, L.Feng, W.Lee and C.Smythe, IMS Global Learning Consortium, November 2011.

[GWS, 05] IMS GLC General Web Services WSDL Binding Guidelines v1.0 Final Specification, C.Schroeder, J.Simon and C.Smythe, IMS Global Learning Consortium, December 2005.

[IAF, 03a] IMS GLC Abstract Framework: Applications, Services & Components v1.0, Ed. C.Smythe, IMS Global Learning Consortium, July 2003.

[IAF, 03b] IMS GLC Abstract Framework: Glossary v1.0, Ed. C.Smythe, IMS Global Learning Consortium, July 2003.

[IAF, 03c] IMS Abstract Framework: White Paper v1.0, Ed. C.Smythe, IMS Global Learning Consortium, July 2003.

[LIS, 11a] IMS GLC Learning Information Services v2.0 Overview v1.0 Final Release, L.Feng, W.Lee and C.Smythe, IMS Global Learning Consortium, November 2011.

[LIS, 11b] IMS GLC Learning Information Services Best Practices & Implementation Guide v2.0 Final Release, L.Feng, W.Lee and C.Smythe, IMS Global Learning Consortium, November 2011.

[MMS, 11a] IMS GLC Membership Management Service v2.0 Information Model v1.0 Final Release, L.Feng, W.Lee and C.Smythe, IMS Global Learning Consortium, November 2011.

[MMS, 11b] IMS GLC Membership Management Service 2.0 WSDL Binding v1.0 Final Release, L.Feng, W.Lee and C.Smythe, IMS Global Learning Consortium, November 2011.

[OMS, 11a] IMS GLC Outcomes Management Service Information Model v1.0 Public Draft v2.0, L.Feng, W.Lee and C.Smythe, IMS Global Learning Consortium, November 2011.

[OMS, 11b] IMS GLC Outcomes Management Service v1.0 WSDL Binding v1.0 Public Draft v2.0, L.Feng, W.Lee and C.Smythe, IMS Global Learning Consortium, November 2011.

[PMS, 11a] IMS GLC Person Management Service v2.0 Information Model v1.0 Final Release, L.Feng, W.Lee and C.Smythe, IMS Global Learning Consortium, November 2011.

[PMS, 11b] IMS GLC Person Management Service v2.0 WSDL Binding v1.0 Final Release, L.Feng, W.Lee and C.Smythe, IMS Global Learning Consortium, November 2011.

[SDN07, 06] IMS GLC Specification Note 07: UML Profile for Platform Independent Model Descriptions of Specifications for Data Models v1.0, C.Smythe, IMS Global Learning Consortium, October 2006.

[SDN11, 06] IMS GLC Specification Note 11: Vocabulary Definition, Registration & Maintenance Procedures, C.Smythe, IMS Global Learning Consortium, October 2006.

[VDEX, 04] IMS GLC Vocabulary Definition Exchange Best Practice and Implementation Guide, Version 1.0 Final Specification, A. Cooper, IMS Global Learning Consortium, 2005. Online version: http://www.imsglobal.org/vdex/vdexv1p0/imsvdex_bestv1p0.html

# 2 Profiling the Learning Information Services

This is the Profiles of the IMS GLC LIS specification. The aim of the Profiles is to define the simplest subset of the full LIS specification that is required to support the exchange of information between a Student Information System and a Learning Management System.

The Profiles consists of the Core Profile and a set of Addition Profiles. All systems claiming compliance to the Profiles must conform to the Core Profile and may support none, some or all of the Addition Profiles. The Profiles are defined with respect to a ‘Sync Agent’ and ‘Ref Agent’. Both the ‘Sync Agent’ and ‘Ref Agent’ will act as service provider and service consumer depending on the specific operation being supported (a ‘Ref Agent’ is the system of reference i.e., the source of the data to be exchanged and the ‘Sync Agent’ is the receiving system i.e., the system that is to be synchronized with the ‘Ref Agent’).

The Profiles have been produced by:

a) Selecting which service(s) need to be supported;

b) Selecting the minimal set of operations that must be supported for each service;

c) Identifying the status codes that will be supported for each operation;

d) Listing the data models so that a check-list reflecting the objects supported can be identified for an implementation;

e) Defining the vocabularies that support the data models (these are reduced forms of the default vocabularies defined in the specification).

The content of this document is a result of the application of the above process to the full LIS specification.

## 2.1 The Core Profile

The LIS Core Profile is a subset of the IMS LIS 2.0 API. Conformance with this profile is designed to meet typical use cases where an Administrative System is interfaced with a Teaching and Learning Environment. In this profile the Administrative system is intended to act as an authoritative repository of user, course, group, section and membership information. The Administrative system is a consumer of outcomes information for purposes of maintaining final grades and other outcomes information. The LIS Core Profile supports both a near real time and event driven and batch / bulk data integrations. We anticipate that the administrative system will be the Ref agent and the teaching and learning system will be a Sync Agent. This profile is designed to support the following key integration cases between these systems:

· Provisioning and updating the teaching and learning environment through Bulk operations;

· Supporting near real time enrolment and, section and course provisioning;

· Allowing the posting of final grades to the administrative system using workflows with the teaching and learning environment or the administrative system;

· Supporting the data structures necessary to allow management of cross-listing and coordinated course sections.

## 2.2 The Addition Profiles

Currently there are three Addition Profiles, namely:

· Final Grades Addition Profile – to provide the capability to exchange detailed information about student grades. This is a profile of the Outcomes Management Service;

· Combined Sections Addition profile – to provide the capability to exchange detailed information about Course Sections and related Course Sections using Section Associations. This is a profile of the Course Management Service;

· Full Course Hierarchy Addition Profile – to provide the capability to exchange detailed information about courses. This is a profile of the Course Management Service.

An implementation may or may not support any of these Addition Profiles. A consequence of optional combinations of the Addition Profiles makes interoperability more complicated; full interoperability requires the systems to support the same range of Addition Profiles.

# 3 Information Model of the Core Profile

## 3.1 The Set of Services

The Core Profile[1] consists of:

· Person Management Service – with significantly reduced number of operations and unchanged data model;

· Group Management Service – with significantly reduced number of operations and unchanged data model;

· Membership Management Service – significantly reduced number of operations and unchanged data model;

· Course Management Service – with significantly reduced number of operations and with a significantly changed data model;

· Bulk Data Exchange Management Service – with unchanged service and data models[2].

The set of operations supported within each service are defined from the perspectives of the Sync Agent and Ref Agent. If either the Sync/Ref Agents ‘Calls’ the service then it is acting as a service consumer for that operation. If the Sync/Ref Agents ‘Implements’ the service then it is acting as a service provider for that operation.

## 3.2 The Person Management Service Statement

### 3.2.1 The Service Statement

The set of operations that must be supported by ‘Sync Agent’ and ‘Ref Agent’ implementations of the PMS are summarized in Table 3.1.

Table 3.1 PMS core profile operations conformance statement.

Operation | Synch Agent | Ref Agent
createPerson |  |
createByProxyPerson |  |
deletePerson | Implements | Calls
readPerson[3] |  |
readPersonCore |  |
readAllPersonIds |  |
readPersonIdsFromSavePoint |  |
readPersons |  |
readPersonsFromSavePoint |  |
updatePerson |  |
replacePerson[4] | Implements | Calls
discoverPersonIds |  |
changePersonIdentifier |  |

In Table 3.1 (and all of the following similar tables) the implementation terms are used to mean:

· ‘Implements’ – the corresponding agent must implement the operation i.e., process service requests and not respond with the ‘unsupported’ status code;

· ‘Calls’ – the corresponding agent may make a service request using this operation. A system is not required to make use of this operation. Any such service call must be implemented correctly.

The summary list of status codes that can be returned by the different operations through the StatusInfo object is given in Table 3.2. The key to the entries is: ‘Y’ denotes the code may be returned by that operation. A blank entry means that the code cannot be returned by that operation.

Table 3.2 Permitted status codes for the PMS core profile operations.

CodeMinor Status Code | deletePerson | replacePerson
‘fullsuccess’ | Y | Y
‘createsuccess’ |  | Y
‘overflowfail’ |  | Y
‘invaliddata’ |  | Y
‘incompletedata’ |  | Y
‘partialdatastorage’ |  | Y
‘unknownobject’ | Y | Y
‘deletefailure’ | Y |
‘unknownvocabulary’ |  | Y
‘unknownextension’ |  | Y
‘targetisbusy’ | Y | Y
‘unauthorizedrequest’ | Y | Y
‘linkfailure’ | Y | Y
‘unsupportedLISoperation’ | Y | Y

NOTE: Both ‘Sync Agent’ and ‘Ref Agent’ implementations must respond with the ‘unsupportedLISoperation’ for all and any of the operations under the LIS which are not implemented.

### 3.2.2 The Data Model Statement

The profiled data model is given in Table 3.3. The nomenclature used in Table 3.3 (and in the later similar tables) is:

· The Class/Attribute column – the name of the Class and corresponding Attributes (as per the UML descriptions). The class name always starts with an uppercase character and each attribute starts with a lowercase character;

· The Baseline Constraints columns are composed of:-

— Min – the minimum multiplicity (this is not applicable for the Class) as defined in the original Information Model

— Max – the maximum multiplicity (this is not applicable for the Class) as defined in the original Information Model

— SPMax – the smallest permitted maximum that an implementation MUST support as defined in the original Information Model. An implementation may exceed his maximum but interoperability is not guaranteed for those exceeding the value of the SPMax;

— Type – the data type of the attribute (this is not applicable for the Class) as defined in the original Information Model. This type will either be a primitive data type or a Class described elsewhere in the tabular description. This description may also be accompanied by a note that adds further information e.g., to identify the associated vocabulary;

· The Profile Notes column – defines the changes that are imposed by the Profile.

Table 3.3 PMS data model profile changes.

Class/Attribute | Baseline Constraints | Profile Notes
Min | Max | SPMax | Type
PersonRecordSet | – | – | – | – |
personRecord | 0 | * | 100,000 | PersonRecord |
PersonRecord | – | – | – | – |
sourcedGUID | 1 | 1 | 1 | SourcedGUID |
refAgentInstance | 0 | 1 | 1 | Normalized String [1-4095] |
sourcedId | 1 | 1 | 1 | GUID |
person | 1 | 1 | 1 | Person |
Person | – | – | – | – |
formname | 0 | * | ? | FormName |
name | 1 | * | ? | Name | SPMax = 1.
Address | 0 | * | ? | Address |
contactinfo | 0 | * | ? | ContactInfo |
demographics | 0 | * | ? | Demographics |
agent | 0 | * | ? | Agent |
roles | 0 | * | ? | EnterpriseRoles |
extension | 0 | 1 | 1 | IMSExtension |
PersonCore | – | – | – | – |
sourcedId | 1 | 1 | 1 | GUID |
formname | 1 | 1 | 1 | FormName |
userId | 1 | 1 | 1 | UserId |
FormName | – | – | – | – |
formnameType | 1 | 1 | 1 | BaseValueToken |
instanceIdentifier | 1 | 1 | 1 | Text |
language | 1 | 1 | 1 | Ext Vocab: Default=’en-US’ [19] |
textString | 1 | 1 | 1 | {As base type} |
instanceVocabulary | 1 | 1 | 1 | AnyURI |
instanceValue | 1 | 1 | 1 | Text |
language | 1 | 1 | 1 | Ext Vocab: Default=’en-US’ [19] |
textString | 1 | 1 | 1 | Entry in ‘instanceVocabulary’. [1] |
formattedName | 1 | 1 | 1 | Text |
language | 1 | 1 | 1 | Ext Vocab: Default=’en-US’ [19] |
textString | 1 | 1 | 1 | String [1-255] |
Name | – | – | – | – |
nameType | 1 | 1 | 1 | BaseValueToken |
instanceIdentifier | 1 | 1 | 1 | Text |
language | 1 | 1 | 1 | Ext Vocab: Default=’en-US’ [19] |
textString | 1 | 1 | 1 | {As base type} |
instanceVocabulary | 1 | 1 | 1 | AnyURI |
instanceValue | 1 | 1 | 1 | Text |
language | 1 | 1 | 1 | Ext Vocab: Default=’en-US’ [19] |
textString | 1 | 1 | 1 | Entry in ‘instanceVocabulary’ [2] | Require: ‘Full’
partName | 1 | * | 5 | BaseValueSingle |
instanceIdentifier | 1 | 1 | 1 | Text |
language | 1 | 1 | 1 | Ext Vocab: Default=’en-US’ [19] |
textString | 1 | 1 | 1 | {As base type} |
instanceVocabulary | 1 | 1 | 1 | AnyURI |
instanceName | 1 | 1 | 1 | Text |
language | 1 | 1 | 1 | Ext Vocab: Default=’en-US’ [19] |
textString | 1 | 1 | 1 | Entry in ‘instanceVocabulary’ [3] | Require: ‘First’ and ‘Last’. If ordinal then only the first value is returned.
instanceValue | 1 | 1 | 1 | Text |
language | 1 | 1 | 1 | Ext Vocab: Default=’en-US’ [19] |
textString | 1 | 1 | 1 | String [1-127] |
Address | – | – | – | – |
addressType | 1 | 1 | 1 | BaseValueToken |
instanceIdentifier | 1 | 1 | 1 | Text |
language | 1 | 1 | 1 | Ext Vocab: Default=’en-US’ [19] |
textString | 1 | 1 | 1 | {As base type} |
instanceVocabulary | 1 | 1 | 1 | AnyURI |
instanceValue | 1 | 1 | 1 | Text |
language | 1 | 1 | 1 | Ext Vocab: Default=’en-US’ [19] |
textString | 1 | 1 | 1 | Entry in ‘instanceVocabulary’ [4] |
addressPart | 1 | * | 5 | BaseValueSingle |
instanceIdentifier | 1 | 1 | 1 | Text |
language | 1 | 1 | 1 | Ext Vocab: Default=’en-US’ [19] |
textString | 1 | 1 | 1 | {As base type} |
instanceVocabulary | 1 | 1 | 1 | AnyURI |
instanceName | 1 | 1 | 1 | Text |
language | 1 | 1 | 1 | {As base type} |
textString | 1 | 1 | 1 | Entry in ‘instanceVocabulary’ [5] |
instanceValue | 1 | 1 | 1 | Text |
language | 1 | 1 | 1 | {As base type} |
textString | 1 | 1 | 1 | String [1-127] |
ContactInfo | – | – | – | – |
contactInfoType | 1 | 1 | 1 | BaseValueToken |
instanceIdentifier | 1 | 1 | 1 | Text |
language | 1 | 1 | 1 | Ext Vocab: Default=’en-US’ [19] |
textString | 1 | 1 | 1 | {As base type} |
instanceVocabulary | 1 | 1 | 1 | AnyURI |
instanceValue | 1 | 1 | 1 | Text |
language | 1 | 1 | 1 | Ext Vocab: Default=’en-US’ [19] |
textString | 1 | 1 | 1 | Entry in ‘instanceVocabulary’ [6] |
contactInfoValue | 1 | 1 | 1 | Text |
language | 1 | 1 | 1 | Ext Vocab: Default=’en-US’ [19] |
textString | 1 | 1 | 1 | String [1-127] |
Demographics | – | – | – | – |
demographicsType | 1 | 1 | 1 | BaseValueToken |
instanceIdentifier | 1 | 1 | 1 | Text |
language | 1 | 1 | 1 | Ext Vocab: Default=’en-US’ [19] |
textString | 1 | 1 | 1 | {As base type} |
instanceVocabulary | 1 | 1 | 1 | AnyURI |
instanceValue | 1 | 1 | 1 | Text |
language | 1 | 1 | 1 | Ext Vocab: Default=’en-US’ [19] |
textString | 1 | 1 | 1 | Entry in ‘instanceVocabulary’ [7] |
Representation | 0 | * | 1 | Representation |
eventDate | 0 | * | 1 | BaseValueSingle |
instanceIdentifier | 1 | 1 | 1 | Text |
language | 1 | 1 | 1 | Ext Vocab: Default=’en-US’ [19] |
textString | 1 | 1 | 1 | {As base type} |
instanceVocabulary | 1 | 1 | 1 | AnyURI |
instanceName | 1 | 1 | 1 | Text |
language | 1 | 1 | 1 | Ext Vocab: Default=’en-US’ [19] |
textString | 1 | 1 | 1 | Entry in ‘instanceVocabulary’ [8] |
instanceValue | 1 | 1 | 1 | Text |
language | 1 | 1 | 1 | {As base type} |
textString | 1 | 1 | 1 | Date in the form ISO8601: YYYY-MM-DD. |
Gender | 0 | 1 | 1 | Int Vocabulary. [9] Default=’unknown’. |
demographicsInfo | 0 | * | 5 | BaseValueSingle |
instanceIdentifier | 1 | 1 | 1 | Text |
language | 1 | 1 | 1 | Ext Vocab: Default=’en-US’ [19] |
textString | 1 | 1 | 1 | {As base type} |
instanceVocabulary | 1 | 1 | 1 | AnyURI |
instanceName | 1 | 1 | 1 | Text |
language | 1 | 1 | 1 | Ext Vocab: Default=’en-US’ [19] |
textString | 1 | 1 | 1 | Entry in ‘instanceVocabulary’ [10] |
instanceValue | 1 | 1 | 1 | Text |
language | 1 | 1 | 1 | Ext Vocab: Default=’en-US’ [19] |
textString | 1 | 1 | 1 | String [1-255] |
Representation | – | – | – | – |
representationType | 1 | 1 | 1 | BaseValueToken |
instanceIdentifier | 1 | 1 | 1 | Text |
language | 1 | 1 | 1 | Ext Vocab: Default=’en-US’ [19] |
textString | 1 | 1 | 1 | {As base type} |
instanceVocabulary | 1 | 1 | 1 | AnyURI |
instanceValue | 1 | 1 | 1 | Text |
language | 1 | 1 | 1 | Ext Vocab: Default=’en-US’ [19] |
textString | 1 | 1 | 1 | Entry in ‘instanceVocabulary’ [11] |
date | 1 | 1 | 1 | Date in the form ISO8601: YYYY-MM-DD. |
Description | 1 | 1 | 1 | Description |
Agent | – | – | – | – |
agentType | 1 | 1 | 1 | BaseValueToken |
instanceIdentifier | 1 | 1 | 1 | Text |
language | 1 | 1 | 1 | Ext Vocab: Default=’en-US’ [19] |
textString | 1 | 1 | 1 | {As base type} |
instanceVocabulary | 1 | 1 | 1 | AnyURI |
instanceValue | 1 | 1 | 1 | Text |
language | 1 | 1 | 1 | Ext Vocab: Default=’en-US’ [19] |
textString | 1 | 1 | 1 | Entry in ‘instanceVocabulary’ [12] |
agentId | 1 | 1 | 1 | Text |
language | 1 | 1 | 1 | Ext Vocab: Default=’en-US’ [19] |
textString | 1 | 1 | 1 | String [1-127] |
agentDomain | 1 | 1 | 1 | Text |
language | 1 | 1 | 1 | Ext Vocab: Default=’en-US’ [19] |
textString | 1 | 1 | 1 | String [1-255] |
description | 0 | 1 | 1 | Description |
EnterpriseRoles | – | – | – | – |
enterpriserolesType | 1 | 1 | 1 | BaseValueToken |
instanceIdentifier | 1 | 1 | 1 | Text |
language | 1 | 1 | 1 | Ext Vocab: Default=’en-US’ [19] |
textString | 1 | 1 | 1 | {As base type} |
instanceVocabulary | 1 | 1 | 1 | AnyURI |
instanceValue | 1 | 1 | 1 | Text |
language | 1 | 1 | 1 | Ext Vocab: Default=’en-US’ [19] |
textString | 1 | 1 | 1 | Entry in ‘instanceVocabulary’ [13] |
systemRole | 0 | 1 | 1 | BaseValueToken |
instanceIdentifier | 1 | 1 | 1 | Text |
language | 1 | 1 | 1 | Ext Vocab: Default=’en-US’ [19] |
textString | 1 | 1 | 1 | {As base type} |
instanceVocabulary | 1 | 1 | 1 | AnyURI |
instanceValue | 1 | 1 | 1 | Text |
language | 1 | 1 | 1 | Ext Vocab: Default=’en-US’ [19] |
textString | 1 | 1 | 1 | String [1-255] |
institutionRole | 0 | * | 2 | InstitutionRole |
userId | 0 | 1 | 1 | UserId |
InstitutionRole | – | – | – | – |
institutionroletype | 1 | 1 | 1 | BaseValueToken |
instanceIdentifier | 1 | 1 | 1 | Text |
language | 1 | 1 | 1 | Ext Vocab: Default=’en-US’ [19] |
textString | 1 | 1 | 1 | {As base type} |
instanceVocabulary | 1 | 1 | 1 | AnyURI |
instanceValue | 1 | 1 | 1 | Text |
language | 1 | 1 | 1 | Ext Vocab: Default=’en-US’ [19] |
textString | 1 | 1 | 1 | Entry in ‘instanceVocabulary’ [15] |
primaryroletype | 1 | 1 | 1 | Boolean: {True=primary role; False=not primary role} |
UserId | – | – | – | – |
useridValue | 1 | 1 | 1 | Text |
language | 1 | 1 | 1 | Ext Vocab: Default=’en-US’ [19] |
textString | 1 | 1 | 1 | String [1-255] |
userIdType | 0 | 1 | 1 | Text |
language | 1 | 1 | 1 | Ext Vocab: Default=’en-US’ [19] |
textString | 1 | 1 | 1 | String [1-127] |
password | 0 | 1 | 1 | Text |
language | 1 | 1 | 1 | Ext Vocab: Default=’en-US’ [19] |
textString | 1 | 1 | 1 | String [1-255] |
pwEncryptionType | 0 | 1 | 1 | Text |
language | 1 | 1 | 1 | Ext Vocab: Default=’en-US’ [19] |
textString | 1 | 1 | 1 | String [1-255] |
authenticationType | 0 | 1 | 1 | Text |
language | 1 | 1 | 1 | Ext Vocab: Default=’en-US’ [19] |
textString | 1 | 1 | 1 | String [1-255] |
BaseValueToken | – | – | – | – |
instanceIdentifier | 1 | 1 | 1 | Text |
language | 1 | 1 | 1 | Ext Vocab: Default=’en-US’ [19] |
textString | 1 | 1 | 1 | {As base type} |
instanceVocabulary | 1 | 1 | 1 | AnyURI |
instanceValue | 1 | 1 | 1 | Text |
language | 1 | 1 | 1 | Ext Vocab: Default=’en-US’ [19] |
textString | 1 | 1 | 1 | Entry in ‘instanceVocabulary’. |
BaseValueSingle | – | – | – | – |
instanceIdentifier | 1 | 1 | 1 | Text |
language | 1 | 1 | 1 | Ext Vocab: Default=’en-US’ [19] |
textString | 1 | 1 | 1 | {As base type} |
instanceVocabulary | 1 | 1 | 1 | AnyURI |
instanceName | 1 | 1 | 1 | Text |
language | 1 | 1 | 1 | Ext Vocab: Default=’en-US’ [19] |
textString | 1 | 1 | 1 | Entry in ‘instanceVocabulary’ |
instanceValue | 1 | 1 | 1 | Text |
language | 1 | 1 | 1 | Ext Vocab: Default=’en-US’ [19] |
textString | 1 | 1 | 1 | String [1-127] |
Description | – | – | – | – |
shortDescription | 1 | 1 | 1 | Text |
language | 1 | 1 | 1 | Ext Vocab: Default=’en-US’ [19] |
textString | 1 | 1 | 1 | String [1-127] |
longDescription | 0 | 1 | 1 | Text |
language | 1 | 1 | 1 | Ext Vocab: Default=’en-US’ [19] |
textString | 1 | 1 | 1 | String [1-2095] |
fullDescription | 0 | 1 | 1 | FullDescription |
FulDescription | – | – | – | – |
mediamode | 1 | 1 | 1 | Int Vocab. [16] |
contentRefType | 1 | 1 | 1 | Int Vocab. [17] |
mimeType | 1 | 1 | 1 | Normalized String: [1-63] |
descriptionText |  |  |  | Text |
language | 1 | 1 | 1 | Ext Vocab: Default=’en-US’ [19] |
textString | 1 | 1 | 1 | String [1-1024] |
GUID | – | – | – | Normalized String: [1-4095] |
GUIDSet | – | – | – | This is only used as a parameter. |
sourcedId | 0 | * | 250,000 | GUID |
IMSExtension | – | – | – | – |
extensionNameVocabulary | 1 | 1 | 1 | AnyURI |
extensionValueVocabulary | 1 | 1 | 1 | AnyURI |
extensionField | 1 | * | 5 | ExtensionField |
ExtensionField | – | – | – | – |
fieldName | 1 | 1 | 1 | Normalized String: [1-127] |
fieldType | 1 | 1 | 1 | Entry in ‘extensionVocabulary’ [18] |
fieldValue | 1 | 1 | 1 | Normalized String: [1-1023] |
QueryObject | – | – | – | Normalized String: [1-1023] This is only used as a parameter. | Not required.
SequenceIdentifier | – | – | – | DateTime (YYYY-MM-DDTHH:MM:SS.NNN) This is only used as a parameter. | Not required.
Text | – | – | – | – |
language | 1 | 1 | 1 | Ext Vocab: Default=’en-US’ [19] |
textString | 1 | 1 | 1 | String [1..4095] |

Data Model Notes:

[1] External VDEX vocabulary: ‘formnameType’ – the set of permitted types of formatted names;

[2] External VDEX vocabulary: ‘nameType’ – the set of permitted types of names;

[3] External VDEX vocabulary: ‘partName’ – the set of permitted types of parts for a name;

[4] External VDEX vocabulary: ‘addressType’ – the set of permitted types of addresses;

[5] External VDEX vocabulary: ‘addressPart’ – the set of permitted types of parts for an addresses;

[6] External VDEX vocabulary: ‘contactInfoType’ – the set of permitted types of contact information;

[7] External VDEX vocabulary: ‘demographicsType’ – the set of permitted types of demographic information;

[8] External VDEX vocabulary: ‘eventDate’ – the set of permitted types of event date;

[9] Internal vocabulary: ‘gender’ – the permitted values for gender;

[10] External VDEX vocabulary: ‘demographicsInfo’ – the set of permitted types of demographic content;

[11] External VDEX vocabulary: ‘representationType’ – the set of permitted types of representation;

[12] External VDEX vocabulary: ‘agentType’ – the set of permitted types of agent;

[13] External VDEX vocabulary: ‘enterpriserolesType’ – the set of permitted types of Enterprise Role;

[14] External VDEX vocabulary: ‘systemRole’ – the set of permitted types of System Role;

[15] External VDEX vocabulary: ‘institutionRole’ – the set of permitted types of Institution Role;

[16] Internal vocabulary: ‘mediaMode’ – set of permitted types of content reference;

[17] Internal vocabulary: ‘contentRefType’ – set of permitted types of content;

[18] External VDEX vocabulary: ‘fieldType’ – set of types permitted as extensions;

[19] External vocabulary: ‘language’ – use ISO639 as the source.

## 3.3 The Group Management Service Statement

### 3.3.1 The Service Statement

The set of operations that must be supported by ‘Sync Agent’ and ‘Ref Agent’ implementations of the GMS are summarized in Table 3.4.

Table 3.4 GMS core profile operations conformance statement.

Operation | Synch Agent | Ref Agent
createGroup |  |
createByProxyGroup |  |
deleteGroup | Implements | Calls
addGroupRelationship |  |
removeGroupRelationship |  |
readGroup[5] |  |
readAllGroupIds |  |
readGroupIdsForPerson |  |
readGroupIdsFromSavePoint |  |
readGroups |  |
readGroupsFromSavePoint |  |
updateGroup |  |
replaceGroup[6] | Implements | Calls
discoverGroupIds |  |
changeGroupIdentifier |  |

The summary list of status codes that can be returned by the different operations through the StatusInfo object is given in Table 3.5. The key to the entries is: ‘Y’ denotes the code may be returned by that operation. A blank entry means that the code cannot be returned by that operation.

Table 3.5 Permitted status codes for the GMS core profile operations.

CodeMinor Status Code | deleteGroup | replaceGroup
‘fullsuccess’ | Y | Y
‘createsuccess’ |  | Y
‘overflowfail’ |  | Y
‘idallocinusefail’ |  | Y
‘invaliddata’ |  | Y
‘incompletedata’ |  | Y
‘partialdatastorage’ |  | Y
‘unknownobject’ | Y | Y
‘unknowngtvocabulary’ |  | Y
‘unknownvocabulary’ |  | Y
‘unknownmdvocabulary’ |  | Y
‘deletefailure’ | Y |
‘unknownextension’ |  | Y
‘targetisbusy’ | Y | Y
‘linkfailure’ | Y | Y
‘unauthorizedrequest’ | Y | Y
‘unsupportedLISoperation’ | Y | Y

NOTE: Both ‘Sync Agent’ and ‘Ref Agent’ implementations must respond with the ‘unsupportedLISoperation’ for all and any of the operations under the LIS which are not implemented.

### 3.3.2 The Data Model Statement

The profiled data model is given in Table 3.6.

Table 3.6 GMS data model profile changes.

Class/Attribute | Baseline Constraints | Profile Notes
Min | Max | SPMax | Type
GroupRecordSet | – | – | – | – |
groupRecord | 0 | * | 100,000 | GroupRecord |
GroupRecord | – | – | – | – |
sourcedGUID | 1 | 1 | 1 | SourcedGUID |
refAgentInstance | 0 | 1 | 1 | Normalized String [1-4095] |
sourcedId | 1 | 1 | 1 | GUID |
group | 1 | 1 | 1 | Group |
Group | – | – | – | – |
groupType | 1 | 1 | 1 | GroupType |
email | 0 | 1 | 1 | Normalized String: [1-4095]. |
url | 0 | 1 | 1 | URL |
timeFrame | 0 | 1 | 1 | Timeframe |
relationship | 0 | * | 5 | Relationship |
enrollControll | 0 | 1 | 1 | EnrollControll |
org | 0 | 1 | 1 | Org |
description | 0 | 1 | 1 | Description |
dataSource | 0 | 1 | 1 | GUID |
recordInfo | 0 | 1 | 1 | Metadata |
extension | 0 | 1 | 1 | IMSExtension |
GroupType | – | – | – | – |
scheme | 1 | 1 | 1 | Text |
language | 1 | 1 | 1 | {As base type} |
textString | 1 | 1 | 1 | String: [1-255] |
TypeValue | 1 | * | 1 | TypeValue |
TypeValue | – | – | – | – |
id | 1 | 1 | 1 | NormalizedString |
type | 1 | 1 | 1 | Text |
language | 1 | 1 | 1 | {As base type} |
textString | 1 | 1 | 1 | String: [1-63] |
level | 1 | 1 | 1 | Text |
language | 1 | 1 | 1 | {As base type} |
textString | 1 | 1 | 1 | String: [1-63] | Support for the value ‘TERM’ is required.
Relationship | – | – | – | – |
relationId | 1 | 1 | 1 | GUID |
relation | 1 | 1 | 1 | Int Vocab [1] |
sourcedId | 1 | 1 | 1 | GUID |
label | 1 | 1 | 1 | Text |
language | 1 | 1 | 1 | {As base type} |
textString | 1 | 1 | 1 | String: [1-255] |
EnrollControl | – | – | – | – |
enrollAccept | 0 | 1 | 1 | Boolean: {true=accept enrollment; false=do not accept enrollment} |
enrollAllowed | 0 | 1 | 1 | Boolean: {true=allow enrollment; false=do not allow enrollment} |
Org | – | – | – | – |
orgName | 0 | 1 | 1 | Text |
language | 1 | 1 | 1 | {As base type} |
textString | 1 | 1 | 1 | String: [1-255] |
orgUnit | 0 | 1 | 1 | Text |
language | 1 | 1 | 1 | {As base type} |
textString | 1 | 1 | 1 | String: [1-255] |
type | 0 | 1 | 1 | Text |
language | 1 | 1 | 1 | {As base type} |
textString | 1 | 1 | 1 | String: [1-255] |
id | 0 | 1 | 1 | Text |
language | 1 | 1 | 1 | {As base type} |
textString | 1 | 1 | 1 | String: [1-255] |
TimeFrame | – | – | – | – |
begin | 0 | 1 | 1 | DateTime: ISO8601 (YYYY-MM-DDTHH:MM:SS) |
end | 0 | 1 | 1 | DateTime: ISO8601 (YYYY-MM-DDTHH:MM:SS) |
restrict | 0 | 1 | 1 | Boolean: {true=restriction is active; false=restriction is not active} |
adminPeriod | 0 | 1 | 1 | Text |
language | 1 | 1 | 1 | {As base type} |
textString | 1 | 1 | 1 | {As base type} |
Description | – | – | – | – |
shortDescription | 1 | 1 | 1 | Text |
language | 1 | 1 | 1 | {As base type} |
textString | 1 | 1 | 1 | String [1-127] |
longDescription | 0 | 1 | 1 | Text |
language | 1 | 1 | 1 | {As base type} |
textString | 1 | 1 | 1 | String [1-2095] |
fullDescription | 0 | 1 | 1 | FullDescription |
FulDescription | – | – | – | – |
mediamode | 1 | 1 | 1 | Int Vocab. [2] |
contentRefType | 1 | 1 | 1 | Int Vocab. [3] |
mimeType | 1 | 1 | 1 | Normalized String: [1-63] |
descriptionText |  |  |  | Text |
language | 1 | 1 | 1 | {As base type} |
textString | 1 | 1 | 1 | String [1-1024] |
Metadata | – | – | – | – |
metadataNameVocabulary | 1 | 1 | 1 | AnyURI |
metadataValueVocabulary | 1 | 1 | 1 | AnyURI |
metadataField | 1 | * | ? | ExtensionField |
IMSExtension | – | – | – | – |
extensionNameVocabulary | 1 | 1 | 1 | AnyURI |
extensionValueVocabulary | 1 | 1 | 1 | AnyURI |
extensionField | 1 | * | ? | ExtensionField |
ExtensionField | – | – | – | – |
fieldName | 1 | 1 | 1 | Normalized String: [1-127] |
fieldType | 1 | 1 | 1 | Entry in ‘extensionVocabulary’ [4] |
fieldValue | 1 | 1 | 1 | Normalized String: [1-1023] |
GUID | – | – | – | Normalized String: [1-4095] |
GUIDSet | – | – | – | This is only used as a parameter. |
sourcedId | 0 | * | 250,000 | GUID |
QueryObject | – | – | – | Normalized String: [1-1023] This is only used as a parameter. | Not required.
SequenceIdentifier | – | – | – | DateTime (YYYY-MM-DDTHH:MM:SS.NNN) This is only used as a parameter. | Not required.
Text | – | – | – | – |
language | 1 | 1 | 1 | Ext Vocab: Default=’en-US’ [5] |
textString | 1 | 1 | 1 | String [1..4095] |
URL | – | – | – | Normalized String: [1-4095] |

Data Model Notes:

[1] Internal vocabulary: ‘relation’ – set of permitted types of relationship

[2] Internal vocabulary: ‘mediaMode’ – set of permitted types of content reference;

[3] Internal vocabulary: ‘contentRefType’ – set of permitted types of content;

[4] External VDEX vocabulary: ‘fieldType’ – set of types permitted as extensions;

[5] External vocabulary: ‘language’ – use ISO639 as the source.

## 3.4 The Membership Management Service Statement

### 3.4.1 The Service Statement

The set of operations that must be supported by ‘Sync Agent’ and ‘Ref Agent’ implementations of the MMS are summarized in Table 3.7.

Table 3.7 MMS core profile operations conformance statement.

Operation | Synch Agent | Ref Agent
createMembership |  |
createByProxyMembership |  |
deleteMembership | Implements | Calls
readMembership[7] |  |
readMembershipIdsForPerson |  |
readMembershipIdsForPersonWithRole |  |
readMembershipIdsForCollection |  |
readAllMembershipIds |  |
readMembershipIdsFromSavePoint |  |
readMemberships |  |
readMembershipsFromSavePoint |  |
updateMembership |  |
replaceMembership[8] | Implements | Calls
discoverMembershipIds |  |
changeMembershipIdentifier |  |

The summary list of status codes that can be returned by the different operations through the StatusInfo object is given in Table 3.8. The key to the entries is: ‘Y’ denotes the code may be returned by that operation. A blank entry means that the code cannot be returned by that operation.

Table 3.8 Permitted status codes for the MMS core profile operations.

CodeMinor Status Code | deleteMembership | replaceMembership
‘fullsuccess’ | Y | Y
‘createsuccess’ |  | Y
‘overflowfail’ |  | Y
‘idallocinusefail’ |  | Y
‘invaliddata’ |  | Y
‘incompletedata’ |  | Y
‘partialdatastorage’ |  | Y
‘unknownobject’ | Y | Y
‘deletefailure’ | Y |
‘unknownvocabulary’ |  | Y
‘unknownmdvocabulary’ |  | Y
‘unknownextension’ |  | Y
‘targetisbusy’ | Y | Y
‘unauthorizedrequest’ | Y | Y
‘linkfailure’ | Y | Y
‘unsupportedLISoperation’ | Y | Y

NOTE: Both ‘Sync Agent’ and ‘Ref Agent’ implementations must respond with the ‘unsupportedLISoperation’ for all and any of the operations under the LIS which are not implemented.

### 3.4.2 The Data Model Statement

The profiled data model is given in Table 3.9.

Table 3.9 MMS data model profile changes.

Class/Attribute | Baseline Constraints | Profile Notes
Min | Max | SPMax | Type
MembershipRecordSet | – | – | – | – |
membershipRecord | 0 | * | 100,000 | MembershipRecord |
MembershipRecord | – | – | – | – |
sourcedGUID | 1 | 1 | 1 | SourcedGUID |
refAgentInstance | 0 | 1 | 1 | Normalized String [1-4095] |
sourcedId | 1 | 1 | 1 | GUID |
membership | 1 | 1 | 1 | Membership |
Membership | – | – | – | This is a required field. |
collectionSourcedId | 1 | 1 | 1 | GUID |
membershipIdType | 1 | 1 | 1 | Int Vocab. [1] |
member | 1 | 1 | 1 | Member |
dataSource | 0 | 1 | 1 | GUID |
Member | – | – | – | This is a required field. |
personSourcedid | 1 | 1 | 1 | GUID |
role | 1 | * | 5 | Role |
Role | – | – | – | This is a required field. |
roleType | 1 | 1 | 1 | Ext Vocab. [2] |
subRole | 0 | 1 | 1 | Ext Vocab. [3] | The Teaching Assistant subroles to be reduced to TeachingAssistant subrole only;
timeFrame | 0 | 1 | 1 | Timeframe |
status | 0 | 1 | 1 | Int Vocab. [4] |
dateTime | 0 | 1 | 1 | DateTime: ISO8601 (YYYY-MM-DDTHH:MM:SS±TZ) |
creditHours | 0 | 1 | 1 | Integer: [1-9999] |
dataSource | 0 | 1 | 1 | GUID |
recordInfo | 0 | 1 | 1 | Metadata |
extension | 0 | 1 | 1 | IMSExtension |
TimeFrame | – | – | – | This is an optional field. |
begin | 0 | 1 | 1 | DateTime: ISO8601 (YYYY-MM-DDTHH:MM:SS) |
end | 0 | 1 | 1 | DateTime: ISO8601 (YYYY-MM-DDTHH:MM:SS) |
restrict | 0 | 1 | 1 | Boolean: {true=restriction is active; false=restriction is not active} |
adminPeriod | 0 | 1 | 1 | Text |
language | 1 | 1 | 1 | {As base type} |
textString | 1 | 1 | 1 | {As base type} |
Metadata | – | – | – | This is an optional field. |
metadataNameVocabulary | 1 | 1 | 1 | AnyURI |
metadataValueVocabulary | 1 | 1 | 1 | AnyURI |
metadataField | 1 | * | ? | ExtensionField |
IMSExtension | – | – | – | This is an optional field. |
extensionNameVocabulary | 1 | 1 | 1 | AnyURI |
extensionValueVocabulary | 1 | 1 | 1 | AnyURI |
extensionField | 1 | * | ? | ExtensionField |
ExtensionField | – | – | – | This is a required field. |
fieldName | 1 | 1 | 1 | Normalized String: [1-127] |
fieldType | 1 | 1 | 1 | Entry in ‘extensionVocabulary’ [5] |
fieldValue | 1 | 1 | 1 | Normalized String: [1-1023] |
GUID | – | – | – | Normalized String: [1-4095] |
GUIDSet | – | – | – | This is only used as a parameter. |
sourcedId | 0 | * | 250,000 | GUID |
QueryObject | – | – | – | Normalized String: [1-1023] This is only used as a parameter. | Not required.
SequenceIdentifier | – | – | – | DateTime (YYYY-MM-DDTHH:MM:SS.NNN) This is only used as a parameter. | Not required.
Text | – | – | – | – |
language | 1 | 1 | 1 | Ext Vocab: Default=’en-US’ [6] |
textString | 1 | 1 | 1 | String [1..4095] |

Data Model Notes:

[1] Internal vocabulary: ‘membershipIdType’ – set of permitted types of membership identifier;

[2] External VDEX vocabulary: ‘roleType’ – set of types permitted roles;

[3] External VDEX vocabulary: ‘subRole’ – set of permitted sub-roles. The Teaching Assistant subroles are to be reduced to the TeachingAssistant subrole only;

[4] Internal vocabulary: ‘status’ – set of permitted values for the status;

[5] External VDEX vocabulary: ‘fieldType’ – set of types permitted as extensions. NO changes for the Profile;

[6] External vocabulary: ‘language’ – use ISO639 as the source. NO changes for the Profile.

## 3.5 The Course Management Service Statement

### 3.5.1 The Service Statement

The set of operations that must be supported by ‘Sync Agent’ and ‘Ref Agent’ implementations of the CMS are summarized in Table 3.10.

Table 3.10 CMS Course Section core profile operations conformance statement.

Operation | Synch Agent | Ref Agent
createCourseSection |  |
createByProxyCourseSection |  |
createCourseSectionFromCourseSection |  |
deleteCourseSection | Implements | Calls
readCourseSection[9] |  |
readAllCourseSectionIds |  |
readCourseSectionIdsFromSavePoint |  |
readCourseSections |  |
readCourseSectionsFromSavePoint |  |
replaceCourseSection[10] | Implements | Calls
updateCourseSection |  |
updateCourseSectionStatus |  |
discoverCourseSectionIds |  |
changeCourseSectionIdentifier |  |

The summary list of status codes that can be returned by the different operations through the StatusInfo object is given in Table 3.11. The key to the entries is: ‘Y’ denotes the code may be returned by that operation. A blank entry means that the code cannot be returned by that operation.

Table 3.11 Permitted status codes for the CMS core profile operations.

CodeMinor Status Code | deleteCourseSection | replaceCourseSection
‘fullsuccess’ | Y | Y
‘createsucess’ |  | Y
‘overflowfail’ |  | Y
‘idallocinusefail’ |  | Y
‘invaliddata’ |  | Y
‘incompletedata’ |  | Y
‘partialdatastorage’ |  | Y
‘unknownobject’ | Y | Y
‘deletefailure’ | Y |
‘unknownextension’ |  | Y
‘unknownvocabulary’ |  | Y
‘unknownmdvocabulary’ |  | Y
‘targetisbusy’ | Y | Y
‘linkfailure’ | Y | Y
‘unauthorizedrequest’ | Y | Y
‘unsupportedLISoperation’ | Y | Y

NOTE: Both ‘Sync Agent’ and ‘Ref Agent’ implementations must respond with the ‘unsupportedLISoperation’ for all and any of the operations under the LIS which are not implemented.

### 3.5.2 The Data Model Statement

The profiled data model is given in Table 3.12.

Table 3.12 CMS data model profile changes.

Class/Attribute | Baseline Constraints | Profile Notes
Min | Max | SPMax | Type
CourseTemplateRecordSet | – | – | – | – | Not required.
courseTemplateRecord | 0 | * | 2,000 | CourseTemplateRecord | Not required.
CourseOfferingRecordSet | – | – | – | – | Not required.
courseOfferingRecord | 0 | * | 10,000 | CourseOfferingRecord | Not required.
CourseSectionRecordSet | – | – | – | – |
courseSectionRecord | 0 | * | 10,000 | CourseSectionRecord |
SectionAssociationRecordSet | – | – | – | – | Not required.
sectionAssociationRecord | 0 | * | 10,000 | SectionAssociationRecord | Not required.
CourseSectionRecord | – | – | – | – |
sourcedGUID | 1 | 1 | 1 | SourcedGUID |
refAgentInstance | 0 | 1 | 1 | Normalized String [1-4095] |
sourcedId | 1 | 1 | 1 | GUID |
courseSection | 1 | 1 | 1 | CourseSection |
CourseSection | – | – | – | – |
label | 0 | 1 | 1 | Text |
language | 1 | 1 | 1 | {As base type} |
textString | 1 | 1 | 1 | String: [1-255] |
title | 0 | 1 | 1 | Text |
language | 1 | 1 | 1 | {As base type} |
textString | 1 | 1 | 1 | String: [1-255] |
parentOfferingId | 0 | 1 | 1 | GUID |
catalogDescription | 0 | 1 | 1 | Description |
status | 0 | 1 | 1 | Ext Vocab. [1] |
defaultCredits | 0 | 1 | 1 | Text |
language | 1 | 1 | 1 | {As base type} |
textString | 1 | 1 | 1 | String: [1-2047] |
category | 0 | 1 | 1 | Text |
language | 1 | 1 | 1 | {As base type} |
textString | 1 | 1 | 1 | {As base type} |
academicSession | 0 | 1 | 1 | Text | academicSession
language | 1 | 1 | 1 | {As base type} | language
textString | 1 | 1 | 1 | Ext Vocab. [2] | textString
maxN umberofStudents | 0 | 1 | 1 | Integer: [1-999]. |
numberofStudents | 0 | 1 | 1 | Integer: [1-999]. |
org | 0 | 1 | 1 | Org |
timeFrame | 0 | 1 | 1 | TimeFrame |
enrollControl | 0 | 1 | 1 | EnrollControl |
location | 0 | 1 | 1 | Text |
language | 1 | 1 | 1 | {As base type} |
textString | 1 | 1 | 1 | String: [1-255] |
notes | 0 | 1 | 1 | Text |
language | 1 | 1 | 1 | {As base type} |
textString | 1 | 1 | 1 | String: [1-2047] |
meeting | 0 | 1 | 1 | Text |
language | 1 | 1 | 1 | {As base type} |
textString | 1 | 1 | 1 | String: [1-255] |
dataSource | 0 | 1 | 1 | GUID |
recordInfo | 0 | 1 | 1 | Metadata |
extension | 0 | 1 | 1 | IMSExtension |
Org | – | – | – | – |
orgName | 0 | 1 | 1 | Text |
language | 1 | 1 | 1 | {As base type} |
textString | 1 | 1 | 1 | String: [1-255] |
orgUnit | 0 | 1 | 1 | Text |
language | 1 | 1 | 1 | {As base type} |
textString | 1 | 1 | 1 | String: [1-255] |
type | 0 | 1 | 1 | Text |
language | 1 | 1 | 1 | {As base type} |
textString | 1 | 1 | 1 | String: [1-255] |
id | 0 | 1 | 1 | Text |
language | 1 | 1 | 1 | {As base type} |
textString | 1 | 1 | 1 | String: [1-255] |
EnrollControl | – | – | – | – |
enrollAccept | 0 | 1 | 1 | Boolean: {true=accept enrollment; false=do not accept enrollment} |
enrollAllowed | 0 | 1 | 1 | Boolean: {true=allow enrollment; false=do not allow enrollment} |
TimeFrame | – | – | – | – |
begin | 0 | 1 | 1 | DateTime: ISO8601 (YYYY-MM-DDTHH:MM:SS) |
end | 0 | 1 | 1 | DateTime: ISO8601 (YYYY-MM-DDTHH:MM:SS) |
restrict | 0 | 1 | 1 | Boolean: {true=restriction is active; false=restriction is not active} |
adminPeriod | 0 | 1 | 1 | Text |
language | 1 | 1 | 1 | {As base type} |
textString | 1 | 1 | 1 | {As base type} |
Description | – | – | – | – |
shortDescription | 1 | 1 | 1 | Text |
language | 1 | 1 | 1 | {As base type} |
textString | 1 | 1 | 1 | String [1-127] |
longDescription | 0 | 1 | 1 | Text |
language | 1 | 1 | 1 | {As base type} |
textString | 1 | 1 | 1 | String [1-2095] |
fullDescription | 0 | 1 | 1 | FullDescription |
FulDescription | – | – | – | – |
mediamode | 1 | 1 | 1 | Int Vocab. [3] |
contentRefType | 1 | 1 | 1 | Int Vocab. [4] |
mimeType | 1 | 1 | 1 | Normalized String: [1-63] |
descriptionText |  |  |  | Text |
language | 1 | 1 | 1 | {As base type} |
textString | 1 | 1 | 1 | String [1-1024] |
Metadata | – | – | – | – |
metadataNameVocabulary | 1 | 1 | 1 | AnyURI |
metadataValueVocabulary | 1 | 1 | 1 | AnyURI |
metadataField | 1 | * | ? | ExtensionField |
IMSExtension | – | – | – | – |
extensionNameVocabulary | 1 | 1 | 1 | AnyURI |
extensionValueVocabulary | 1 | 1 | 1 | AnyURI |
extensionField | 1 | * | ? | ExtensionField |
ExtensionField | – | – | – | – |
fieldName | 1 | 1 | 1 | Normalized String: [1-127] |
fieldType | 1 | 1 | 1 | Entry in ‘extensionVocabulary’ [5] |
fieldValue | 1 | 1 | 1 | Normalized String: [1-1023] |
GUID | – | – | – | Normalized String: [1-4095] |
GUIDSet | – | – | – | This is only used as a parameter. |
sourcedId | 0 | * | 250,000 | GUID |
QueryObject | – | – | – | Normalized String: [1-1023] This is only used as a parameter. | Not required.
SequenceIdentifier | – | – | – | DateTime (YYYY-MM-DDTHH:MM:SS.NNN) This is only used as a parameter. | Not required.
Text | – | – | – | – |
language | 1 | 1 | 1 | Ext Vocab: Default=’en-US’ [6] |
textString | 1 | 1 | 1 | String [1..4095] |

Data Model Notes:

[1] External VDEX vocabulary: ‘status’ – set of permitted values of the status field;

[2] External VDEX vocabulary: ‘academicSession’ – the set of permitted values of the academic session;

[3] Internal vocabulary: ‘mediaMode’ – set of permitted types of content reference;

[4] Internal vocabulary: ‘contentRefType’ – set of permitted types of content;

[5] External VDEX vocabulary: ‘fieldType’ – set of types permitted as extensions;

[6] External vocabulary: ‘language’ – use ISO639 as the source.

## 3.6 The Bulk Data Exchange Management Service Statement

### 3.6.1 The Service Statement

The set of operations that must be supported by ‘Sync Agent’ and ‘Ref Agent’ implementations of the BDEMS are summarized in Table 3.13.

Table 3.13 BDEMS core profile operations conformance statement.

Operation | Synch Agent | Ref Agent
announceBulkDataExchange | Implements | Calls
announceBulkDataExchangeFailure |  |
reportBulkDataExchange | Calls | Implements
requestBulkDataExchange |  |
ignoreBulkDataExchange | Calls | Implements
cancelBulkDataExchange |  |
HTTPSget | Calls | Implements

NOTE: (a) The HTTPSget operation is a direct binding to HTTP;

(b) The data models supported by each implementation are reflected in the status codes returned by the BDEMS.

The summary list of status codes that can be returned by the different operations through the StatusInfo object is given in Table 3.14. The key to the entries is: ‘Y’ denotes the code may be returned by that operation. A blank entry means that the code cannot be returned by that operation.

Table 3.14 Status codes for the BulkDataExchangeManager interface operations.

CodeMinor Status Code | announce | report | ignore
‘fullsuccess’ | Y | Y | Y
‘invalidtransactionid’ | Y | Y | Y
‘invaliddata’ | Y | Y |
‘incompletedata’ | Y | Y |
‘invalidurl’ | Y |  |
‘savepointerror’ |  |  |
‘savepointsyncerror’ |  |  |
‘unsupportedservices’ | Y |  |
‘unsupportedoperations’ | Y |  |
‘expireddate’ |  | Y |
‘targetisbusy’ | Y | Y | Y
‘unauthorizedrequest’ | Y | Y | Y
‘linkfailure’ | Y | Y | Y
‘unsupportedLISservice’ | Y | Y | Y
‘unsupportedLISoperation’ | Y | Y | Y
‘unknownservice’ | Y | Y | Y
‘unknownoperation’ | Y | Y | Y

NOTE: Both ‘Sync Agent’ and ‘Ref Agent’ implementations must respond with the ‘unsupportedLISoperation’ for all and any of the operations under the LIS which are not implemented.

### 3.6.2 The Data Model Statement

The profiled data model is given in Table 3.15.

Table 3.15 BDEMS data model profile changes.

Class/Attribute | Baseline Constraints | Profile Notes
Min | Max | SPMax |
BulkBlockManifest | – | – | – | – |
bulkBlockId | 1 | 1 | 1 | LUID |
expiryDate | 1 | 1 | 1 | DateTime: ISO8601 (YYYY-MM-DDTHH:MM:SS) |
bulkBlockDataFile | 1 | * | 5 | BulkBlockDataFile |
BulkBlockDataFile | – | – | – | – |
url | 1 | 1 | 1 | URL |
checkSum | 1 | 1 | 1 | Hexadecimal (128bit): ‘0000...0000’-‘FFFF....FFFF’. |
totalSize | 1 | 1 | 1 | Integer: [1-(232-1)] |
savePoint | 1 | 1 | 1 | DateTime (YYYY-MM-DDTHH:MM:SS.NNN) |
serviceSet | 1 | 1 | 1 | ServiceSet |
ServiceSet | – | – | – | – |
serviceRecord | 1 | * | 5 | ServiceRecord |
ServiceRecord | – | – | – | – |
serviceName | 1 | 1 | 1 | Normalized String: [1-255] |
interfaceName | 1 | 1 | 1 | Normalized String: [1-255] |
operationSet | 1 | 1 | 1 | OperationSet |
OperationSet | – | – | – | – |
operationName | 1 | * | 5000 | Normalized String: [1-255] |
BulkBlockReport | – | – | – | – |
bulkBlockManifestIdRef | 1 | 1 | 1 | LUID |
transactionReport | 0 | * | 1000 | TransactionReport |
TransactionReport | – | – | – | – |
transactionOpIdentifierRef | 1 | 1 | 1 | GUID |
serviceName | 1 | 1 | 1 | Normalized String: [1-255] |
transactionFailStatus | 1 | 1 | 1 | Ext Vocab. [1] |
BulkDataRecord | – | – | – | – |
transactionRecord | 1 | * | 100,000 | TransactionRecord |
TransactionRecord | – | – | – | – |
transactionOpIdentifier | 1 | 1 | 1 | LUID |
serviceName | 1 | 1 | 1 | Int Vocab. [2] |
interfaceName | 1 | 1 | 1 | Int Vocab. [3] |
operationName | 1 | 1 | 1 | Normalized String: [1-255] |
parameterSet | 1 | 1 | 1 | ParameterSet |
ParameterSet | – | – | – | – |
parameterRecord | 1 | * | 5 | ParameterRecord |
ParameterRecord | – | – | – | – |
parameterInvoc | 1 | 1 | 1 | Int Vocab. [4] |
parameterName | 1 | 1 | 1 | Normalized String: [1-255] |
parameterType | 1 | 1 | 1 | Ext Vocab. [5] |
parameterValue | 1 | 1 | 1 | ParameterValue |
ParameterValue | – | – | – | – |
guid [XOR1] | 0 | 1 | 1 | GUID |
guidSet [XOR1] | 0 | 1 | 1 | GUIDSet |
queryObject [XOR1] | 0 | 1 | 1 | QueryObject |
sequenceIdentifier [XOR1] | 0 | 1 | 1 | SequenceIdentifier |
text [XOR1] | 0 | 1 | 1 | Text |
url [XOR1] | 0 | 1 | 1 | URL |
personRecord [XOR1] | 0 | 1 | 1 | PersonRecord |
personCoreRecord [XOR1] | 0 | 1 | 1 | PersonCoreRecord |
personRecordSet [XOR1] | 0 | 1 | 1 | PersonRecordSet |
groupRecord [XOR1] | 0 | 1 | 1 | GroupRecord |
membershipRecord [XOR1] | 0 | 1 | 1 | MembershipRecord |
membershipRecordSet [XOR1] | 0 | 1 | 1 | MembershipRecordSet |
courseTemplate [XOR1] | 0 | 1 | 1 | CourseTemplate |
courseTemplateSet [XOR1] | 0 | 1 | 1 | CourseTemplateSet |
courseOffering [XOR1] | 0 | 1 | 1 | CourseOffering |
courseOfferingSet [XOR1] | 0 | 1 | 1 | CourseOfferingSet |
courseSection [XOR1] | 0 | 1 | 1 | CourseSection |
courseSectionSet [XOR1] | 0 | 1 | 1 | CourseSectionSet |
sectionAssociation [XOR1] | 0 | 1 | 1 | SectionAssociation |
sectionAssociationSet [XOR1] | 0 | 1 | 1 | SectionAssociationSet |
resultRecord [XOR1] | 0 | 1 | 1 | ResultRecord |
resultRecordSet [XOR1] | 0 | 1 | 1 | ResultRecordSet |
resultValueRecord [XOR1] | 0 | 1 | 1 | ResultValueRecord |
resultValueRecordSet [XOR1] | 0 | 1 | 1 | ResultValueRecordSet |
lineItemRecord [XOR1] | 0 | 1 | 1 | LineItemRecord |
lineItemR ecordSet [XOR1] | 0 | 1 | 1 | LineItemR ecordSet |
lineItemType [XOR1] | 0 | 1 | 1 | LineItemType |
membershipIdType [XOR1] | 0 | 1 | 1 | MembershipIdType |
relationship [XOR1] | 0 | 1 | 1 | relationship |
role [XOR1] | 0 | 1 | 1 | Role |
resultStatus [XOR1] | 0 | 1 | 1 | ResultStatus |
status [XOR1] | 0 | 1 | 1 | Status |
FailureObject | – | – | – |  |
failureCode | 1 | 1 | 1 | Ext Vocab. [6] |
failureDescription | 1 | 1 | 1 | Normalized String: [1-255] |
FilterObject | – | – | – |  |
filterRule | 1 | * | 2 | FilterRule |
FilterRule | – | – | – |  |
filterType | 1 | 1 | 1 | Int Vocab. [7] |
filterValue | 1 | 1 | 1 | Normalized String: [1-31] |
LUID | – | – | – | Normalized String: [1-4095] |
URL | – | – | – | Normalized String: [1-4095] |

Data Model Notes:

[1] External VDEX vocabulary: ‘transactionsFailStatus’ – set of permitted as failure status codes for a transaction request;

[2] Internal vocabulary: ‘serviceName’ – set of permitted service names;

[3] Internal vocabulary: ‘interfaceName’ – set of permitted interface names;

[4] Internal vocabulary: ‘parameterInvoc’ – set of permitted set of parameter kinds;

[5] External VDEX vocabulary: ‘parameterType’ – set of permitted types of parameter;

[6] External VDEX vocabulary: ‘fileValue’ – the set of permitted values of data object to be supplied;

[7] Internal vocabulary: ‘filterType’ – enumerated as { object | savepoint }.

# 4 Information Models of the Profile Additions

## 4.1 The Final Grade Addition Profile Statement

It should be noted that this Addition Profile can be used for to exchange a broad range of outcomes information i.e., than just ‘final grade’ information.

### 4.1.1 The Service Statements

The Final Grade Addition Profile is based the required functionality supplied through the OMS. The set of operations that must be supported by ‘Sync Agent’ and ‘Ref Agent’ implementations of the Final Grade Addition profile of the OMS are summarized in Tables 4.1 (for LineItem) and 4.3 (for Result). There is no requirement to support the ResultValue interface in the OMS.

Table 4.1 OMS LineItem grade addition profile operations conformance statement.

Operation | Synch Agent | Ref Agent
createLineItem |  |
createByProxyLineItem |  |
deleteLineItem | Implements | Calls
readLineItem |  |
readAllLineItemIds |  |
readLineItemIdsWithLineItemType |  |
readLineItemIdsForPerson |  |
readLineItemIdsForCourseOffering |  |
readLineItemIdsForCourseSection |  |
readLineItemIdsForCourseSectionWithLineItemType |  |
readLineItemIdsWithLineItemType |  |
readLineItemIdsFromSavePoint |  |
readLineItems |  |
readLineItemsFromSavePoint |  |
updateLineItem |  |
replaceLineItem | Implements | Calls
discoverLineItemIds |  |
changeLineItemIdentifier |  |

See Appendix A2 below for the associated implementation notes.
The summary list of status codes that can be returned by the different operations through the StatusInfo object is given in Table 4.2. The key to the entries is: ‘Y’ denotes the code may be returned by that operation. A blank entry means that the code cannot be returned by that operation.

Table 4.2 Permitted status codes for the LineItem grade addition profile operations.

CodeMinor Status Code | deleteLineItem | replaceLineItem
‘fullsuccess’ | Y | Y
‘createsuccess’ |  | Y
‘overflowfail’ |  | Y
‘invaliddata’ |  | Y
‘incompletedata’ |  | Y
‘partialdatastorage’ |  | Y
‘unknownobject’ | Y |
‘deletefailure’ | Y |
‘unknownextension’ |  | Y
‘targetisbusy’ | Y | Y
‘linkfailure’ | Y | Y
‘unauthorizedrequest’ | Y | Y
‘unsupportedLISoperation’ | Y | Y

###

NOTE: Both ‘Sync Agent’ and ‘Ref Agent’ implementations must respond with the ‘unsupportedLISoperation’ for all and any of the operations under the LIS which are not implemented.

Table 4.3 OMS Result grade addition profile operations conformance statement.

Operation | Synch Agent | Ref Agent
createResult |  |
createByProxyResult |  |
deleteResult | Implements | Calls
readResult |  |
readAllResultIds |  |
readResultIdsForPerson |  |
readResultIdsForLineItem |  |
readResultIdsForCourseOffering |  |
readResultIdsForCourseSection |  |
readResultIdsForCourseSectionWithStatus |  |
readResultIdsForLineItemWithLineItemType | Implements | Calls
readResultIdsFromSavePoint |  |
readResults |  |
readResultsFromSavePoint |  |
updateResult |  |
replaceResult | Implements | Calls
replaceResultsForLineItem |  |
discoverResultIds |  |
changeResultIdentifier |  |

See Appendix A2 below for the associated implementation notes.

The summary list of status codes that can be returned by the different operations through the StatusInfo object is given in Table 4.4. The key to the entries is: ‘Y’ denotes the code may be returned by that operation. A blank entry means that the code cannot be returned by that operation.

Table 4.4 Permitted status codes for the Result grade addition profile operations.

CodeMinor Status Code | deleteResult | readResultIdsForLineItemWithLineItemType | replaceResult
‘fullsuccess’ | Y |  | Y
‘createsuccess’ |  |  | Y
‘nosourcedids’ |  | Y |
‘overflowfail’ |  |  | Y
‘invaliddata’ |  | Y | Y
‘targetreadfailure’ |  | Y |
‘invalidlineitemtype’ |  | Y |
‘incompletedata’ |  |  | Y
‘partialdatastorage’ |  |  | Y
‘unknownobject’ | Y | Y |
‘deletefailure’ | Y |  |
‘unknownextension’ |  |  | Y
‘targetisbusy’ | Y |  | Y
‘linkfailure’ | Y |  | Y
‘unauthorizedrequest’ | Y |  | Y
‘unsupportedLISoperation’ | Y |  | Y

###

NOTE: Both ‘Sync Agent’ and ‘Ref Agent’ implementations must respond with the ‘unsupportedLISoperation’ for all and any of the operations under the LIS which are not implemented.

### 4.1.2 The Data Model Statements

The profiled data model is given in Table 4.5.

Table 4.5 OMS data model grade addition profile changes.

Class/Attribute | Baseline Constraints | Profile Notes
Min | Max | SPMax | Type
LineItemR ecordSet | – | – | – | – |
lineItemRecord | 0 | * | 1,000 | LineItemRecord |
ResultRecordSet | – | – | – | – |
resultRecord | 0 | * | 1,000 | ResultRecord |
ResultValeRecordSet | – | – | – | – |
resultValueRecord | 0 | * | 1,000 | ResultValueRecord |
LineItemRecord | – | – | – | – |
sourcedGUID | 1 | 1 | 1 | SourcedGUID |
refAgentInstance | 0 | 1 | 1 | Normalized String [1-4095] |
sourcedId | 1 | 1 | 1 | GUID |
lineItem | 1 | 1 | 1 | LineItem |
ResultRecord | – | – | – | – |
sourcedGUID | 1 | 1 | 1 | SourcedGUID |
refAgentInstance | 0 | 1 | 1 | Normalized String [1-4095] |
sourcedId | 1 | 1 | 1 | GUID |
result | 1 | 1 | 1 | Result |
ResultValueRecord | – | – | – | – | Prohibited.
sourcedGUID | 1 | 1 | 0 | SourcedGUID |
refAgentInstance | 0 | 1 | 0 | Normalized String [1-4095] |
sourcedId | 1 | 1 | 0 | GUID |
resultValue | 1 | 1 | 0 | ResultValue |
LineItem | – | – | – | – |
context | 0 | 1 | 1 | Context |
lineItemType | 0 | 1 | 1 | LineItemType |
label | 0 | 1 | 1 | NormalizedString |
resultValueSourcedId | 0 | 1 | 0 | GUID | Prohibited.
resultValue | 0 | 1 | 1 | ResultValue |
lineItemSettings | 0 | 1 | 1 | PropertySet | Not required.
outcomesHandlerSourcedId | 0 | 1 | 1 | AnyURI | Not required.
dataSource | 0 | 1 | 1 | GUID |
recordInfo | 0 | 1 | 1 | Metadata |
extension | 0 | 1 | 1 | IMSExtension |
Context |  |  |  |  |
contextIdentifier | 1 | 1 | 1 | GUID |
contextType | 1 | 1 | 1 | AnyURI |
LineItemType |  |  |  |  |
lineItemTypeVocabulary | 1 | 1 | 1 | AnyURI |
lineItemTypeValue | 1 | 1 | 1 | Text |
language | 1 | 1 | 1 | {As base type} |
textString | 1 | 1 | 1 | Ext Vocab. [1] |
resourceHandlerId | 0 | 1 | 1 | AnyURI | Not required.
localeKey | 0 | 1 | 1 | NormalizedString | Not required.
defaultDisplayName | 0 | 1 | 1 | NormalizedString | Not required.
Result | – | – | – | – |
statusofResult | 0 | 1 | 1 | ResultStatus |
lineItemSourcedId | 1 | 1 | 1 | GUID |
personSourcedId | 0 | 1 | 1 | GUID |
date | 0 | 1 | 1 | DateTime: ISO8601 (YYYY-MM-DDTHH:MM:SS±TZ) |
resultValueSourcedId | 0 | 1 | 0 | GUID | Prohibited.
resultValue | 0 | 1 | 1 | ResultValue |
resultScore | 0 | 1 | 1 | Text |
language | 1 | 1 | 1 | {As base type} |
textString | 1 | 1 | 1 | String: [1-127] |
resultMessageSettings | 0 | 1 | 1 | PropertySet | Not required.
dataSource | 0 | 1 | 1 | GUID |
recordInfo | 0 | 1 | 1 | Metadata |
extension | 0 | 1 | 1 | IMSExtension |
ResultStatus | – | – | – | – |
resultStatusVocabulary | 1 | 1 | 1 | AnyURI |
statusofResult | 0 | 1 | 1 | Text |
language | 1 | 1 | 1 | {As base type} |
textString | 1 | 1 | 1 | Ext Vocab. [2] | Only the entry ‘Final’ is required.
localeKey | 0 | 1 | 1 | NormalizedString | Not required.
defaultDisplayName | 0 | 1 | 1 | NormalizedString | Not required.
ResultValue | – | – | – | – |
label | 0 | 1 | 1 | Text |
language | 1 | 1 | 1 | {As base type} |
textString | 1 | 1 | 1 | String: [1-63] |
valueList [XOR1] | 0 | 1 | 1 | ValueList |
valueRange [XOR1] | 0 | 1 | 1 | ValueRange |
dataSource | 0 | 1 | 1 | GUID |
recordInfo | 0 | 1 | 1 | Metadata |
extension | 0 | 1 | 1 | IMSExtension |
ValueList | – | – | – | – |
orderValue | 1 | * | 5 | OrderedValue |
ValueRange | – | – | – | – |
min | 0 | 1 | 1 | Decimal: ±32676.00 |
max | 0 | 1 | 1 | Decimal: ±32676.00 |
OrderedValue | – | – | – | – |
ordinal | 0 | 1 | 1 | Integer: ±216-1 |
grade | 0 | 1 | 1 | Text |
language | 1 | 1 | 1 | {As base type} |
textString | 1 | 1 | 1 | String: [1-15] |
valueRange | 0 | 1 | 1 | ValueRange |
Metadata | – | – | – | – |
metadataNameVocabulary | 1 | 1 | 1 | AnyURI |
metadataValueVocabulary | 1 | 1 | 1 | AnyURI |
metadataField | 1 | * | ? | ExtensionField |
IMSExtension | – | – | – | – |
metadataNameVocabulary | 1 | 1 | 1 | AnyURI |
metadataValueVocabulary | 1 | 1 | 1 | AnyURI |
extensionField | 1 | * | ? | ExtensionField |
ExtensionField | – | – | – | – |
fieldName | 1 | 1 | 1 | Normalized String: [1-127] |
fieldType | 1 | 1 | 1 | Entry in ‘extensionVocabulary’ [3] |
fieldValue | 1 | 1 | 1 | Normalized String: [1-1023] |
GUID | – | – | – | Normalized String: [1-4095] |
GUIDSet | – | – | – | This is only used as a parameter. |
sourcedId | 0 | * | 250,000 | GUID |
QueryObject | – | – | – | Normalized String: [1-1023] This is only used as a parameter. | Not required.
SequenceIdentifier | – | – | – | DateTime (YYYY-MM-DDTHH:MM:SS.NNN) This is only used as a parameter. | Not required.
Text | – | – | – | – |
language | 1 | 1 | 1 | Ext Vocab: Default=’en-US’ [4] |
textString | 1 | 1 | 1 | String [1..4095] |

Data Model Notes:

[1] External VDEX vocabulary: ‘lineItemType’ – set of permitted as lineItem types;

[2] External VDEX vocabulary: ‘statusofResult’ – set of permitted value for the status of a result. Only the entry ‘Final’ is required;

[3] External VDEX vocabulary: ‘fieldType’ – set of types permitted as extensions;

[4] External vocabulary: ‘language’ – use ISO639 as the source.

## 4.2 The Combined Sections Addition Profile Statement

### 4.2.1 The Service Statements

The Combined Sections Addition Profile is based upon more detailed functionality supplied through the CMS. The set of operations that must be supported by ‘Sync Agent’ and ‘Ref Agent’ implementations of the Combined Sections Addition Profile of the CMS are summarized in Tables 4.6 (for CourseSection) and 4.8 for (SectionAssociation).

Table 4.6 CMS Section combined sections addition profile operations conformance statement.

Operation | Synch Agent | Ref Agent
createCourseSection |  |
createByProxyCourseSection |  |
createCourseSectionFromCourseSection |  |
deleteCourseSection | Implements | Calls
readCourseSection |  |
readAllCourseSectionIds |  |
readCourseSectionIdsFromSavePoint |  |
readCourseSections |  |
readCourseSectionsFromSavePoint |  |
replaceCourseSection | Implements | Calls
updateCourseSection |  |
updateCourseSectionStatus |  |
discoverCourseSectionIds |  |
changeCourseSectionIdentifier |  |

See Appendix A3 below for the associated implementation notes.

The summary list of status codes that can be returned by the different operations through the StatusInfo object is given in Table 47. The key to the entries is: ‘Y’ denotes the code may be returned by that operation. A blank entry means that the code cannot be returned by that operation.

Table 4.7 Permitted status codes for the Section combined section addition profile operations.

CodeMinor Status Code | deleteCourseSection | replaceCourseSection
‘fullsuccess’ | Y | Y
‘createsuccess’ |  | Y
‘overflowfail’ |  | Y
‘invaliddata’ |  | Y
‘incompletedata’ |  | Y
‘partialdatastorage’ |  | Y
‘unknownobject’ | Y |
‘deletefailure’ | Y |
‘unknownextension’ |  | Y
‘targetisbusy’ | Y | Y
‘linkfailure’ | Y | Y
‘unauthorizedrequest’ | Y | Y
‘unsupportedLISoperation’ | Y | Y

###

NOTE: Both ‘Sync Agent’ and ‘Ref Agent’ implementations must respond with the ‘unsupportedLISoperation’ for all and any of the operations under the LIS which are not implemented.

Table 4.8 CMS Association combined sections addition profile operations conformance statement.

Operation | Synch Agent | Ref Agent
createSectionAssociation |  |
createByProxySectionAssociation |  |
deleteSectionAssociation | Implements | Calls
readSectionAssociation |  |
readAllSectionAssociationIds |  |
readSectionAssociationIdsFromSavePoint |  |
readSectionAssociations |  |
readSectionAssociationsFromSavePoint |  |
addCourseSectionId |  |
removeCourseSectionId |  |
replaceSectionAssociation | Implements | Calls
updateSectionAssociation |  |
discoverSectionAssociationIds |  |
changeSectionAssociationIdentifier |  |

See Appendix A3 below for the associated implementation notes.

The summary list of status codes that can be returned by the different operations through the StatusInfo object is given in Table 4.9. The key to the entries is: ‘Y’ denotes the code may be returned by that operation. A blank entry means that the code cannot be returned by that operation.

Table 4.9 Permitted status codes for the Association combined section addition profile operations.

CodeMinor Status Code | deleteSectionAssociation | replaceSectionAssociations
‘fullsuccess’ | Y | Y
‘createsuccess’ |  | Y
‘overflowfail’ |  | Y
‘invaliddata’ |  | Y
‘incompletedata’ |  | Y
‘partialdatastorage’ |  | Y
‘unknownobject’ | Y |
‘deletefailure’ | Y |
‘unknownextension’ |  | Y
‘targetisbusy’ | Y | Y
‘linkfailure’ | Y | Y
‘unauthorizedrequest’ | Y | Y
‘unsupportedLISoperation’ | Y | Y

###

NOTE: Both ‘Sync Agent’ and ‘Ref Agent’ implementations must respond with the ‘unsupportedLISoperation’ for all and any of the operations under the LIS which are not implemented.

### 4.2.2 The Data Model Statements

The profiled data model is given in Table 4.10.

Table 4.10 CMS combined sections data model addition profile changes.

Class/Attribute | Baseline Constraints | Profile Notes
Min | Max | SPMax | Type
CourseTemplateRecordSet | – | – | – | – | Not required.
courseTemplateRecord | 0 | * | 2,000 | CourseTemplateRecord | Not required.
CourseOfferingRecordSet | – | – | – | – | Not required.
courseOfferingRecord | 0 | * | 10,000 | CourseOfferingRecord | Not required.
CourseSectionRecordSet | – | – | – | – |
courseSectionRecord | 0 | * | 10,000 | CourseSectionRecord |
SectionAssociationRecordSet | – | – | – | – |
sectionAssociationRecord | 0 | * | 10,000 | SectionAssociationRecord |
CourseSectionRecord | – | – | – | – |
sourcedGUID | 1 | 1 | 1 | SourcedGUID |
refAgentInstance | 0 | 1 | 1 | Normalized String [1-4095] |
sourcedId | 1 | 1 | 1 | GUID |
courseSection | 1 | 1 | 1 | CourseSection |
SectionAssociationRecord | – | – | – | – |
sourcedGUID | 1 | 1 | 1 | SourcedGUID |
refAgentInstance | 0 | 1 | 1 | Normalized String [1-4095] |
sourcedId | 1 | 1 | 1 | GUID |
sectionAssociation | 1 | 1 | 1 | SectionAssociation |
CourseSection | – | – | – | – |
label | 0 | 1 | 1 | Text |
language | 1 | 1 | 1 | {As base type} |
textString | 1 | 1 | 1 | String: [1-255] |
title | 0 | 1 | 1 | Text |
language | 1 | 1 | 1 | {As base type} |
textString | 1 | 1 | 1 | String: [1-255] |
parentOfferingId | 0 | 1 | 1 | GUID |
catalogDescription | 0 | 1 | 1 | Description |
status | 0 | 1 | 1 | Ext Vocab. [1] |
defaultCredits | 0 | 1 | 1 | Text |
language | 1 | 1 | 1 | {As base type} |
textString | 1 | 1 | 1 | String: [1-2047] |
category | 0 | 1 | 1 | Text |
language | 1 | 1 | 1 | {As base type} |
textString | 1 | 1 | 1 | {As base type} |
academicSession | 0 | 1 | 1 | Text |
language | 1 | 1 | 1 | {As base type} |
textString | 1 | 1 | 1 | Ext Vocab. [2] |
maxN umberofStudents | 0 | 1 | 1 | Integer: [1-999]. |
numberofStudents | 0 | 1 | 1 | Integer: [1-999]. |
org | 0 | 1 | 1 | Org |
timeFrame | 0 | 1 | 1 | TimeFrame |
enrollControl | 0 | 1 | 1 | EnrollControl |
location | 0 | 1 | 1 | Text |
language | 1 | 1 | 1 | {As base type} |
textString | 1 | 1 | 1 | String: [1-255] |
notes | 0 | 1 | 1 | Text |
language | 1 | 1 | 1 | {As base type} |
textString | 1 | 1 | 1 | String: [1-2047] |
meeting | 0 | 1 | 1 | Text |
language | 1 | 1 | 1 | {As base type} |
textString | 1 | 1 | 1 | String: [1-255] |
dataSource | 0 | 1 | 1 | GUID |
recordInfo | 0 | 1 | 1 | Metadata |
extension | 0 | 1 | 1 | IMSExtension |
SectionAssociation | – | – | – | – |
label | 0 | 1 | 1 | Text |
language | 1 | 1 | 1 | {As base type} |
textString | 1 | 1 | 1 | String: [1-255] |
title | 0 | 1 | 1 | Text |
language | 1 | 1 | 1 | {As base type} |
textString | 1 | 1 | 1 | String: [1-255] |
status | 0 | 1 | 1 | Ext Vocab. [1] |
courseSectionIdList | 0 | 1 | 1 | ListofCourseSectionIds |
dataSource | 0 | 1 | 1 | GUID |
recordInfo | 0 | 1 | 1 | Metadata |
extension | 0 | 1 | 1 | IMSExtension |
ListofCourseSectionIds | – | – | – | – |
courseSectionId | 1 | * | 100 | GUID |
Org | – | – | – | – |
orgName | 0 | 1 | 1 | Text |
language | 1 | 1 | 1 | {As base type} |
textString | 1 | 1 | 1 | String: [1-255] |
orgUnit | 0 | 1 | 1 | Text |
language | 1 | 1 | 1 | {As base type} |
textString | 1 | 1 | 1 | String: [1-255] |
type | 0 | 1 | 1 | Text |
language | 1 | 1 | 1 | {As base type} |
textString | 1 | 1 | 1 | String: [1-255] |
id | 0 | 1 | 1 | Text |
language | 1 | 1 | 1 | {As base type} |
textString | 1 | 1 | 1 | String: [1-255] |
EnrollControl | – | – | – | – |
enrollAccept | 0 | 1 | 1 | Boolean: {true=accept enrollment; false=do not accept enrollment} |
enrollAllowed | 0 | 1 | 1 | Boolean: {true=allow enrollment; false=do not allow enrollment} |
TimeFrame | – | – | – | – |
begin | 0 | 1 | 1 | DateTime: ISO8601 (YYYY-MM-DDTHH:MM:SS) |
end | 0 | 1 | 1 | DateTime: ISO8601 (YYYY-MM-DDTHH:MM:SS) |
restrict | 0 | 1 | 1 | Boolean: {true=restriction is active; false=restriction is not active} |
adminPeriod | 0 | 1 | 1 | Text |
language | 1 | 1 | 1 | {As base type} |
textString | 1 | 1 | 1 | {As base type} |
Description | – | – | – | – |
shortDescription | 1 | 1 | 1 | Text |
language | 1 | 1 | 1 | {As base type} |
textString | 1 | 1 | 1 | String [1-127] |
longDescription | 0 | 1 | 1 | Text |
language | 1 | 1 | 1 | {As base type} |
textString | 1 | 1 | 1 | String [1-2095] |
fullDescription | 0 | 1 | 1 | FullDescription |
FulDescription | – | – | – | – |
mediamode | 1 | 1 | 1 | Int Vocab. [3] |
contentRefType | 1 | 1 | 1 | Int Vocab. [4] |
mimeType | 1 | 1 | 1 | Normalized String: [1-63] |
descriptionText |  |  |  | Text |
language | 1 | 1 | 1 | {As base type} |
textString | 1 | 1 | 1 | String [1-1024] |
Metadata | – | – | – | – |
metadataNameVocabulary | 1 | 1 | 1 | AnyURI |
metadataValueVocabulary | 1 | 1 | 1 | AnyURI |
metadataField | 1 | * | ? | ExtensionField |
IMSExtension | – | – | – | – |
extensionNameVocabulary | 1 | 1 | 1 | AnyURI |
extensionValueVocabulary | 1 | 1 | 1 | AnyURI |
extensionField | 1 | * | ? | ExtensionField |
ExtensionField | – | – | – | – |
fieldName | 1 | 1 | 1 | Normalized String: [1-127] |
fieldType | 1 | 1 | 1 | Entry in ‘extensionVocabulary’ [6] |
fieldValue | 1 | 1 | 1 | Normalized String: [1-1023] |
GUID | – | – | – | Normalized String: [1-4095] |
GUIDSet | – | – | – | This is only used as a parameter. | Not required.
sourcedId | 0 | * | 250,000 | GUID | Not required.
QueryObject | – | – | – | Normalized String: [1-1023] This is only used as a parameter. | Not required.
SequenceIdentifier | – | – | – | DateTime (YYYY-MM-DDTHH:MM:SS.NNN) This is only used as a parameter. | Not required.
Text | – | – | – | – |
language | 1 | 1 | 1 | Ext Vocab: Default=’en-US’ [8] |
textString | 1 | 1 | 1 | String [1..4095] |

Data Model Notes:

[1] External VDEX vocabulary: ‘status’ – set of permitted values of the status field;

[2] External VDEX vocabulary: ‘academicSession’ – the set of permitted values of the academic session;

[3] Internal vocabulary: ‘mediaMode’ – set of permitted types of content reference;

[4] Internal vocabulary: ‘contentRefType’ – set of permitted types of content;

[5] External VDEX vocabulary: ‘fieldType’ – set of types permitted as extensions;

[6] External vocabulary: ‘language’ – use ISO639 as the source.

## 4.3 The Full Course Hierarchy Addition Profile Statement

### 4.3.1 The Service Statements

The Full Course Hierarchy Addition Profile is based upon more detailed functionality supplied through the CMS. The set of operations that must be supported by ‘Sync Agent’ and ‘Ref Agent’ implementations of the Full Course Hierarchy Profile of the CMS are summarized in Tables 4.11 (for CourseTemplate), 4.13 (for CourseOffering), 4.15 (for CourseSection) and 4.17 for (SectionAssociation).

Table 4.11 CMS Template full course hierarchy addition profile operations conformance statement.

Operation | Synch Agent | Ref Agent
createCourseTemplate |  |
createByProxyCourseTemplate |  |
deleteCourseTemplate | Implements | Calls
readCourseTemplate |  |
readAllCourseTemplateIds |  |
readCourseOfferingIdsForCourseTemplate |  |
readCourseTemplateIdsFromSavePoint |  |
readCourseTemplates |  |
readCourseTemplatesFromSavePoint |  |
updateCourseTemplate |  |
replaceCourseTemplate | Implements | Calls
discoverCourseTemplateIds |  |
changeCourseTemplateIdentifier |  |

See Appendix A4 below for the associated implementation notes.

The summary list of status codes that can be returned by the different operations through the StatusInfo object is given in Table 4.12. The key to the entries is: ‘Y’ denotes the code may be returned by that operation. A blank entry means that the code cannot be returned by that operation.

Table 4.12 Permitted status codes for the Template full course hierarchy addition profile operations.

CodeMinor Status Code | deleteCourseTemplate | replaceCourseTemplate
‘fullsuccess’ | Y | Y
‘createsuccess’ |  | Y
‘invaliddata’ |  | Y
‘incompletedata’ |  | Y
‘partialdatastorage’ |  | Y
‘unknownobject’ | Y |
‘deletefailure’ | Y |
‘unknownextension’ |  | Y
‘targetisbusy’ | Y | Y
‘linkfailure’ | Y | Y
‘unauthorizedrequest’ | Y | Y
‘unsupportedLISoperation’ | Y | Y

###

NOTE: Both ‘Sync Agent’ and ‘Ref Agent’ implementations must respond with the ‘unsupportedLISoperation’ for all and any of the operations under the LIS which are not implemented.

Table 4.13 CMS Offering full course hierarchy addition profile operations conformance statement.

Operation | Synch Agent | Ref Agent
createCourseOffering |  |
createByProxyCourseOffering |  |
createCourseOfferingFromCourseOffering |  |
deleteCourseOffering | Implements | Calls
readCourseOffering |  |
readAllCourseOfferingIds |  |
readAllActiveCourseOfferingIdsForAcademicSession |  |
readCourseSectionIdsForCourseOffering |  |
readCourseOfferingIdsFromSavePoint |  |
readCourseOfferings |  |
readCourseOfferingsFromSavePoint |  |
replaceCourseOffering | Implements | Calls
updateCourseOffering |  |
updateCourseOfferingStatus |  |
discoverCourseOfferingIds |  |
changeCourseOfferingIdentifier |  |

See Appendix A4 below for the associated implementation notes.

The summary list of status codes that can be returned by the different operations through the StatusInfo object is given in Table 4.14. The key to the entries is: ‘Y’ denotes the code may be returned by that operation. A blank entry means that the code cannot be returned by that operation.

Table 4.14 Permitted status codes for the Offering full course hierarchy addition profile operations.

CodeMinor Status Code | deleteCourseOffering | replaceCourseOffering
‘fullsuccess’ | Y | Y
‘createsuccess’ |  | Y
‘invaliddata’ |  | Y
‘incompletedata’ |  | Y
‘partialdatastorage’ |  | Y
‘unknownobject’ | Y |
‘deletefailure’ | Y |
‘targetreadfailure’ |  |
‘unknownextension’ |  | Y
‘targetisbusy’ | Y | Y
‘linkfailure’ | Y | Y
‘unauthorizedrequest’ | Y | Y
‘unsupportedLISoperation’ | Y | Y

###

NOTE: Both ‘Sync Agent’ and ‘Ref Agent’ implementations must respond with the ‘unsupportedLISoperation’ for all and any of the operations under the LIS which are not implemented.

Table 4.15 CMS Section full course hierarchy addition profile operations conformance statement.

Operation | Synch Agent | Ref Agent
createCourseSection | Implements | Calls
createByProxyCourseSection |  |
createCourseSectionFromCourseSection |  |
deleteCourseSection | Implements | Calls
readCourseSection | Calls | Implements
readAllCourseSectionIds |  |
readCourseSectionIdsFromSavePoint |  |
readCourseSections |  | Implements
readCourseSectionsFromSavePoint |  |
replaceCourseSection | Implements | Calls
updateCourseSection |  |
updateCourseSectionStatus |  |
discoverCourseSectionIds |  |
changeCourseSectionIdentifier |  |

See Appendix A4 below for the associated implementation notes.

The summary list of status codes that can be returned by the different operations through the StatusInfo object is given in Table 4.16. The key to the entries is: ‘Y’ denotes the code may be returned by that operation. A blank entry means that the code cannot be returned by that operation.

Table 4.16 Permitted status codes for the Section full course hierarchy addition profile operations.

CodeMinor Status Code | deleteCourseSection | replaceCourseSection
‘fullsuccess’ | Y | Y
‘createsuccess’ |  | Y
‘invaliddata’ |  | Y
‘incompletedata’ |  | Y
‘partialdatastorage’ |  | Y
‘partialreadfail’ |  |
‘unknownobject’ | Y |
‘deletefailure’ | Y |
‘unknownextension’ |  | Y
‘targetisbusy’ | Y | Y
‘linkfailure’ | Y | Y
‘unauthorizedrequest’ | Y | Y
‘unsupportedLISoperation’ | Y | Y

###

NOTE: Both ‘Sync Agent’ and ‘Ref Agent’ implementations must respond with the ‘unsupportedLISoperation’ for all and any of the operations under the LIS which are not implemented.

Table 4.17 CMS Association full course hierarchy addition profile operations conformance statement.

Operation | Synch Agent | Ref Agent
createSectionAssociation |  |
createByProxySectionAssociation |  |
deleteSectionAssociation | Implements | Calls
readSectionAssociation |  |
readAllSectionAssociationIds |  |
readSectionAssociationIdsFromSavePoint |  |
readSectionAssociations |  |
readSectionAssociationsFromSavePoint |  |
addCourseSection |  |
removeCourseSection |  |
replaceSectionAssociation | Implements | Calls
updateSectionAssociation |  |
discoverSectionAssociationIds |  |
changeSectionAssociationIdentifier |  |

See Appendix A4 below for the associated implementation notes.

The summary list of status codes that can be returned by the different operations through the StatusInfo object is given in Table 4.18. The key to the entries is: ‘Y’ denotes the code may be returned by that operation. A blank entry means that the code cannot be returned by that operation.

Table 4.18 Permitted status codes for the Association full course hierarchy addition profile operations.

CodeMinor Status Code | deleteSectionAssociation | replaceSectionAssociations
‘fullsuccess’ | Y | Y
‘createsuccess’ |  | Y
‘invaliddata’ |  | Y
‘incompletedata’ |  | Y
‘partialdatastorage’ |  | Y
‘unknownobject’ | Y |
‘deletefailure’ | Y |
‘unknownextension’ |  | Y
‘targetisbusy’ | Y | Y
‘linkfailure’ | Y | Y
‘unauthorizedrequest’ | Y | Y
‘unsupportedLISoperation’ | Y | Y

###

NOTE: Both ‘Sync Agent’ and ‘Ref Agent’ implementations must respond with the ‘unsupportedLISoperation’ for all and any of the operations under the LIS which are not implemented.

### 4.3.2 The Data Model Statements

The profiled data model is given in Table 4.19.

Table 4.19 CMS data model profile changes.

Class/Attribute | Baseline Constraints | Profile Notes
Min | Max | SPMax | Type
CourseTemplateRecordSet | – | – | – | – |
courseTemplateRecord | 0 | * | 2,000 | CourseTemplateRecord |
CourseOfferingRecordSet | – | – | – | – |
courseOfferingRecord | 0 | * | 10,000 | CourseOfferingRecord |
CourseSectionRecordSet | – | – | – | – |
courseSectionRecord | 0 | * | 10,000 | CourseSectionRecord |
SectionAssociationRecordSet | – | – | – | – |
sectionAssociationRecord | 0 | * | 10,000 | SectionAssociationRecord |
CourseTemplateRecord | – | – | – | – |
sourcedGUID | 1 | 1 | 1 | SourcedGUID |
refAgentInstance | 0 | 1 | 1 | Normalized String [1-4095] |
sourcedId | 1 | 1 | 1 | GUID |
courseTemplate | 1 | 1 | 1 | CourseTemplate |
CourseOfferingRecord | – | – | – | – |
sourcedGUID | 1 | 1 | 1 | SourcedGUID |
refAgentInstance | 0 | 1 | 1 | Normalized String [1-4095] |
sourcedId | 1 | 1 | 1 | GUID |
courseOffering | 1 | 1 | 1 | CourseOffering |
CourseSectionRecord | – | – | – | – |
sourcedGUID | 1 | 1 | 1 | SourcedGUID |
refAgentInstance | 0 | 1 | 1 | Normalized String [1-4095] |
sourcedId | 1 | 1 | 1 | GUID |
courseSection | 1 | 1 | 1 | CourseSection |
SectionAssociationRecord | – | – | – | – |
sourcedGUID | 1 | 1 | 1 | SourcedGUID |
refAgentInstance | 0 | 1 | 1 | Normalized String [1-4095] |
sourcedId | 1 | 1 | 1 | GUID |
sectionAssociation | 1 | 1 | 1 | SectionAssociation |
CourseTemplate | – | – | – | – |
label | 0 | 1 | 1 | Text |
language | 1 | 1 | 1 | {As base type} |
textString | 1 | 1 | 1 | String: [1-255] |
title | 0 | 1 | 1 | Text |
language | 1 | 1 | 1 | {As base type} |
textString | 1 | 1 | 1 | String: [1-255] |
catalogDescription | 0 | 1 | 1 | Description |
courseNumber | 0 | 1 | 1 | Text |
language | 1 | 1 | 1 | {As base type} |
textString | 1 | 1 | 1 | String: [1-255] |
status | 0 | 1 | 1 | Ext Vocab. [1] |
defaultCredits | 0 | 1 | 1 | Text |
language | 1 | 1 | 1 | {As base type} |
textString | 1 | 1 | 1 | String: [1-2047] |
org | 0 | 1 | 1 | Org |
listofTopics | 0 | 1 | 1 | ListofTopics |
listofPrerequisities | 0 | 1 | 1 | ListofPrerequisities |
dataSource | 0 | 1 | 1 | GUID |
recordInfo | 0 | 1 | 1 | Metadata |
extension | 0 | 1 | 1 | IMSExtension |
ListofTopics | – | – | – | – |
topic | 1 | * | 63 | Text |
language | 1 | 1 | 1 | {As base type} |
textString | 1 | 1 | 1 | String: [1-255] |
ListofPrerequisities | – | – | – | – |
prerequisite | 1 | * | 63 | Text |
language | 1 | 1 | 1 | {As base type} |
textString | 1 | 1 | 1 | String: [1-255] |
CourseOffering | – | – | – | – |
label | 0 | 1 | 1 | Text |
language | 1 | 1 | 1 | {As base type} |
textString | 1 | 1 | 1 | String: [1-255] |
title | 0 | 1 | 1 | Text |
language | 1 | 1 | 1 | {As base type} |
textString | 1 | 1 | 1 | String: [1-255] |
parentTemplateId | 0 | 1 | 1 | GUID |
catalogDescription | 0 | 1 | 1 | Description |
status | 0 | 1 | 1 | Ext Vocab. [1] |
defaultCredits | 0 | 1 | 1 | Text |
language | 1 | 1 | 1 | {As base type} |
textString | 1 | 1 | 1 | String: [1-2047] |
academicSession | 0 | 1 | 1 | Text |
language | 1 | 1 | 1 | {As base type} |
textString | 1 | 1 | 1 | Ext Vocab. [2] |
org | 0 | 1 | 1 | Org |
timeFrame | 0 | 1 | 1 | TimeFrame |
enrollControl | 0 | 1 | 1 | EnrollControl |
dataSource | 0 | 1 | 1 | GUID |
recordInfo | 0 | 1 | 1 | Metadata |
extension | 0 | 1 | 1 | IMSExtension |
CourseSection | – | – | – | – |
label | 0 | 1 | 1 | Text |
language | 1 | 1 | 1 | {As base type} |
textString | 1 | 1 | 1 | String: [1-255] |
title | 0 | 1 | 1 | Text |
language | 1 | 1 | 1 | {As base type} |
textString | 1 | 1 | 1 | String: [1-255] |
parentOfferingId | 0 | 1 | 1 | GUID |
catalogDescription | 0 | 1 | 1 | Description |
status | 0 | 1 | 1 | Ext Vocab. [1] |
defaultCredits | 0 | 1 | 1 | Text |
language | 1 | 1 | 1 | {As base type} |
textString | 1 | 1 | 1 | String: [1-2047] |
category | 0 | 1 | 1 | Text |
language | 1 | 1 | 1 | {As base type} |
textString | 1 | 1 | 1 | Ext Vocab. [3] |
academicSession | 0 | 1 | 1 | Text |
language | 1 | 1 | 1 | {As base type} |
textString | 1 | 1 | 1 | Ext Vocab. [2] |
maxN umberofStudents | 0 | 1 | 1 | Integer: [1-999]. |
numberofStudents | 0 | 1 | 1 | Integer: [1-999]. |
org | 0 | 1 | 1 | Org |
timeFrame | 0 | 1 | 1 | TimeFrame |
enrollControl | 0 | 1 | 1 | EnrollControl |
location | 0 | 1 | 1 | Text |
language | 1 | 1 | 1 | {As base type} |
textString | 1 | 1 | 1 | String: [1-255] |
notes | 0 | 1 | 1 | Text |
language | 1 | 1 | 1 | {As base type} |
textString | 1 | 1 | 1 | String: [1-2047] |
meeting | 0 | 1 | 1 | Text |
language | 1 | 1 | 1 | {As base type} |
textString | 1 | 1 | 1 | String: [1-255] |
dataSource | 0 | 1 | 1 | GUID |
recordInfo | 0 | 1 | 1 | Metadata |
extension | 0 | 1 | 1 | IMSExtension |
SectionAssociation | – | – | – | – |
label | 0 | 1 | 1 | Text |
language | 1 | 1 | 1 | {As base type} |
textString | 1 | 1 | 1 | String: [1-255] |
title | 0 | 1 | 1 | Text |
language | 1 | 1 | 1 | {As base type} |
textString | 1 | 1 | 1 | String: [1-255] |
status | 0 | 1 | 1 | Ext Vocab. [1] |
courseSectionIdList | 0 | 1 | 1 | ListofCourseSectionIds |
dataSource | 0 | 1 | 1 | GUID |
recordInfo | 0 | 1 | 1 | Metadata |
extension | 0 | 1 | 1 | IMSExtension |
ListofCourseSectionIds | – | – | – | – |
courseSectionId | 1 | * | 100 | GUID |
Org | – | – | – | – |
orgName | 0 | 1 | 1 | Text |
language | 1 | 1 | 1 | {As base type} |
textString | 1 | 1 | 1 | String: [1-255] |
orgUnit | 0 | 1 | 1 | Text |
language | 1 | 1 | 1 | {As base type} |
textString | 1 | 1 | 1 | String: [1-255] |
type | 0 | 1 | 1 | Text |
language | 1 | 1 | 1 | {As base type} |
textString | 1 | 1 | 1 | String: [1-255] |
id | 0 | 1 | 1 | Text |
language | 1 | 1 | 1 | {As base type} |
textString | 1 | 1 | 1 | String: [1-255] |
EnrollControl | – | – | – | – |
enrollAccept | 0 | 1 | 1 | Boolean: {true=accept enrollment; false=do not accept enrollment} |
enrollAllowed | 0 | 1 | 1 | Boolean: {true=allow enrollment; false=do not allow enrollment} |
TimeFrame | – | – | – | – |
begin | 0 | 1 | 1 | DateTime: ISO8601 (YYYY-MM-DDTHH:MM:SS) |
end | 0 | 1 | 1 | DateTime: ISO8601 (YYYY-MM-DDTHH:MM:SS) |
restrict | 0 | 1 | 1 | Boolean: {true=restriction is active; false=restriction is not active} |
adminPeriod | 0 | 1 | 1 | Text |
language | 1 | 1 | 1 | {As base type} |
textString | 1 | 1 | 1 | {As base type} |
Description | – | – | – | – |
shortDescription | 1 | 1 | 1 | Text |
language | 1 | 1 | 1 | {As base type} |
textString | 1 | 1 | 1 | String [1-127] |
longDescription | 0 | 1 | 1 | Text |
language | 1 | 1 | 1 | {As base type} |
textString | 1 | 1 | 1 | String [1-2095] |
fullDescription | 0 | 1 | 1 | FullDescription |
FulDescription | – | – | – | – |
mediamode | 1 | 1 | 1 | Int Vocab. [5] |
contentRefType | 1 | 1 | 1 | Int Vocab. [6] |
mimeType | 1 | 1 | 1 | Normalized String: [1-63] |
descriptionText |  |  |  | Text |
language | 1 | 1 | 1 | {As base type} |
textString | 1 | 1 | 1 | String [1-1024] |
Metadata | – | – | – | – |
metadataNameVocabulary | 1 | 1 | 1 | AnyURI |
metadataValueVocabulary | 1 | 1 | 1 | AnyURI |
metadataField | 1 | * | ? | ExtensionField |
IMSExtension | – | – | – | – |
extensionNameVocabulary | 1 | 1 | 1 | AnyURI |
extensionValueVocabulary | 1 | 1 | 1 | AnyURI |
extensionField | 1 | * | ? | ExtensionField |
ExtensionField | – | – | – | – |
fieldName | 1 | 1 | 1 | Normalized String: [1-127] |
fieldType | 1 | 1 | 1 | Entry in ‘extensionVocabulary’ [7] |
fieldValue | 1 | 1 | 1 | Normalized String: [1-1023] |
GUID | – | – | – | Normalized String: [1-4095] |
GUIDSet | – | – | – | This is only used as a parameter. | Not required.
sourcedId | 0 | * | 250,000 | GUID | Not required.
QueryObject | – | – | – | Normalized String: [1-1023] This is only used as a parameter. | Not required.
SequenceIdentifier | – | – | – | DateTime (YYYY-MM-DDTHH:MM:SS.NNN) This is only used as a parameter. | Not required.
Text | – | – | – | – |
language | 1 | 1 | 1 | Ext Vocab: Default=’en-US’ [8] |
textString | 1 | 1 | 1 | String [1..4095] |
URL | – | – | – | Normalized String: [1-4095] |

Data Model Notes:

[1] External VDEX vocabulary: ‘status’ – set of permitted values of the status field;

[2] External VDEX vocabulary: ‘academicSession’ – the set of permitted values of the session field;

[3] External VDEX vocabulary: ‘category’ – set of permitted values of the category field;

[4] Internal vocabulary: ‘day’ – the set of permitted values for the day field;

[5] Internal vocabulary: ‘mediaMode’ – set of permitted types of content reference;

[6] Internal vocabulary: ‘contentRefType’ – set of permitted types of content;

[7] External VDEX vocabulary: ‘fieldType’ – set of types permitted as extensions;

[8] External vocabulary: ‘language’ – use ISO639 as the source.

# 5 WSDL Bindings of the Core Profiles

The detailed list of files used in the Core Profiles are summarized in Appendix B below. The key points are:

· Core Profile – the same WSDL/XSD files are used for the BDEMS, PMS, GMS and MMS. New WSDSL/XSD files are created for the CMS in which the Course Template, Course Offering and Section Association data structures and service interfaces are removed. The OMS is not supported;

· Final Grade Addition Profile – new WSDSL/XSD files are created for the OMS in which the ResultValue data service interface is removed;

· Combined Sections Addition Profile – new WSDSL/XSD files are created for the CMS in which the Course Template and Course Offering data structures and service interfaces are removed;

· Full Course Hierarchy Addition Profile – the same set of WSDL/XSD files as per the full CMS specification.

# 6 Best Practices and Implementation Guidance

## 6.1 Using the Core Profile

Some keep points to be addressed in an implementation of the Core Profile are:

· The ‘unsupported’ status code must be returned for ALL of the operation not supported in an available service. Therefore, when an operation is not ‘implemented’ the service provider must still return the ‘unsupported’ code for any request on that operation;

· The PMS, GMS, MMS and CMS are synchronous services whereas the BDEMS is asynchronous. In the case of the synchronous services an implementation must respond in a synchronous manner even if the implementation itself cannot behave as required i.e., changes may only be permitted at scheduled times. An implementation must provide an accurate status response i.e., a promise of success should not be assumed;

· The PMS requires that ALL ‘replacePerson’ requests provide the ‘First’ and ‘Given’ name parts. This is considered the minimum information that is required for a person object;

· Further details are available in the Section 4.6.6 of the LIS Best Practices [LIS, 11b] on the support of ‘Terms’ in the GMS;

· The recommended authentication mechanisms are as per the full LIS. Further details are available in the Section 4.2.5 of the LIS Best Practices [LIS, 11b].

Further details are available in the Section 4 of the LIS Best Practices [LIS, 11b].

## 6.2 Using the Final Grade Addition Profile

The functional goal of the Final Grade Import is to remove the need for the common current business practice of calculating final grades in an external system e.g., an LMS, then retyping those grades into an SIS as the system of record. The IMS LIS specification allows for two different models of Outcomes integration: a “pull” methodology in which one system (usually the final system of record, such as the student information system) requests the grades from the system in grades have initially been entered (such as a learning management system); and a “push” methodology in which the system, in which the grades have initially been entered, sends the grades to the final system of record based on an action within that initial system.

Further details are available in the Section 4.8 of the LIS Best Practices [LIS, 11b].

## 6.3 Using the Combined Sections Addition Profile

The two most common use cases for Section Association are combined sections and multi-section courses. With combined sections, a course section is offered for credit in two or more departments or as two or more course listings within the same department. For example, Statistics for Psychology might be listed for credit in both the Mathematics and the Psychology departments.

Further details are available in the Section 4.5.4 of the LIS Best Practices [LIS, 11b].

## 6.4 Using the Full Course Hierarchy Addition Profile

This Addition Profile is in effect a minimal version of the full CMS. As such, further details are available in the Section 4.5 of the LIS Best Practices [LIS, 11b].

# 7 Conformance and Compliance to the Core Profiles

## 7.1 Compliance to the Core Profile

Compliance to the Core Profile for a Sync Agent means:

a) Support the Person Management Service such that:-

- Be a service provider for the ‘deletePerson’ and ‘replacePerson’ operations
- Be a service provider for the ‘readPerson’ operation during the conformance testing activity (this may then be disabled)
- Support the SOAPv1.1 messages for the operations
- Support the set of status codes returned in the response messages (see Table 3.2)
- As a service provider reject the unsupported operations with the status code ‘unsupported’
- Support the Person data model for the operations (either the full data model or a proper subset)
- Support the external VDEX vocabularies specific to this service;

b) Support the Group Management Service such that:-

- Be a service provider for the ‘deleteGroup’ and ‘replaceGroup’ operations
- Be a service provider for the ‘readGroup’ operation during the conformance testing activity (this may then be disabled)
- Support the SOAPv1.1 messages for the operations
- Support the set of status codes returned in the response messages (see Table 3.5)
- As a service provider reject the unsupported operations with the status code ‘unsupported’
- Support the Group data model for the operations (either the full data model or a proper subset)
- Support the external VDEX vocabularies specific to this service;

c) Support the Membership Management Service such that:-

- Be a service provider for the ‘deleteMembership’ and ‘replaceMembership’ operations
- Be a service provider for the ‘readMembership’ operation during the conformance testing activity (this may then be disabled)
- Support the SOAPv1.1 messages for the operations
- Support the set of status codes returned in the response messages (see Table 3.8)
- As a service provider reject the unsupported operations with the status code ‘unsupported’
- Support the Membership data model for the operations (either the full data model or a proper subset)
- Support the external VDEX vocabularies specific to this service;

d) Support the Course Management Service such that:-

- Be a service provider for the ‘deleteCourseSection’ and ‘replaceCourseSection’ operations
- Be a service provider for the ‘readCourseSection’ operation during the conformance testing activity (this may then be disabled)
- Support the SOAPv1.1 messages for the operations
- Support the set of status codes returned in the response messages (see Table 3.11)
- As a service provider reject the unsupported operations with the status code ‘unsupported’
- Support the CourseSection data model for the operations (either the full data model or a proper subset)
- Support the external VDEX vocabularies specific to this service;

e) Support the Bulk Data Exchange Management Service such that:-

- When functionally appropriate, be a service consumer for the ‘reportBulkDataExchange’, ‘cancelBulkDataExchange’, ‘ignoreBulkDataExchange’ and ‘HTTPSget’ operations
- Be a service provider for the ‘announceBulkDataExchange’ operation
- Support the SOAPv1.1 messages for the operations
- Support the set of status codes returned in the response messages (see Table 3.17)
- As a service provider reject the unsupported operations with the status code ‘unsupported’
- Support the full bulk data models for the operations (either the full data model or a proper subset)
- Get and process the set of received bulk data files;
- Support the external VDEX vocabularies specific to this service.

Compliance to the Core Profile for a Ref Agent means:

a) Support the Person Management Service such that:-

- When functionally appropriate, be a service consumer for the ‘deletePerson’ and ‘replacePerson’ operations
- Support the SOAPv1.1 messages for the operations
- Support the set of status codes returned in the response messages (see Table 3.2)
- As a service provider reject the unsupported operations with the status code ‘unsupported’
- Support the Person data model for the operations (either the full data model or a proper subset)
- Support the external VDEX vocabularies specific to this service;

b) Support the Group Management Service such that:-

- When functionally appropriate, be a service consumer for the ‘deleteGroup’ and ‘replaceGroup’ operations
- Support the SOAPv1.1 messages for the operations
- Support the set of status codes returned in the response messages (see Table 3.5)
- As a service provider reject the unsupported operations with the status code ‘unsupported’
- Support the Group data model for the operations (either the full data model or a proper subset)
- Support the external VDEX vocabularies specific to this service;

c) Support the Membership Management Service such that:-

- When functionally appropriate, be a service consumer for the ‘deleteMembership’ and ‘replaceMembership’ operations
- Support the SOAPv1.1 messages for the operations
- Support the set of status codes returned in the response messages (see Table 3.8)
- As a service provider reject the unsupported operations with the status code ‘unsupported’
- Support the Membership data model for the operations (either the full data model or a proper subset)
- Support the external VDEX vocabularies specific to this service;

d) Support the Course Management Service such that:-

- When functionally appropriate, be a service consumer for the ‘deleteCourseSection’ and ‘replaceCourseSection’ operations
- Support the SOAPv1.1 messages for the operations
- Support the set of status codes returned in the response messages (see Table 3.11)
- As a service provider reject the unsupported operations with the status code ‘unsupported’
- Support the CourseSection data model for the operations (either the full data model or a proper subset)
- Support the external VDEX vocabularies specific to this service;

e) Support the Bulk Data Exchange Management Service such that:-

- When functionally appropriate, be a service consumer for the ‘announceBulkDataExchange’ operation
- Be a service provider for the ‘reportBulkDataExchange’, ‘cancelBulkDataExchange’, ‘ignoreBulkDataExchange’ and ‘HTTPSget’ operations
- Support the SOAPv1.1 messages for the operations
- Support the set of status codes returned in the response messages (see Table 3.17)
- As a service provider reject the unsupported operations with the status code ‘unsupported’
- Support the full bulk data model for the operations (either the full data model or a proper subset)
- Create the bulk data files and make them available for HTTPS download
- Support the four external VDEX vocabularies specific to this service.

## 7.2 Compliance to the Addition Profiles

When a system claims compliance to the Core profiles then any implementation must support the Core Profile. A system may support some or all of the Addition Profiles. Support of Addition Profiles reduces guaranteed interoperability. When Addition profiles are supported the set of possible combinations of Core and Addition profiles are:

· Core + Final Grade (X+G);

· Core + Combined Sections (X+C);

· Core + Full Hierarchical Course (X+F);

· Core + Final Grade + Combined Sections (X+G+C);

· Core + Final Grade + Full Hierarchical Course (X+G+F);

· Core + Combined Sections + Full Hierarchical Course (X+C+F);

· Core + Final Grade + Combined Sections + Full Hierarchical Course (All);

Interoperability between these combinations is summarized in Table 7.1.

Table 7.1 Interoperability provided by different combinations of the core profiles.

Profile | X+G | X+C | X+F | X+G+C | X+G+F | X+C+F | All
X+G | X+G | X only | X only | X+G | X+G | X only | X+G
X+C | X only | X+G | X only | X+C | X only | X+C | X+C
X+F | X only | X only | X+F | X only | X+F | X+F | X+F
X+G+C | X+G | X+C | X only | X+G+C | X+G | X+C | X+G+C
X+G+F | X+G | X only | X+F | X+G | X+G+F | X+F | X+G+F
X+C+F | X only | X+C | X+F | X+C | X+F | X+C+F | X+C+F
All | X+G | X+C | X+F | X+G+C | X+G+F | X+C+F | All

The key points to note in Table 7.1 are:

· The green shaded cells (the diagonals) denote full interoperability (assuming the either both systems support the full data model or they support a common subset);

· The red shaded cells denote NO interoperability except for that defined in the Core Profile plus the common subset of the data models in the Core Profile;

· The orange shaded cells denote limited extra interoperability exceeding that defined in the Core Profile (the cell is marked with the common Addition profiles that provide the added interoperability). Once again the common subset of the data models defines the exact form of the interoperability.

### 7.2.1 Final Grade Addition Profile Conformance

Compliance to the Grade Addition Profile for a Sync Agent means:

· Be a service provider for the ‘deleteLineItem’, ‘replaceLineItem’, ‘deleteResult’, ‘readResultIdsForLineItemWithLineItemType’ and ‘replaceResult’ operations;

· Be a service provider for the ‘readLineItem’ and ‘readResult’ operations during the conformance testing activity (this may then be disabled);

· Support the SOAPv1.1 messages for the operations;

· Support the set of status codes returned in the response messages (see Tables 4.2, 4.4 and 4.6);

· As a service provider reject the unsupported operations with the status code ‘unsupported’;

· Support the LineItem, Result and ResultValue data models for the operations (either the full data model or a proper subset);

· Support the external VDEX vocabularies specific to this service.

Compliance to the Final Grade Addition Profile for a Ref Agent means:

· Be a service consumer for the ‘deleteLineItem’, ‘replaceLineItem’, ‘deleteResult’, ‘readResultIdsForLineItemWithLineItemType’ and ‘replaceResult’ operations;

· Support the SOAPv1.1 messages for the operations;

· Support the set of status codes returned in the response messages (see Tables 4.2, 4.4 and 4.6);

· As a service provider reject the unsupported operations with the status code ‘unsupported’;

· Support the LineItem, Result and ResultValue data models for the operations (either the full data model or a proper subset);

· Support the three external VDEX vocabularies specific to this service.

### 7.2.2 Combined Sections Addition Profile

Compliance to the Combined Sections Addition Profile for a Sync Agent means:

· Be a service provider for the ‘deleteCourseSection’, ‘replaceCourseSection’, ‘deleteSectionAssociation’, ‘addCourseSectionId’, ‘removeCourseSectionId’ and ‘replaceSectionAssociation’ operations;

· Be a service provider for the ‘readCourseSection’ and ‘readSectionAssociation’ operations during the conformance testing activity (this may then be disabled);

· Support the SOAPv1.1 messages for the operations;

· Support the set of status codes returned in the response messages (see Tables 4.11 and 4.13);

· As a service provider reject the unsupported operations with the status code ‘unsupported’;

· Support the CourseSection and SectionAssociation data models for the operations (either the full data model or a proper subset);

· Support the external VDEX vocabularies specific to this service.

Compliance to the Combined Sections Addition Profile for a Ref Agent means:

· Be a service consumer for the ‘deleteCourseSection’, ‘replaceCourseSection’, ‘deleteSectionAssociation’, ‘addCourseSectionId’, ‘removeCourseSectionId’ and ‘replaceSectionAssociation’ operations;

· Support the SOAPv1.1 messages for the operations;

· Support the set of status codes returned in the response messages (see Tables 4.11 and 4.13);

· As a service provider reject the unsupported operations with the status code ‘unsupported’;

· Support the CourseSection and SectionAssociation data models for the operations (either the full data model or a proper subset);

· Support the external VDEX vocabularies specific to this service.

### 7.2.3 Fill Course Hierarchy Addition Profile

Compliance to the Full Course Hierarchy Addition Profile for a Sync Agent means:

· Be a service provider for the ‘deleteCourseTemplate’, ‘replaceCourseTemplate’, ‘deleteCourseOffering’, ‘replaceCourseOffering’, ‘deleteCourseSection’, ‘replaceCourseSection’, ‘deleteSectionAssociation’, ‘addCourseSectionId’, ‘removeCourseSectionId’ and ‘replaceSectionAssociation’ operations;

· Be a service provider for the ‘readCourseTemplate’, ‘readCourseOffering’, ‘readCourseSection’ and ‘readSectionAssociation’ operations during the conformance testing activity (this may then be disabled);

· Support the SOAPv1.1 messages for the operations;

· Support the set of status codes returned in the response messages (see Tables 4.18, 4.20, 4.22 and 4.24);

· As a service provider reject the unsupported operations with the status code ‘unsupported’;

· Support the CourseTemplate, CourseOffering, CourseSection and SectionAssociation data models for the operations (either the full data model or a proper subset);

· Support the external VDEX vocabularies specific to this service;.

Compliance to the Full Course Hierarchy Profile for a Ref Agent means:

· Be a service consumer for the deleteCourseTemplate’, ‘replaceCourseTemplate’, ‘deleteCourseOffering’, ‘replaceCourseOffering’, ‘deleteCourseSection’, ‘replaceCourseSection’, ‘deleteSectionAssociation’, ‘addCourseSectionId’, ‘removeCourseSectionId’ and ‘replaceSectionAssociation’ operations;

· Support the SOAPv1.1 messages for the operations;

· Support the set of status codes returned in the response messages (see Tables 4.18, 4.20, 4.22 and 4.24);

· As a service provider reject the unsupported operations with the status code ‘unsupported’;

· Support the CourseTemplate, CourseOffering, CourseSection and SectionAssociation data models for the operations (either the full data model or a proper subset);

· Support the external VDEX vocabularies specific to this service.

## 7.3 Mixed Compliance

In many cases an implementation will support more of the original features in the base LIS specification than required by the profiles. In such cases the system is expected to correctly realize those features. Conformance testing of those extra features may or may not be undertaken (the conformance test system will indicate which extra features have or have not been tested). Any compliance mark obtained will not imply interoperability with other systems that support the same extra features i.e., interoperability may be expected but no guarantees are made.

# Appendix A Summary of the Services for the Profiles

## A1 Core Profile Summary

Table A1.1 Summary of the service behaviors required in the core profile.

Service/Interface | Operation | Synch Agent | Ref Agent
Person Management Service · PersonManager | deletePerson | Implements | Calls
replacePerson | Implements | Calls
Group Management Service · GroupManager | deleteGroup | Implements | Calls
replaceGroup | Implements | Calls
Membership Management Service · MembershipManager | deleteMembership | Implements | Calls
replaceMembership | Implements | Calls
Course Management Service · CourseSectionManager | deleteCourseSection | Implements | Calls
replaceCourseSection | Implements | Calls
Bulk Data Exchange Management Service · BulkDataExchangeManager | announceBulkDataExchange | Implements | Calls
reportBulkDataExchange | Calls | Implements
ignoreBulkDataExchange | Implements | Calls
HTTPSget | Calls | Implements

NOTE: (a) A Synch Agent/Ref Agent must implement all of the operations denoted as ‘Implements’. A Sync Agent/Ref Agent may or may not invoke the operations denoted as ‘Calls’ and if such a call is made then the service provider is obligated to support the request;

(b) Support for the Outcomes Management Service is not required as part of the Core Profile. Instead, this is addressed in the Final Grade Addition Profile;

(c) The ‘replace*’ operations act as implied ‘create*’ operations when the supplied ‘sourcedId’ is unknown in the service provider;

(d) The ‘read*’ operations are required to support conformance testing but these operations are not then required to be made operationally available.

## A2 Final Grade Addition Profile Summary

Table A2.1 Summary of the service behaviors required in the grade addition profile.

Service/Interface | Operation | Synch Agent | Ref Agent
Outcomes Management Service · LineItemManager | deleteLineItem | Implements | Calls
replaceLineItem | Implements | Calls
Outcomes Management Service · ResultManager | deleteResult | Implements | Calls
readResultIdsForLineItemWithLineItemType | Implements | Calls
replaceResult | Implements | Calls

NOTE: (a) A Synch Agent/Ref Agent must implement all of the operations denoted as ‘Implements’. A Sync Agent/Ref Agent may or may not invoke the operations denoted as ‘Calls’ and if such a call is made then the service provider is obligated to support the request;

(b) The ‘replace*’ operations act as implied ‘create*’ operations when the supplied ‘sourcedId’ is unknown in the service provider;

(c) The ‘read*’ operations are required to support conformance testing but these operations are not then required to be made operationally available.

## A3 Combined Sections Addition Profile Summary

Table A3.1 Summary of the service behaviors required in the combined sections addition profile.

Service/Interface | Operation | Synch Agent | Ref Agent
Course Management Service · CourseSectionManager | deleteCourseSection | Implements | Calls
replaceCourseSection | Implements | Calls
Course Management Service · CourseSectionAssociationManager | deleteSectionAssociation | Implements | Calls
replaceSectionAssociation | Implements | Calls

NOTE: (a) A Synch Agent/Ref Agent must implement all of the operations denoted as ‘Implements’. A Sync Agent/Ref Agent may or may not invoke the operations denoted as ‘Calls’ and if such a call is made then the service provider is obligated to support the request;

(b) The ‘replace*’ operations act as implied ‘create*’ operations when the supplied ‘sourcedId’ is unknown in the service provider;

(c) The ‘read*’ operations are required to support conformance testing but these operations are not then required to be made operationally available.

## A4 Full Course Hierarchy Addition Profile Summary

Table A4.1 Summary of the service behaviors required in the full course hierarchy addition profile.

Service/Interface | Operation | Synch Agent | Ref Agent
Course Management Service · CourseTemplateManager | deleteCourseTemplate | Implements | Calls
replaceCourseTemplate | Implements | Calls
Course Management Service · CourseOfferingManager | deleteCourseOffering | Implements | Calls
replaceCourseOffering | Implements | Calls
Course Management Service · CourseSectionManager | deleteCourseSection | Implements | Calls
replaceCourseSection | Implements | Calls
Course Management Service · CourseSectionAssociationManager | deleteSectionAssociation | Implements | Calls
replaceSectionAssociation | Implements | Calls

NOTE: (a) A Synch Agent/Ref Agent must implement all of the operations denoted as ‘Implements’. A Sync Agent/Ref Agent may or may not invoke the operations denoted as ‘Calls’ and if such a call is made then the service provider is obligated to support the request;

(b) The ‘replace*’ operations act as implied ‘create*’ operations when the supplied ‘sourcedId’ is unknown in the service provider;

(c) The ‘read*’ operations are required to support conformance testing but these operations are not then required to be made operationally available.

# Appendix B The Core Profiles Binding Files

## B1 Core Profile Binding Files

The set of files for the Core Profile binding are:

### B1.1 Bulk Data Exchange Data Management Service (BDEMS)

As per the full specification.

### B1.2 Course Management Service (CMS)

a) UML

- PSM_CMSv1p0_ServiceModel_Corev1.zuml
- PSM_CMSv1p0_ServiceModel_Corev1.xmi

b) WSDL

- CourseManagementServicev1p0_CoreSyncSingle_v1p0.wsdl
- CourseManagementServicev1p0_CoreSyncWSDL_v1p0.wsdl

c) XSD

- CourseManagementServiceSyncXSD.xsd

d) VDEX

- extensionvocabularyv1p0.xml
- statusvocabularyv1p0.xml

### B1.3 Group Management Service (GMS)

As per the full specification.

### B1.4 Membership Management Service (MMS)

As per the full specification.

### B1.5 Person Management Service (PMS)

As per the full specification.

## B2 Final Grade Addition Profile Binding Files

The set of files for the Final Grade Addition Profile binding are:

a) UML

- PSM_OMSv1p0_ServiceModel_FinalGradeAddv1.zuml
- PSM_OMSv1p0_ServiceModel_FinalGradeAddv1.xmi

b) WSDL

- OutcomesManagementServicev1p0_FGAddSyncSingle_v1p0.wsdl
- OutcomesManagementServicev1p0_FGAddSyncWSDL_v1p0.wsdl

c) XSD

- OutcomesManagementServiceSyncXSD.xsd

d) VDEX

- extensionvocabularyv1p0.xml
- lineitemtypevocabularyv1p0.xml
- statusofresultvocabularyv1p0.xml

## B3 Combined Section Addition Profile Binding Files

The set of files for the Combined Section Addition Profile binding are:

a) UML

- PSM_CMSv1p0_ServiceModel_CmbSectionsAdv1.zuml
- PSM_CMS1p0_ServiceModel_CmbSectionsAddv1.xmi

b) WSDL

- CourseManagementServicev1p0_CSAddSyncSingle_v1p0.wsdl
- CourseManagementServicev1p0_CSAddSyncWSDL_v1p0.wsdl

c) XSD

- CourseManagementServiceSyncXSD.xsd

d) VDEX

- extensionvocabularyv1p0.xml
- statusvocabularyv1p0.xml

## B4 Full Course Hierarchy Addition Profile Binding Files

The set of files for the Full Course Hierarchy Addition Profile binding are as per the full CMS specification.

# About This Document

Title: IMS GLC Learning Information Services Profiles

Editor: Colin Smythe (IMS GLC)

Co-chairs: Linda Feng (Oracle) and Bill Lee (Desire2learn)

Version: 1.0

Version Date: 31 December 2011

Release: Final 1.0

Status: Final Release

Summary: This document contains the IMS GLC Learning Information Services (LIS) Profiles. These profiles address the core functionality required to support ‘Sync Agent’ and ‘Ref Agent’ exchange between a learning management system and student information system. The Profiles are composed of a ‘Core Profile’ plus three extension profiles: namely Final Grade, Combined Sections and Full Course Hierarchy. An implementation must support the Core Profile plus any combination (including none) of the Additions Profiles.

Revision Information: This is the first release of this document.

Purpose: This document is made available for adoption by the public community at large.

Document Location: http://www.imsglobal.org/lis

## List of Contributors

The following individuals contributed to the development of this document:

Kirk Bunte SungardHE (USA)

Angus Chan Desire2Learn (Canada)

Adam Cooper JISC/JISC-CETIS (UK)

Michael Feldstein Cengage (USA)

Linda Feng Oracle (USA)

Jon Fontaine Blackboard (USA)

Karen Kuffner University of Michigan (USA)

Bill Lee Desire2Learn (Canada)

Richard Moon SungardHE (USA)

Philip Nicholls Psydev (UK)

Mike Parkhill Desire2Learn (Canada)

Colin Smythe IMS GLC (UK)

Reinhold Staudinger Blackboard (USA)

Nick Terrible University of Wisconsin (USA)

# Revision History

Version No. | Release Date | Comments
Final Release v1.0 | 31 December 2011 | The first formal release of the Final Release version of this document.

# Index

A

Abstract Framework......... 6, 7, 8

Addition Profiles 2, 3, 7, 9, 10, 75

Combined Sections 2, 3, 9, 50, 72, 73, 77, 80

Full Course Hierarchy 2, 3, 9, 58, 72, 73, 77, 81, 83

Grade 2, 3, 42, 72, 73, 76, 77, 79, 80, 83

API............................................ 7, 9

Attributes

BDEMS

bulkBlockDataFile.......... 39

operationSet..................... 39

parameterRecord............ 40

parameterSet................... 40

parameterValue.............. 40

serviceRecord.................. 39

serviceSet.......................... 39

transactionRecord.......... 39

transactionReport........... 39

Common

dataSource 23, 29, 34, 46, 47, 48, 55, 67, 68, 69

email............................. 1, 23

extensionField 20, 25, 30, 35, 48, 57, 71

extensionVocabulary 20, 25, 30, 35, 48, 57, 71

metadataField 25, 30, 35, 48, 57, 70

recordInfo 23, 29, 34, 46, 47, 48, 55, 67, 68, 69

sourcedId 11, 13, 14, 19, 21, 23, 24, 25, 27, 29, 30, 31, 33, 36, 46, 49, 54, 57, 66, 71, 79, 80, 81

textString 14, 15, 16, 17, 18, 19, 20, 23, 24, 25, 26, 30, 33, 34, 35, 36, 47, 48, 49, 54, 55, 56, 57, 67, 68, 69, 70, 71

timeFrame 23, 29, 34, 55, 68

url.......................... 23, 39, 40

userId.......................... 14, 18

Course

courseOffering.......... 40, 66

courseSection 33, 40, 54, 66

courseTemplate........ 40, 66

section......... 4, 9, 51, 53, 73

sectionAssociation 40, 54, 66

Demographics gender......... 20

Description

FullDescription 19, 25, 35, 56, 70

EnrollControl

enrollAccept. 24, 34, 56, 70

enrollAllowed 24, 34, 56, 70

ExtensionField

fieldName 20, 25, 30, 35, 48, 57, 71

fieldType 20, 25, 26, 30, 31, 35, 36, 48, 49, 57, 58, 71

fieldValue 20, 25, 30, 35, 48, 57, 71

groupRecord.................. 23, 40

GroupType

scheme.............................. 23

LangString

language 14, 15, 16, 17, 18, 19, 20, 23, 24, 25, 26, 30, 31, 33, 34, 35, 36, 47, 48, 49, 54, 55, 56, 57, 58, 66, 67, 68, 69, 70, 71

text..................................... 40

lineItem.................... 41, 46, 49

lineItemRecord.............. 41, 46

Membership

membership.......... 9, 29, 30

membershipRecord...... 29, 40

Name

nameType................. 14, 20

Org

id 23, 24, 34, 56, 69

orgName....... 24, 34, 56, 69

orgUnit.......... 24, 34, 56, 69

type 13, 14, 15, 16, 17, 18, 19, 23, 24, 25, 30, 33, 34, 35, 47, 48, 54, 55, 56, 57, 66, 67, 68, 69, 70

Person

dataSource 23, 29, 34, 46, 47, 48, 55, 67, 68, 69

email............................. 1, 23

systemRole................ 17, 20

url.......................... 23, 39, 40

personRecord................. 13, 40

Relationship

label 24, 33, 46, 48, 54, 55, 66, 67, 68, 69

relation....................... 24, 26

Result...................... 6, 9, 46, 49

result................... 6, 9, 46, 49

resultRecord................... 40, 46

resultValue..................... 46, 47

resultValueRecord........ 41, 46

Role

dateTime.......................... 29

roleType..................... 29, 30

status 4, 9, 11, 12, 22, 28, 29, 31, 32, 33, 36, 37, 38, 41, 43, 45, 49, 51, 53, 54, 55, 57, 59, 61, 63, 65, 67, 68, 69, 71, 73, 74, 75, 77, 78

subRole...................... 29, 30

StatusInfo

description........... 13, 17, 23

TimeFrame

adminPeriod 24, 30, 35, 56, 70

begin....... 24, 29, 34, 56, 70

end.......... 24, 29, 35, 56, 70

TypeValue

level................................... 23

type 13, 14, 15, 16, 17, 18, 19, 23, 24, 25, 30, 33, 34, 35, 47, 48, 54, 55, 56, 57, 66, 67, 68, 69, 70

UserId

authentication................. 73

userIdType....................... 18

Values

list 12, 22, 28, 32, 38, 43, 45, 51, 53, 59, 61, 63, 65, 72

max............... 33, 48, 55, 68

min..................................... 48

B

Binding technologies

WSDL...... 2, 6, 7, 8, 72, 82, 83

XSD...................... 7, 72, 82, 83

Bulk Data Exchange Management Service 2, 3, 4, 6, 7, 8, 11, 37, 39, 72, 73, 74, 75, 79, 82

C

Classes

BDEMS

BulkBlockDataFile......... 39

BulkBlockManifest........ 39

BulkBlockReport............ 39

BulkDataRecord............. 39

OperationSet.................... 39

ParameterRecord............ 40

ParameterSet................... 40

ParameterValue.............. 40

ServiceRecord.................. 39

ServiceSet......................... 39

TransactionRecord.. 39, 40

TransactionReport.......... 39

Common

ExtensionField 20, 25, 30, 35, 48, 57, 70, 71

IMSExtension 13, 19, 23, 25, 29, 30, 34, 35, 46, 47, 48, 55, 57, 67, 68, 69, 71

Metadata 23, 25, 29, 30, 34, 35, 46, 47, 48, 55, 57, 67, 68, 69, 70

StatusInfo 12, 22, 28, 32, 38, 43, 45, 51, 53, 59, 61, 63, 65

Text 14, 15, 16, 17, 18, 19, 20, 23, 24, 25, 26, 30, 33, 34, 35, 36, 40, 47, 48, 49, 54, 55, 56, 57, 66, 67, 68, 69, 70, 71

TimeFrame 24, 29, 34, 55, 56, 68, 70

UserId......................... 14, 18

Course

Association 4, 52, 53, 64, 65, 72, 73

CourseOffering 40, 58, 66, 67, 77, 78

CourseSection 33, 40, 50, 54, 58, 66, 68, 74, 75, 77, 78

CourseTemplate 40, 58, 66, 77, 78

Offering........... 4, 60, 61, 72

Section 3, 4, 9, 31, 50, 51, 62, 63, 72, 73, 83

SectionAssociation 40, 50, 54, 55, 58, 66, 69, 77, 78

Template......... 4, 58, 59, 72

Group 2, 3, 6, 7, 11, 21, 23, 74, 75, 79, 82

Description 6, 7, 17, 19, 23, 24, 33, 35, 54, 56, 67, 68, 70

EnrollControl 24, 34, 55, 56, 68, 70

FullDescription 19, 25, 35, 56, 70

GroupType....................... 23

Org 23, 24, 34, 55, 56, 67, 68, 69

Relationship.............. 23, 24

TypeValue........................ 23

GroupRecord................. 23, 40

LineItem. 4, 41, 42, 43, 46, 77

LineItemRecord............ 41, 46

Member................................. 29

Role...................... 20, 29, 41

Membership 2, 3, 6, 7, 8, 11, 27, 29, 74, 75, 79, 82

MembershipRecord...... 29, 40

Outcomes

ResultRecord............. 40, 46

ResultValue 42, 46, 47, 72, 77

ResultValueRecord.. 41, 46

Person 2, 3, 6, 7, 8, 11, 13, 74, 75, 79, 82

Address....................... 13, 15

Demographics........... 13, 15

FormName................ 13, 14

Name................... 13, 14, 91

PersonCore....................... 13

PersonRecord............ 13, 40

Result 4, 42, 44, 45, 46, 47, 77

Role

Result 4, 42, 44, 45, 46, 47, 77

Combined Sections Addition Profile 2, 3, 9, 50, 72, 73, 77, 80

Conformance.. 3, 7, 9, 74, 76, 78

Core Profile 2, 3, 6, 7, 9, 11, 72, 73, 74, 75, 76, 79, 82, 84, 91

Core Profiles 2, 3, 7, 72, 74, 82, 91

Course 2, 3, 4, 6, 7, 8, 9, 11, 31, 58, 72, 74, 75, 76, 77, 78, 79, 80, 81, 82, 84

Course Management Service 2, 3, 4, 6, 7, 8, 9, 11, 31, 32, 33, 50, 52, 54, 58, 60, 62, 64, 66, 72, 73, 74, 75, 79, 80, 81, 82, 83

Course Structures

Association 4, 52, 53, 64, 65, 72, 73

CourseOffering 40, 58, 66, 67, 77, 78

CourseSection 33, 40, 50, 54, 58, 66, 68, 74, 75, 77, 78

CourseTemplate 40, 58, 66, 77, 78

Offering................ 4, 60, 61, 72

Section 3, 4, 9, 31, 50, 51, 62, 63, 72, 73, 83

SectionAssociation 40, 50, 54, 55, 58, 66, 69, 77, 78

Template............. 4, 58, 59, 72

F

Full Course Hierarchy Addition Profile 2, 3, 9, 58, 72, 73, 77, 81, 83

G

Grade Addition Profile 2, 3, 42, 72, 73, 76, 77, 79, 80, 83

Group Management Service 2, 3, 6, 7, 11, 21, 74, 75, 79, 82

I

InstitutionRole......................... 18

Interface Class

BulkDataExchangeManager 4, 38, 79

GroupManager..................... 79

LineItemManager............... 80

MembershipManager......... 79

PersonManager.................... 79

ResultManager..................... 80

L

Learning Information Services 1, 2, 6, 7, 8, 9, 84

Learning Information Services Best Practices & Implementation Guide 8

LIS

Bulk Data Exchange Management Service 2, 3, 4, 6, 7, 8, 11, 37, 39, 72, 73, 74, 75, 79, 82

Course Management Service 2, 3, 4, 6, 7, 8, 9, 11, 31, 32, 33, 50, 52, 54, 58, 60, 62, 64, 66, 72, 73, 74, 75, 79, 80, 81, 82, 83

Group Management Service 2, 3, 4, 6, 7, 11, 21, 22, 23, 72, 73, 74, 75, 79, 82

Membership Management Service 2, 3, 4, 6, 7, 8, 11, 27, 28, 29, 72, 73, 74, 75, 79, 82

Outcomes Management Service 4, 6, 7, 8, 9, 11, 42, 44, 46, 72, 79, 80

Person Management Service 2, 3, 4, 6, 7, 8, 11, 12, 13, 72, 73, 74, 75, 79, 82

M

Membership Management Service 2, 3, 6, 7, 8, 11, 27, 74, 75, 79, 82

Metadata 23, 25, 29, 30, 34, 35, 46, 47, 48, 55, 57, 67, 68, 69, 70

O

Operations

BDEMS

announceBulkDataExchange 37, 74, 75, 79

cancelBulkDataExchange 37, 74, 75

ignoreBulkDataExchange 37, 74, 75, 79

reportBulkDataExchange 37, 74, 75, 79

requestBulkDataExchange 37

Course

addCourseSection........... 64

changeCourseOfferingIdentifier 60

changeCourseSectionIdentifier 31, 50, 62

changeCourseTemplateIdentifier 58

changeSectionAssociationIdentifier 52, 64

createByProxyCourseOffering 60

createByProxyCourseSection 31, 50, 62

createByProxyCourseTemplate 58

createByProxySectionAssociation 52, 64

createCourseOffering..... 60

createCourseOfferingFromCourseOffering 60

createCourseSection 31, 50, 62

createCourseSectionFromCourseSection 31, 50, 62

createCourseTemplate... 58

createSectionAssociation 52, 64

deleteCourseOffering 60, 61, 77, 78, 81

deleteCourseSection 31, 32, 50, 51, 62, 63, 74, 75, 77, 78, 79, 80, 81

deleteCourseTemplate 58, 59, 77, 78, 81

deleteSectionAssociation 52, 53, 64, 65, 77, 78, 80, 81

discoverCourseOfferingIds 60

discoverCourseSectionIds 31, 50, 62

discoverCourseTemplateIds 58

discoverSectionAssociation..... 52, 64

readAllActiveCourseOfferingIdsForAcademicSession 60

readAllCourseOfferingIds 60

readAllCourseSectionIds 31, 50, 62

readAllCourseTemplateIds 58

readAllSectionAssociationIds 52, 64

readCourseOffering. 60, 77

readCourseOfferingIdsFromSavePoint 60

readCourseOfferings...... 60

readCourseOfferingsFromSavePoint 60

readCourseSection 31, 50, 62, 74, 77

readCourseSectionIdsForCourseOffering 60

readCourseSectionIdsFromSavePoint 31, 50, 62

readCourseSections 31, 50, 62

readCourseSectionsFromSavePoint 31, 50, 62

readCourseTemplate 58, 77

readCourseTemplateIdsFromSavePoint 58

readCourseTemplates.... 58

readCourseTemplatesFromSavePoint 58

readSectionAssociation 52, 64, 77

readSectionAssociationIdsFromSavePoint 52, 64

readSectionAssociations 52, 64

readSectionAssociationsFromSavePoint 52, 64

removeCourseSection.... 64

replaceCourseOffering 60, 61, 77, 78, 81

replaceCourseSection 31, 32, 50, 51, 62, 63, 74, 75, 77, 78, 79, 80, 81

replaceCourseTemplate 58, 59, 77, 78, 81

replaceSectionAssociation 52, 64, 77, 78, 80, 81

updateCourseOffering... 60

updateCourseOfferingStatus 60

updateCourseSection 31, 50, 62

updateCourseSectionStatus 31, 50, 62

updateCourseTemplate. 58

updateSectionAssociation 52, 64

Group

addGroupRelationship... 21

changeGroupIdentifier... 21

createByProxyGroup..... 21

createGroup..................... 21

deleteGroup 21, 22, 74, 75, 79

discoverGroupIds............ 21

readGroup.................. 21, 74

readGroupIdsForPerson. 21

readGroupIdsFromSavePoint 21

readGroups....................... 21

readGroupsFromSavePoint..... 21

removeGroupRelationship 21

replaceGroup 21, 22, 74, 75, 79

updateGroup.................... 21

Membership

changeMembershipIdentifier 27

createByProxyMembership 27

createMembership.......... 27

deleteMembership 27, 28, 74, 75, 79

discoverMembershipIds 27

readAllMembershipIds.. 27

readMembership...... 27, 74

readMembershipIdsForPerson 27

readMembershipIdsFromSavePoint 27

readMembershipIdsPersonWithRole 27

readMemberships........... 27

readMembershipsFromSavePoint 27

replaceMembership 27, 28, 74, 75, 79

updateMembership........ 27

Outcomes

changeLineItemIdentifier 42

changeResultIdentifier... 44

createByProxyLineItem 42

createByProxyResult..... 44

createLineItem................ 42

createResult..................... 44

deleteLineItem 42, 43, 76, 77, 80

deleteResult 44, 45, 76, 77, 80

discoverLineItemIds...... 42

discoverResultIds............ 44

readAllLineItemIds........ 42

readAllResultIds.............. 44

readLineItem............ 42, 76

readLineItemIdsForCourseOffering 42

readLineItemIdsForCourseSection 42

readLineItemIdsForPerson 42

readLineItemIdsFromSavePoint 42

readLineItems................. 42

readLineItemsFromSavePoint 42

readResult.................. 44, 76

readResultIdsForCourseOffering 44

readResultIdsForCourseSection 44

readResultIdsForCourseSectionWithStatus 44

readResultIdsForLineItem 44

readResultIdsForPerson. 44

readResultIdsFromSavePoint 44

readResults....................... 44

readResultsFromSavePoint..... 44

replaceLineItem 42, 43, 76, 77, 80

replaceResult 44, 45, 76, 77, 80

updateLineItem.............. 42

updateResult.................... 44

Person

changePersonIdentifier.. 11

createByProxyPerson..... 11

createPerson..................... 11

deletePerson 11, 12, 74, 75, 79

discoverPersonIds........... 11

readPerson................. 11, 74

readPersonCore............... 11

readPersons...................... 11

replacePerson 11, 12, 73, 74, 75, 79

updatePerson................... 11

Outcomes Management Service 6, 7, 8, 9, 11, 79, 80

P

Person Management Service 2, 3, 6, 7, 8, 11, 74, 75, 79, 82

Profiling.............................. 2, 6, 9

S

SectionAssociation 40, 50, 54, 55, 58, 66, 69, 77, 78

Services

Bulk Data Exchange Management 2, 6, 7, 8, 11, 37, 74, 75, 79

Course Management Service 2, 3, 6, 7, 8, 9, 11, 31, 74, 75, 79, 80, 81, 82

Group Management 2, 3, 6, 7, 11, 21, 74, 75, 79, 82

Membership Management 2, 3, 6, 7, 8, 11, 27, 74, 75, 79, 82

Outcomes Management Service 6, 7, 8, 9, 11, 79, 80

Person Management 2, 3, 6, 7, 8, 11, 74, 75, 79, 82

Specifications

IMS

Enterprise Service

Best Practices & Implementation Guide 8

Status Codes 12, 22, 28, 32, 38, 43, 45, 51, 53, 59, 61, 63, 65

createsuccess 12, 22, 28, 43, 45, 51, 53, 59, 61, 63, 65

deletefailure 12, 22, 28, 32, 43, 45, 51, 53, 59, 61, 63, 65

expireddate........................... 38

fullsuccess 12, 22, 28, 32, 38, 43, 45, 51, 53, 59, 61, 63, 65

idallocinusefail........ 22, 28, 32

incompletedata 12, 22, 28, 32, 38, 43, 45, 51, 53, 59, 61, 63, 65

invaliddata 12, 22, 28, 32, 38, 43, 45, 51, 53, 59, 61, 63, 65

invalidurl............................... 38

linkfailure 12, 22, 28, 32, 38, 43, 45, 51, 53, 59, 61, 63, 65

overflowfail 12, 22, 28, 32, 43, 45, 51, 53

partialdatastorage 12, 22, 28, 32, 43, 45, 51, 53, 59, 61, 63, 65

savepointerror...................... 38

savepointsyncerror.............. 38

targetisbusy 12, 22, 28, 32, 38, 43, 45, 51, 53, 59, 61, 63, 65

targetreadfailure............ 45, 61

unauthorizedrequest 12, 22, 28, 32, 38, 43, 45, 51, 53, 59, 61, 63, 65

unknownextension 12, 22, 28, 32, 43, 45, 51, 53, 59, 61, 63, 65

unknownmdvocabulary 12, 22, 28, 32

unknownobject 12, 22, 28, 32, 43, 45, 51, 53, 59, 61, 63, 65

unknownvocabulary 22, 28, 32

unsupported 12, 73, 74, 75, 77, 78

unsupportedLISoperation 12, 22, 28, 32, 38, 43, 45, 51, 53, 59, 61, 63, 65

W

WDSL........... 2, 6, 7, 8, 72, 82, 83

X

XSD............................ 7, 72, 82, 83

IMS Global Learning Consortium, Inc. (“IMS GLC”) is publishing the information contained in this document (“Specification”) for purposes of scientific, experimental, and scholarly collaboration only.

IMS GLC makes no warranty or representation regarding the accuracy or completeness of the Specification.

This material is provided on an “As Is” and “As Available” basis.

The Specification is at all times subject to change and revision without notice.

It is your sole responsibility to evaluate the usefulness, accuracy, and completeness of the Specification as it relates to you.

IMS GLC would appreciate receiving your comments and suggestions.

Please contact IMS GLC through our website at http://www.imsglobal.org.

Please refer to Document Name: IMS LIS Core Profile s v1.0 Final Release v2.0

Date: 31 December 2011

[1] The Outcomes Management Service is NOT supported as part of the Core Profile;

[2] Every implementation of the Profiles is expected to support the full BDEMS. The service status codes will reflect which parts of the data models are realized by the set of supported services.

[3] This operation must be available to support the conformance testing. It can then be disabled for a released product.

[4] The ‘replacePerson’ operation acts as a ‘createPerson’ in the case that the supplied ‘sourcedId’ is unknown at the Sync Agent.

[5] This operation must be available to support the conformance testing. It can then be disabled for a released product.

[6] The ‘replaceGroup’ operation acts as a ‘createGroup’ in the case that the supplied ‘sourcedId’ is unknown at the Sync Agent.

[7] This operation must be available to support the conformance testing. It can then be disabled for a released product.

[8] The ‘replaceMembership’ operation acts as a ‘createMembership’ in the case that the supplied ‘sourcedId’ is unknown at the Sync Agent.

[9] This operation must be available to support the conformance testing. It can then be disabled for a released product.

[10] The ‘replaceCourseSection’ operation acts as a ‘createCourseSection’ in the case that the supplied ‘sourcedId’ is unknown at the Sync Agent.