DOCUMENT No. CMI010


Guidelines for Package Exchange Notification Services


ORIGINAL RELEASE DATE 2005-June-27

Revision 1.0a release 2006-March-15


THIS DOCUMENT IS CONTROLLED BY:


AICC CMI Subcommittee

ALL REVISIONS TO THE DOCUMENT SHALL BE APPROVED BY THE ABOVE ORGANIZATION PRIOR TO RELEASE.


POINT OF CONTACT:


Scott Bergstrom AICC Administrator

P.O. Box 472

Sugar City, ID 83448-0472


PREPARED ON PC

FILED UNDER CMI010_v1-0a.pdf

Caveats...


2005, 2006 AICC

All rights reserved

The information contained in this document has been assembled by the AICC as an informational resource. Neither the AICC nor any of its members assumes nor shall any of them have any responsibility for any use by anyone for any purpose of this document or of the data which it contains.


This page intentionally left blank.

  1. Specification for Learning Technology—

  2. Package Exchange Notification Services (PENS)


  3. Abstract:

  4. This specification describes a protocol to support a notification service to announce the loca-

  5. tion of content package(s) that are available for transport. The intent is to automate the notifi-

  6. cation, transfer and delivery confirmation of content packages between tools or systems that

  7. generate content and systems that manage, publish or deliver content. The scope of the speci-

  8. fication is specifically constrained to the notification request, package transfer and related re-

  9. sponses. Specifically outside the scope of this specification are mechanisms for physical

  10. deployment of content packages, content management, version control, publication or revoca-

  11. tion of content.

  12. Keywords:

  13. CBT, CMI, CMS, content management, content package, e-learning, LCMS, LMS, notifica-

  14. tion service, package exchange, PENS.

  15. Introduction

  16. The purpose of this specification is to fill a gap that currently exists between the creation of

  17. content packages by “content authors” and the deployment of those content packages on

  18. LMSs by “LMS administrators” where learners may ultimately have access to them. Without

  19. a specification that addresses this gap, the concept of shared content is incomplete: LMSs do

  20. not have a means to obtain newly developed, revised or updated content.

  21. This specification aims to provide a mechanism whereby content that is capable of being

  22. shared can be deployed and thus actually shared in practice. It describes a notification scheme

  23. that will enable a content creator’s authoring system to announce that a content package is

  24. available and ready for transport from a location that it will provide.

  25. The acronym for this specification is PENS: Package Exchange Notification Services. The

  26. PENS data model may be extended in the future to include commands in addition to the cur-

  27. rent “collect” command, which is the first service to be defined. Data elements and value

  28. spaces can be extended as driven by needs and determined in the future by the community of

  29. users.

  30. The scope of the specification is specifically constrained to the notification request, package

  31. transfer and related responses. PENS addresses neither version control nor content manage-

  32. ment; there are no PENS commands to require the recipient to remove, replace, or update ex-

  33. isting packages or elements of packages. PENS provides a contact URI (e.g., email address)

  34. for the recipient to contact the requestor, but PENS does not prescribe a specific workflow for

  35. processing of the transferred package. PENS does not require notifications to the requestor,

  36. other than the specific obligatory confirmation. For illustrative purposes, consider a courier

  37. service as a conceptual model for PENS. Two parties may use the courier service as a means

  38. of requesting pick-up, performing transfer, and confirming delivery. However, it is not incum-

  39. bent on the courier to enforce particular post-processing by the recipient. The recipient may

  40. decide to use the parcel as notification to remove something, add the parcel to stock, or replace

  41. existing stock. All post-delivery processing is determined by the recipient. The recipient sets

  42. its own policy and procedures, and may choose to notify the party that requested delivery of

  43. specific events as it sees fit to do.

  44. Discussion forum

  45. The PENS working group communicates via the AICC web forums. To view PENS-related

  46. documents and comment on them, go to:

  47. http://www.aicc.org/pages/review.htm

48

  1. Participants

  2. At the time this specification was completed, the working group had the following active par-

  3. ticipants:

52


Mike Bednar (Pathlore)

Leonard Greenberg (Pathlore)

Bob Benedict (Macromedia)

Scott Hamilton (Plateau)

Khammao Chang (Documentum)

Joe Herman (Plateau)

Andrew Chemey (Macromedia)

Tom King (Macromedia)

Ed Cohen (Plateau)

Brian Quigley (Documentum)

Shawn Daniels (Recombo)

Paul Roberts (Questionmark)

Ryan Edgar (Documentum)

Heather Walls (Scientific & Technical Editing Services)

Silke Fleischer (Macromedia)

Derek Zasiewski (Documentum)

Steven Forth (Recombo)


53

  1. Corrections

  2. Version 1.0a includes the following corrections:

  3. Section 6.2

  4. The package-url-expiry message element requires a trailing 'Z' to comply with the intent of the

  5. PENS specification which specifies ISO 8601 format with UTC. 59

  1. In the CMI010 Revision 1.0 document, the field is described as ISO 8601 with UTC, but the

  2. example does not properly show the UTC time zone code ('Z'). 62

  1. Erroneous sample value: 2005-07-22T06:51:29

  2. Correct sample value: 2005-07-22T06:51:29Z 65

  1. The CMI010 Revision 1.0a document includes a correct sample value.

  2. Contents

  3. 1 Overview 3

  4. 1.1 Scope 3

  5. 1.2 Purpose 3

  6. 2 References 4

  7. 3 Definitions 4

  8. 3.1 Abbreviations and acronyms 5

  9. 4 Conformance 5

  10. 4.1 Sending implementations (Client Systems) 5

  11. 4.2 Receiving implementations (Target Systems) 5

  12. 4.3 Implementation-defined values 6

  13. 5 Conceptual Model: Informative 6

  14. 5.1 Description of use case 9

  15. 6 Data Model 10

  16. 6.1 Target system for PENS message 12

  17. target system URL 12

  18. 6.2 PENS message elements 12

  19. pens-version 12

  20. command 13

  21. package-type 13

  22. package-type-version 13

  23. package-format 13

  24. package-id 14

  25. package-url 14

  26. package-url-user-id 14

  27. package-url-account 14

  28. package-url-password 15

  29. package-url-expiry 15

  30. client 15

  31. system-user-id 15

  32. system-password 15

  33. receipt 16

  34. alerts 16

  35. vendor-data 16

  36. 6.3 Response and Error Messages 17

  37. PENS Responses 17

  38. PENS Error Messages 17

  39. Appendix A: Binding of PENS to a URI 1

  40. 1 Binding of PENS Message to a URI 1

  41. 1.1 Examples of PENS Messages Bound to a URI 3

  42. Example of collect command (sample not URL encoded, for readability) 3

  43. Example of HTML link for collect command, with the processing/results in a new blank

  44. browser window (URL encoded) 3

  45. Example of PENS receipt command (URL encoded) 3

  46. Example of PENS alert command (URL encoded) 3

  47. 1.2 Binding of PENS Error Message to a URI 4

  48. 2 Sample PENS transaction stream 5

  49. 2.1 Summary 5

  50. 2.2 Actors 5

  51. 2.3 Stages 5

  52. 1. Author creates package and places on web server 5

  53. 2. Author sends COLLECT command to LMS passing URL of package for collection 5

  54. 3. LMS returns RESPONSE to acknowledge that it understood the COLLECT command

  55. 5

  56. 4. LMS collects package from Author's URL 5

  57. 5. LMS sends RECEIPT command to Author to say that the package has successfully

  58. been collected 5

  59. 6. Author returns RESPONSE to acknowledge that it understood the RECEIPT

  60. command 6

  61. 7. LMS opens package 6

  62. 8. LMS sends ALERT command to Author to say that the package has been opened 6

  63. 9. Author returns RESPONSE to acknowledge that it understood the ALERT command6

  64. 10. LMS deploys package 6

  65. 11. LMS sends ALERT command to Author to say that the package has been deployed 6

  66. 12. Author returns RESPONSE to acknowledge that it understood the ALERT command

  67. 7

  68. Bibliography 1

  1. Specification for Learning Technology—

  2. Package Exchange Notification Services


  3. 1 Overview

  4. The scope and purpose of this specification are discussed in 1.1 and 1.2. This specification

  5. describes a protocol to announce the location of content package(s) that are available for

  6. transport. The intent is to automate the notification, transfer and delivery confirmation of con-

  7. tent packages between tools or systems that generate content and systems that manage, publish

  8. or deliver content.


  9. 1.1 Scope

  10. This specification describes a data model and binding to facilitate the transport of e-learning

  11. content between content publishing systems and systems for the delivery of e-learning such as

  12. a learning management system (LMS). This specification describes a notification scheme that

  13. is a communication between the content publishing (or authoring) system and the server man-

  14. aging delivery. It includes data elements to identify the package format and location.

  15. The specification does not specify how the systems must behave after the package is trans-

  16. ferred. The scope is specifically constrained to the notification request, package transfer and

  17. related responses. Specifically outside the scope of this specification are mechanisms for de-

  18. ployment of content packages, content management, version control, publication or revocation

  19. of content. The specification does not provide any mechanism for systems to search for con-

  20. tent packages.

  21. This specification relies on content package formats specified by the Advanced Distributed

  22. Learning (ADL) Initiative and the AICC; the definition of content package formats is outside

  23. the scope of this specification. The binding in Appendix A is modeled on AICC HACP

  24. mechanisms as defined in the AICC data model for Computer Managed Instruction (CMI).


  25. 1.2 Purpose

  26. The purpose of this specification is to provide a means to notify targeted systems of the exis-

  27. tence of content packages that may be of interest to those systems. The notification scheme

  28. defines the format of the message that describes the available content package and from where

  29. it can be retrieved. The intent is to simplify content authoring and deployment by supporting

  30. automation of the transfer of e-learning content between authoring or publishing systems and

  31. systems for managing or deploying content.

  32. 2 References

  33. The following referenced documents are indispensable for the application of this specification.

  34. For dated references, only the edition cited applies. For undated references, the latest edition

  35. of the referenced document (including any amendments) applies.

  36. RFC 1738, “Uniform Resource Locators (URL),” December 1994.

  37. RFC 2368, “The mailto URL scheme,” July 1998.

  38. RFC 2396, “Uniform Resource Identifiers (URI): Generic Syntax,” August 1998.

  39. RFC 2616, “Hypertext Transfer Protocol -- HTTP/1.1,” June 1999.

  40. RFC 2817, “Upgrading to TLS Within HTTP/1.1,” May 2000.

  41. RFC 2822, “Internet Message Format,” April 2001.

  42. ISO 8601:2000 “Data elements and interchange formats -- Information interchange -- Repre-

  43. sentation of dates and times,” Edition 2.


  44. 3 Definitions

  45. For purposes of this specification, the following terms and definitions apply. The AICC Glos-

  46. sary [A3], should be referenced for terms not defined here.

  47. Content Package: The data structures and files used to provide interoperability of digital e-

  48. learning material with authoring tools, LMS products and run-time environments. A content

  49. package typically contains one or more files that list all of the resources included in the pack-

  50. age; data to describe the content structure; data describing prerequisite or sequencing rules,

  51. descriptive metadata, and the supporting files (and/or pointers to external resources) that con-

  52. stitute the e-learning material. Often the components of a content package are combined into a

  53. single-file archive format such as a PKZip v2.04g, conformant to RFC1951.

  54. Client (Sending) System: A system that initiates a PENS request and ensures that a confor-

  55. mant content package is available for delivery. Examples of Client Systems include Authoring

  56. Tools, Learning Content Management Systems, Content Management Systems, Middleware

  57. Systems, Assessment Systems and other systems that can publish content.

  58. Learning Content Management System (LCMS): A computer system that includes and

  59. combines the functions of a Content Repository or Content Management System and a Learn-

  60. ing Management System. The Content Repository functions manage the content and permit

  61. locating stored content, authoring new content, attaching metadata to content, managing ver-

  62. sions of content, etc. The Learning Management System functions administer courses to learn-

  63. ers.

  64. Learning Management System (LMS): A computer system that may include the capabilities

  65. to register learners, schedule learning resources, control and guide the learning process, ana-

  66. lyze and report learner performance, and schedule and track learners.

  67. Target (Receiving) System: A system that receives PENS requests and is responsible for the

  68. transfer and import of content packages. The target system is also responsible for validating

  69. responses, returning error messages and delivering receipts and alerts. Examples of Target

  70. Systems include Learning Management Systems, Learning Content Management Systems,

  71. Content Management Systems, Content Repositories, Middleware and any other system that

  72. can import content for the purpose of managing or delivering content.


  73. 3.1 Abbreviations and acronyms

  74. AICC: Aviation Industry CBT Committee

  75. CBT: Computer-Based Training

  76. CMI: Computer Managed Instruction

  77. CMS: Content Management System

  78. HACP: HTTP AICC Communication Protocol

  79. LCMS: Learning Content Management System

  80. LMS: Learning Management System

  81. PENS: Package Exchange Notification Services

  82. QTI: Question and Test Interoperability

  83. SCORM: Sharable Content Object Reference Model

  84. URI: Uniform Resource Identifier

  85. URL: Uniform Resource Locator

  86. URN: Uniform Resource Name


  87. 4 Conformance

  88. Conformance to this specification is discussed in 4.1 – 4.3.

  89. In this specification, “shall” is to be interpreted as a requirement on an implementation; “shall

  90. not” is to be interpreted as a prohibition.


  91. 4.1 Sending implementations (Client Systems)

  92. A conforming sending implementation shall send data instances that conform to this specifica-

  93. tion and accept responses from target systems as defined in this specification. A conforming

  94. sending implementation shall send all required elements.


  95. 4.2 Receiving implementations (Target Systems)

  96. A conforming receiving implementation shall accept data instances that conform to this speci-

  97. fication and generate the required, valid responses. Data instances that conform to this specifi-

  98. cation include all required elements and may include optional elements.

  99. 4.3 Implementation-defined values

  100. The processing and meanings of values that are not specified by this specification (e.g., senti-

  101. nel, missing, and empty values) are implementation-defined.

  102. NOTE:

  103. For example, implementations may specify the processing or meanings of missing, default

  104. values or sentinel values. A Target System implementation might specify that in the absence of

  105. another value, an empty password value indicates no password is required.


  106. 5 Conceptual Model: Informative

  107. Synopsis of the package exchange notification services (PENS) model:

  108. A notification is sent from a content source (such as an authoring tool, CMS or

  109. LCMS) to a Target System (central deployment or repository system such as a CMS,

  110. LCMS or LMS).

  111. The notification announces the availability and location of a content package that is

  112. available for transport.

  113. The notification represents the first step in initiating the Target System workflow to

  114. transfer and import a content package.

  115. Notification mechanism details:

  116. Suggested notification mechanism binding: HTTP-GET or HTTP-POST of name-

  117. value pairs (see Appendix A, “Binding of PENS Message to a URI”).

  118. NOTE:

  119. According to RFC 2616 (June 1999), section 3.2.1, “The HTTP protocol does not place any a

  120. priori limit on the length of a URI. Servers MUST be able to handle the URI of any resource

  121. they serve, and SHOULD be able to handle URIs of unbounded length if they provide GET-

  122. based forms that could generate such URIs. A server SHOULD return 414 (Request-URI Too

  123. Long) status if a URI is longer than the server can handle. (Servers should be cautious about

  124. depending on URI lengths above 255 bytes, because some older client or proxy implementa-

  125. tions may not properly support these lengths.)” Also see RFC 2817, Upgrading to TLS within

  126. HTTP/1.1, as an update to RFC 2616.

  127. The definitive reference for HTTP-GET and HTTP-POST is:

  128. http://www.w3.org/Protocols/Overview.html

  129. Notification modes: can be server-to-server, or server via browser window to server

  130. (HTTP-GET only).

  131. Responsibilities of sender: The content source (herein referred to as the “Client”)

  132. shall arrange for the content package to be made available on a staging server. The

  133. Client shall be capable of specifying a URI that uses HTTP, or HTTPS (secure HTTP)

  134. protocols. The Client may optionally support specifying FTP and FTPS (secure FTP)

  135. protocols and the related access credentials.

  136. NOTE:

  137. It is assumed that the particular configuration of the staging server may be determined by a

  138. third party and therefore is not controlled by the content developer (Client). It is further as-

  139. sumed that if content is staged on the server via FTP that it does not have to be retrieved via

  140. FTP, but could be retrieved via an HTTP alias. Such provisions allow cases such as the transfer

  141. to the staging location via FTP and retrieval via an HTTP equivalent or alias to the same loca-

  142. tion.

  143. Password: If required by the Client’s system, the notification may include a password

  144. needed to access the content package.

  145. Responsibilities of recipient of notification (Target System):

  146. The notification recipient (herein referred to as the “server”) shall be capable of sup-

  147. porting both HTTP and HTTPS protocols for the “pull” or “get” transfer of the content

  148. package from the URI provided by the Client. The server may optionally support the

  149. retrieval of packages specified with FTP or FTPS protocols and appropriate access

  150. credentials. In such cases where the server does not support one or more optional pro-

  151. tocols, the server is obligated to return the appropriate error message regarding the re-

  152. quested protocol.

  153. Once the content package is retrieved, store or deploy it (for example, make available

  154. via a catalog of resources for a course).

  155. Illustrative use case:

  156. A use case for this specification is shown in Figure 1.

  157. Client (authoring system) creates and prepares a content package.

  158. Client sends a PENS message to Target System (e.g., an LMS), announcing the avail-

  159. ability of the content package.

  160. Target System acknowledges PENS message.

  161. Target System collects and processes content package.


295

296

297


Figure 1— Conceptual model, Content System-to-Target System communication

  1. 5.1 Description of use case

  2. The diagram (Figure 1 above) illustrates the phases that need to occur between a Client Sys-

  3. tem and a Target System to issue and process a collect command that transfers a content pack-

  4. age.

  5. Preparing the content package and issuing a PENS command

  6. Assume a content author has created some learning content. A content package has been pre-

  7. pared and staged by the Client (the authoring system) at a transfer URL (an HTTP site or FTP

  8. site) from where it can be collected. The Target System that may ultimately retrieve the cli-

  9. ent’s content package is typically a CMS, LMS or LCMS product.

  10. NOTE:

  11. The Client may use FTP or other mechanisms to transfer content to a staging location, yet

  12. specify an HTTP URI equivalent as the package-url for retrieval. There is no requirement that

  13. the retrieval protocol must match the method used to stage the content. Content staged on the

  14. server via FTP could be retrieved via an HTTP alias. Best practices indicate that HTTP is the

  15. preferred transport protocol for the package-url.

  16. The Client System then sends a message that contains the PENS “collect” command to the

  17. Target System (CMS, LMS, LCMS, etc.) via HTTP. This Package Exchange Notification

  18. Services (PENS) message includes the elements detailed in the table in 6.2. These PENS ele-

  19. ments provide information about the type of content package, where it is available, how to

  20. communicate with the client and other parameters. The vendor-data element is available for

  21. optional data defined by the target system implementation. This implementation-specific data

  22. might be used to provide information from the content provider about how a target system is

  23. to act on a package after retrieval.

  24. Next, the Target System (e.g., LMS) validates the PENS message (transfer URL, content

  25. package expiration date, any required access credentials or passwords, etc.) and sends an

  26. HTTP response back to the Client System. (An HTTP error code is sent if there was a problem

  27. with the PENS message. See 6.3, Response and Error Messages.) This response simply ac-

  28. knowledges that the PENS collect command was understood; it does not imply that processing

  29. to actually retrieve the package has commenced.

  30. NOTE:

  31. In another scenario, the Client System could open a browser window to send the PENS mes-

  32. sage, and the HTTP response from the Target System would be returned to there.

  33. Collecting the content package

  34. If a server receives a valid collect command, the server can attempt to retrieve the package

  35. from the transfer URL via FTP, HTTP or HTTPS. (NOTE: per best practices, HTTP is the

  36. preferred protocol for package retrieval.) After attempting to retrieve a package, the server

  37. sends a response to the specified receipt URL, either acknowledging successful collection of

  38. the package or reporting an error. Receipt responses can be sent to one or more email ad-

  39. dresses if so specified in the PENS message.

  40. The format of the receipt message sent to the specified receipt URL is not fully defined, but

  41. should include relevant data from the inbound Collect Command, such as the package type,

  42. package id, and client, plus the receipt message itself.

  43. If an error has occurred, an error message should be sent to the receipt URL. The “pens-data”

  44. portion of the error message could include extended information about the nature of the error

  45. (such as a stack trace of what happened during the attempted communication). See Section

  46. 6.3 Response and Error Messages for details.

  47. Opening and deploying a content package

  48. The recipient system will proceed with internal processing, such as opening the package, ap-

  49. proving the content for release, listing the new content in a catalog, staging the content on a

  50. deployment server, etc.

  51. NOTE:

  52. Internal processing phases, workflow and alert triggers are implementation-specific and are

  53. outside the scope of this specification. However, the ‘vendor-data’ may supply useful hints

  54. from the content provider about how particular recipient systems are to act on the package sub-

  55. sequent to retrieval.

  56. If an alert URL has been provided, the server may send alerts to the Client about the status of

  57. the package as it progresses through these various processes. For example, an “alert” message

  58. may be sent to the content authoring management staff (the Client) so that where the retrieved

  59. content is being cataloged, deployed, etc., can be monitored. Alerts can be sent to one or more

  60. email addresses.

  61. The format of the alert message(s) sent to the specified alert URL is not fully defined, but

  62. should include relevant data from the inbound Collect Command, such as the package type,

  63. package id, and client, plus the alert message itself.


  64. 6 Data Model

  65. This defines the PENS data model that enables the sending of a notification message from au-

  66. thoring tools to target systems to announce the description and location of content packages

  67. that are available for transfer.

  68. This specification does not define which servers are notified, nor does it define what happens

  69. to any package that has been retrieved.

  70. The table below summarizes the components of the model, which are then defined in the sub-

  71. sections indicated.


Component

Required

Data Type

Sub- section

target system URL

Yes

URL

6.1.1

pens-version

Yes

x.x.x (string of three integers separated by periods)

6.2.1

command

Yes

Reserved words, pre-defined character strings

6.2.2

package-type

Yes

Reserved words, pre-defined character strings

6.2.3

package-type-version

Yes

Character string

6.2.4

package-format

Yes

Character string

6.2.5

package-id

Yes

A URI according to RFC 2396

6.2.6

package-url

Yes

URL, URL-encoded string

6.2.7

package-url-user-id

No

Character string

6.2.8

package-url-account

No

Character string

6.2.9

package-url-password

No

Character string

6.2.10

package-url-expiry

Yes

ISO 8601 format expressed as UTC

6.2.11

client

Yes

Character string

6.2.12

system-user-id

No

Character string

6.2.13

system-password

No

Character string

6.2.14

receipt

Yes

Character string

6.2.15

alerts

No

Character string

6.2.16

vendor-data

No

Character string

6.2.17



369


370

ASSUMPTIONS/NOTES:

371

1—The authoring tool has a method for sending the messages/password to the target system

372

URL; automatic discovery of the package by LMSs is out of scope.

373

2—Messages/passwords are sent as clear text; encryption and security issues are out of scope.

374

3—PENS message focuses on the transport and overall package type.

375

4—Receiving system sends an HTTP acknowledgement of message receipt.

376

5—After a package transfer is achieved, receiver responds with an acknowledgement or an er-

377

ror message to a receipt URI.

378

6—How the package is processed upon retrieval is left to the Target System implementation.

379

Notifications of processing errors or events shall be sent to the alert URI.

380

7—Acknowledgment and Error responses shall be in the format specified in 6.3, Response and

381

Error Messages. (Format is similar to AICC HACP error responses.)

382

8—This specification does not define an extension mechanism for the data model. Implemen-

383

ters may create additional data models for package exchange notification. Such models may be

384

used to augment this model to support different communities of practice.

  1. 6.1 Target system for PENS message


  2. This is a sample URL for a system that might receive and process a valid PENS command.


    6.1 Target system for PENS message



    target system URL


    Required:

    Yes

    Data type:

    URL

    Description:

    Fully qualified URL of target system that will perform processing.

    Value space:

    Valid, fully qualified URI, including transport protocol (e.g., http://)

    Example:

    http://acmelearning.lms.com

  3. 6.2 PENS message elements

  4. Reserved words:

  5. The following words are not utilized in this version of PENS, but are reserved for use in sub-

  6. sequent versions as potential candidates for PENS commands.

  7. Delete

  8. Revise

393


pens-version

Required:

Yes

Data type:

x.x.x (string of three integers separated by periods)

Description:

Version of package exchange notification service protocol used by client submitting the package.

Value space:

Values defined by releases of the specification

Sample element value:

1.0.0


command

Required:

Yes

Data type:

Reserved words, pre-defined character strings

Description:

Command for an action that client submitting the package is re- questing for the target system to perform. May include the capabil- ity to perform a preview of the content in the system’s run-time environment.

Value space:

Fixed values defined by specification.

Vocabulary:

At this time only “collect” is defined. See 6.2 for reserved words. collect: To retrieve a content package from a designated server.

Sample element value:

collect

package-type

Required:

Yes

Data type:

Reserved words, pre-defined character strings

Description:

Allowable types of content packages. Other types: AICC assign- able unit (aicc-au) or SCORM package (scorm-pif).

Value space:

Fixed values defined by specification.

Vocabulary:


aicc-pkg:

scorm-pif:

lms-qti:

Sample element value:

aicc-pkg

package-type-version

Required:

Yes

Data type:

Character string

Description:

Identifies the version of the packaging specification relevant for the package to be processed, e.g., for ADL SCORM “scorm-pif” packages, a system might use “1.2” or “2004”.

Value space:

Values defined by associated package spec releases, such as ADL SCORM, AICC CMI, or IMS QTI specifications.

Sample element value:

1.0

package-format

Required:

Yes

Description:

Identifies a package as being one of the allowable package archive


Data type:

Character string

formats or resource types.

Value space:

Values defined by package archive format or resource types. Re- served values include: “zip”, “url”, “jar”, “war”, and “xml”.

Sample element value:

zip

package-id

Required:

Yes

Data type:

A URI according to RFC 2396

Description:

Unique identifier required for package; package-id shall be a URI consisting of two parts, a globally unique namespace taken from the URL associated with the product or the service generating the ID plus an ID unique within the service itself.

Value space:

Any URI according to RFC 2396 with the additional requirement that the URI shall be constructed such that its namespace is the URL associated with the product or service generating the ID and the id of the package is unique within that namespace.

Sample element value:

http://myurl.com:2631e419-1573-4720-b4c6-8701f960dccc

package-url

Required:

Yes

Data type:

URL, URL-encoded string

Description:

Location of package archive ready for transfer/action.

Value space:

Valid, fully qualified URL, including transport protocol (e.g., http:// or ftp://) and filename including extension.

Sample element value:

http://myauthoringtool/mycontentpackage.zip

package-url-user-id

Required:

No

Data type:

Character string

Description:

User id required for system to retrieve package from URL.

Value space:

Null string or character string.

Sample element value:

(null string)

package-url-account

Required:

No

Data type:

Character string

Description:

Account required for system to retrieve package from URL.

Value space:

Null string or character string.

Sample element value:



(null string)

package-url-password

Required:

No

Data type:

Character string

Description:

Password required for system to retrieve package from URL.

Value space:

Null string or character string.

Sample element value:

(null string)

package-url-expiry

Required:

Yes

Data type:

ISO 8601 format expressed as UTC

Description:

The package is expected to be available for processing until at least the date and time specified.

Value space:

Null string or character string.

Sample element value:

2005-07-22T06:51:29Z

client

Required:

Yes

Data type:

Character string

Description:

Name or ID for client submitting the content package to the target system. Other examples: PerceptionForWeb; Captivate.

Value space:

Null string or character string.

Sample element value:

Authorware7

system-user-id

Required:

No

Data type:

Character string

Description:

User id or sign-on for target system, or a null string.

Value space:

Null string or character string.

Sample element value:

tk007

system-password

Required:

No

Data type:

Character string

Description:

Either a URL-encoded password token or the null string. If the target system requires a password and the null string value is passed, then the target system is responsible for prompting for a password for target system.

Value space:



Null string or character string.

Sample element value:

(null string)

receipt

Required:

Yes

Data type:

Character string

Description:

URL to send acknowledgement receipt after collecting a package; if “mailto:” URL is used, it may include more than one address, with addresses separated by commas per RFC 2368 and RFC 2822.

Value space:

Any URL, including “mailto:” URL scheme per RFC 2368 and RFC 2822.

Sample element value:

mailto:name@domain.com

alerts

Required:

No

Data type:

Character string

Description:

URL to send alerts to while processing the package (after the ac- knowledgment to ‘receipt’ URL). If the alert URL is a “mailto:” URL, it may include more than one address, with addresses sepa- rated by commas per RFC 2368 and RFC 2822. The alert response format is the same as that for ‘receipt’.

NOTE: Unlike the receipt URL, “alerts” is optional and multiple messages may be sent to the alert URL over an extended period as the package is processed through the host workflow.

Value space:

Any URL, including “mailto:” URL scheme per RFC 2368 and RFC 2822.

Sample element value:

mailto:name@domain.com

vendor-data

Required:

No

Data type:

Character string

Description:

Unstructured character string that may be used to transfer vendor- specific data such as processing hints or deployment information.

NOTE: Conforming implementations of target systems shall be capable of processing valid PENS commands containing this ele- ment, regardless of the system’s ability to parse or act on the value. The value of this element is likely to be unique across im- plementations. PENS alerts are the mechanism for systems to pro- vide acknowledgements or warnings regarding vendor-data values.

Value space:



Null string or character string, Smallest Permitted Maximum, 4096 characters

NOTE: Size may increase if URL-encoding is a requirement of a particular binding.

Sample element value:

(null string)

  1. 6.3 Response and Error Messages

  2. Various communication problems can occur between the client offering the package and the

  3. potential receiving (collecting) systems. Responses and error messages provide a means of

  4. acknowledge and communication of processing errors. 398

  1. PENS Responses

  2. The receipt and alert URI may use http:// or mailto: protocols. If the HTTP protocol is used,

  3. the system receiving the message shall respond with an HTTP response. A response is not re-

  4. quired for mailto: URI for either receipt or alert.

  5. Sample responses below are informative only and do not represent requirement specifications.

  6. See Appendix A for URI binding information specifications. 405

  1. Sample HTTP response to COLLECT command:

  2. error=0

  3. error-text=collect command received and understood

  4. version=1.0.0

  5. pens-data=

411

  1. Sample HTTP response to RECEIPT command:

  2. error=0

  3. error-text=receipt command received and understood

  4. version=1.0.0

  5. pens-data=

417

  1. Sample HTTP response to ALERT command:

  2. error=0

  3. error-text=alert command received and understood

  4. version=1.0.0

  5. pens-data=

423

  1. PENS Error Messages

  2. An error code shall be used to acknowledge successful processing or to indicate a processing

  3. error. In the case of a processing error, the error code shall indicate the class of error as spe-

  4. cifically as possible using either a PENS specific error code or an error code from the underly-

  5. ing protocol, as indicated in table1, table 2, and table 3 below. The binding specification for

  6. error code communication is in Appendix A. 430

431 Table 1 —Response Error Codes

Code Number

Error Text

0

No error, successful

other

See errors as listed in

Table 3 – Specific Error Codes

432

  1. Error codes are integers represented as character strings, in the range of 0 to 65, 535. Unspeci-

  2. fied error codes in the range of 0 to 10000 are reserved for use in future editions of the PENS

  3. specification. Error codes with numbers 10000 and above are reserved for implementation-

  4. defined error messages.

  5. NOTE:

  6. The error code numbering scheme was established such that PENS codes start at 1000 to avoid colli-

  7. sion with established error codes for underlying protocols (such as 400 series HTTP error codes). These

  8. underlying codes shall be used when they are indicative of the error encountered.

  9. Table 2 — Classification of Error Codes

Range

Error Type

100 to 200


200 to 500

Underlying protocol errors, e.g., HTTP errors

1000 to 1199

General PENS errors

1200 to 1299

PENS syntax errors

1300 to 1399

PENS transport errors

1400 to 1499

Host system errors

1500 to 1599

Acknowledgement and Alert errors

2000 to 9999

PENS parameter errors

442

443 Rationale: Errors are listed in increasing specificity; systems are to respond with highest num-

444 bered error encountered. Error codes designated as warnings may allow some degree of pack-

445 age processing (may not be fatal errors).

446 Table 3— PENS-Specific Error Codes

Code Number

Name

Descriptive Text

1101

General error

Unable to parse PENS command




1201

General argument error

Attempt to pass an invalid argument




1301

General retrieve error

Unable to retrieve package

1302

Secure HTTP protocol not sup- ported

Unable to retrieve package via HTTPS

1304

FTP protocol not supported

Unable to retrieve package via FTP

1306

Secure FTP protocol not supported

Unable to retrieve package via FTPS

1310

Invalid or unresponsive package URL

Unable to retrieve package at specified URL due to error in URL or lack of response from URL

1312

Invalid package access credentials

Unable to retrieve package at specified URL due to error with access credential for package URL

1320

Warning - invalid expiry date

Expiration date is non-null and in an improper format

1322

Warning - expired package

Current time indicates expiry date has passed




1420

PENS version not supported

Insufficient permission

1421

Command not supported

Client has requested host to execute an inva- lid, unknown or unsupported command

1430

Package type not supported

Client has requested host to process an inva- lid, unknown or unsupported package type

1432

Internal package error

Host unable to process package after success- fully retrieving it because of an error with package archive or package contents

1440

Insufficient host space/storage avail- able

Host unable to process package due to local storage space or account restrictions




1500

General acknowledgment error

Unable to communicate with provided ac- knowledgement URL


1510

Unsupported acknowledgement pro- tocol

Unsupported acknowledgement protocol

1520

Unsupported alert protocol

Unsupported alert protocol




2001

pens-version parameter missing

Message incomplete; PENS version invalid or not specified

2002

command parameter missing

Message incomplete; PENS command invalid or not specified

2003

package-type parameter missing

Message incomplete; package-type invalid or not specified

2004

package-type-version parameter missing

Message incomplete; package-type-version invalid or not specified

2005

package-format parameter missing

Message incomplete; package-format invalid or not specified

2007

package-id parameter missing

Message incomplete; package-id invalid or not specified

2008

package-url parameter missing

Message incomplete; package-url invalid or not specified

2009

package-url-expiry parameter miss- ing

Message incomplete; package-url-expiry date invalid or not specified

2010

client parameter missing

Message incomplete; client submitting pack- age invalid or not specified

2011

receipt parameter missing

Message incomplete; where to send response invalid or not specified

447

  1. Appendix A: Binding of PENS to a URI

  2. 1 Binding of PENS Message to a URI

  3. The PENS message shall be a valid URI [RFC 1738 and RFC 2396].

  4. The URI shall consist of 4 components, as described in RFC 2396,

  5. <scheme>://<authority><path>?<query>

  6. The target system URL from the PENS data model (6.1) shall be used to create the <scheme>,

  7. <authority> and <path> portions of the URI.

  8. This portion of the URI shall be followed by the ASCII character “?” to indicate the start of

  9. the <query> component of the URI, as per RFC 2396.

  10. The query component of the URI shall be an unordered list of message elements.

  11. Each element shall contain an element name, as specified in 6.2, followed by the ASCII char-

  12. acter “=” followed by the value for the message element. The value for the message element

  13. shall be the lexical character encoding of the value from the value space for the elements de-

  14. fined in 6.2. Message elements shall be separated by the ASCII character “&”.

  15. query = message element * (“&” message element)

  16. message element = pens element name “=” lexical element value

  17. The entire URI shall be URI-encoded as per RFC 1738 and RFC 2396. Examples of message

  18. element values, properly URI-encoded, are shown in the table below.

  19. Table A-1 — Examples of Binding of Individual PENS Message Elements

    PENS Message Element Name

    Example URI Binding

    Sub- section

    pens-version

    pens-version=1.0.0

    6.2.1

    command

    command=collect

    6.2.2

    package-type

    package-type=aicc-pkg

    6.2.3

    package-type-version

    package-type-version=1.0

    6.2.4

    package-format

    package-format=zip

    6.2.5

    package-id

    package-id=http%3A%2F%2Fmyurl.com %3A2631e419- 1573-4720-b4c6-8701f960dccc

    6.2.6

    package-url

    package-url= http%3A%2F%2Fmyauthoringtool%2Fmycontentpackage.zip

    6.2.7

    package-url-user-id

    package-url-user-id=

    6.2.8


    package-url-account

    package-url-account=

    6.2.9

    package-url-password

    package-url-password=

    6.2.10

    package-url-expiry

    package-url-expiry=2005-07-22T06%3A51%3A29

    6.2.11

    client

    client=Authorware7

    6.2.12

    system-user-id

    system-user-id=tk007

    6.2.13

    system-password

    system-password=

    6.2.14

    receipt

    receipt=mailto%3Aname%40domain.com

    6.2.15

    alerts

    alerts=mailto%3Aname%40domain.com

    6.2.16

    vendor-data

    vendor-data=preview-mode%3Ainstructor

    6.2.17

  20. NOTE:

  21. For the URI binding, the best practice is to use HTTP POST to issue the PENS message. Use of POST

  22. avoids a potential issue with two query separators (“?”) in the PENS message URI when the target sys-

  23. tem URL itself uses the format

  24. <scheme>://<authority><path>?<query>

  25. (example: Target System URL is http://acmelearning.lms.com?partition=staging1).

473

  1. NOTE:

  2. For cases when either the alert or the receipt value specifies the “mailto:” protocol the following best

  3. practice is recommended for the corresponding return command message in email format.

  4. 1. Use a valid email address of an account associated with the system issuing the response for the

  5. sender and reply-to email addresses

  6. 2. Use a suitable human-readable subject line for the email.

  7. 3. Place any optional, implementation-specific information for the recipient in the body of the

  8. message before the PENS response data, Use a carriage return linefeed pair to separate this in-

  9. formation from the PENS response data.

  10. 4. Include all required data element names and the corresponding values of the PENS response in

  11. the body of the email. Preferred formatting is a data element name followed by “=” then the

  12. corresponding value with a carriage return line feed pair after the value.

  13. 5. As indicated in Section 5.1, the format of the alert message is not fully defined, but should in-

  14. clude relevant data from the inbound Collect Command, such as the package type, package id,

  15. and client, plus the alert message value itself.

  16. 6. The email format is not fully defined. Implementers are encouraged to use the http: or https:

  17. protocol for automated processing of inbound alerts and receipts; machine-based automated

  18. processing of inbound email is discouraged.

492

  1. 1.1 Examples of PENS Messages Bound to a URI

  2. In the examples that follow, line breaks are not significant; line breaks appear only so that the

  3. examples would fit on a printed page.

  4. Example of collect command (sample not URL encoded, for read-

  5. ability)

  6. http://acmelearning.lms.com/pens?pens-version=1.0.0

  7. &command=collect&package-type=aicc-pkg&package-type-

  8. version=1.0&package-format=zip&package-id=http://myurl.com:

  9. 2631e419-1573-4720-b4c6-8701f960dccc&package-url=http:// myau-

  10. thoringtool/mycontentpackage.zip&package-url-user-id=&package-

  11. url-account=&package-url-password=&package-url-expiry=2005-07-

  12. 22T06:51:29&client=Authorware7&system-user-id=tk007&system-

  13. password=&receipt=mailto:name@domain.com

  14. &alerts=mailto:name@domain.com

  15. Example of HTML link for collect command, with the process-

  16. ing/results in a new blank browser window (URL encoded)

  17. <a href="http://acmelearning.lms.com/pens?pens-version=

  18. 1.0.0&command=collect&package-type=aicc-pkg&package-type-

  19. version=1.0&package-format=zip&package-id=http%3A%2F%2F

  20. myurl.com%3A2631e419-1573-4720-b4c6-8701f960dccc &package-

  21. url=http%3A%2F%2Fmyauthoringtool%2Fmycontentpackage.zip

  22. &package-url-user-id=&package-url-account=&package-url-

  23. password=&package-url-expiry=2005-07-22T06%3A51%3A29

  24. &client=Authorware7&system-user-id=tk007&system-password=

  25. &receipt=mailto%3Aname%40domain.com&alerts=mailto%3Aname%40dom

  26. ain.com" target="_blank">Submit Package</a>

  27. Example of PENS receipt command (URL encoded)

  28. http://author.com/pens.cgi?command=receipt&pens-version=

  29. 1.0.0&package-type=scorm-pif&package-type-version=1.2

  30. &package-format=zip&package-id=http%3A%2F%2Fmyurl.com

  31. %3A994646572378864600-1085069139609&package-url=

  32. http%3A%2F%2Fauthor.com%2Fpackages%2F1085069139609.zip

  33. &package-url-expiry=2005-05-20T16%3A05%3A39Z&client=LMS

  34. &error=0&error-text=package%20sucessfully%20collected

  35. Example of PENS alert command (URL encoded)

  36. http://author.com/pens.cgi?command=alert&pens-version=

  37. 1.0.0&package-type=scorm-pif&package-type-version=1.2

  38. &package-format=zip&package-id=http%3A%2F%2Fmyurl.com

  39. %3A994646572378864600-1085069139609&package-url=

  40. http%3A%2F%2Fauthor.com%2Fpackages%2F1085069139609.zip

  41. &package-url-expiry=2005-05-20T16%3A05%3A39Z&client=LMS

  42. &error=0&error-text=package%20sucessfully%20deployed

  43. 1.2 Binding of PENS Error Message to a URI

  44. The Error Message Format is defined in Table A-2; HTTP Response Error Codes are given in

  45. Section 6.3 Table 1; Classification of PENS Error Codes and Descriptive Text representing

  46. specific error situations are listed in Section 6.3 Tables 2 and 3.

  47. Table A-2 — Response & Error Message Format

<Name>

<Value>

error=

<pens error code number><CR LF>

error-text=

<pens error description><CR LF>

version=

<pens spec version><CR LF>

pens-data=

<pens data>

<end of buffer>

540

  1. Example:

  2. error=0

  3. error-text=

  4. version=1.0.0

  5. pens-data=

546

  1. The <value> data is in plain text, and is not URL-encoded.

  2. The end-of-line marker is CR LF (carriage return linefeed) per RFC 2616: HTTP/1.1.

  3. CR = <US-ASCII CR, carriage return (13)>

  4. LF = <US-ASCII LF, linefeed (10)>

  5. The hexadecimal values for CRLF acronyms for ASCII systems are OD, OA; hexadecimal

  6. mapping for Unicode systems is OxOD, OxOA (per Unicode Technical Report #13, “Unicode

  7. Newline Guidelines”).

  8. For http responses, the content type in the HTTP content header should be “Content:

  9. text/plain” with the <CR><LF> pairs as indicated.

  10. 2 Sample PENS transaction stream

  11. 2.1 Summary

  12. Outline example showing PENS commands and responses during the lifecycle of the success-

  13. ful deployment of a package from an Author to an LMS.


  14. 2.2 Actors

  15. Author - http://author.com/pens.cgi - Creates packages to send to LMS

  16. LMS - http://lms.com/pens.cgi - Receives packages from Author to deploy and deliver


  17. 2.3 Stages

  18. 1. Author creates package and places on web server

565

  1. 2. Author sends COLLECT command to LMS passing URL of pack-

  2. age for collection

  3. http://lms.com/pens.cgi?command=collect&pens-

  4. version=1.0.0&package-type=scorm-pif&package-type-

  5. version=1.2&package-format=zip&package-id=

  6. http%3A%2F%2Fwww.author.com%3A994646572378864600-

  7. 1085069139609&package-

  8. url=http%3A%2F%2Fauthor.com%2Fpackages%2F1085069139609.zip&pac

  9. kage-url-expiry=2005-05-20T16%3A05%3A39Z&client=Author

  10. &receipt=http%3A%2F%2Fauthor.com%2Fpens.cgi

  11. &alerts=http%3A%2Fauthor.com%2Fpens.cgi

  12. 3. LMS returns RESPONSE to acknowledge that it understood the

  13. COLLECT command

  14. error=0

  15. error-text=collect command received and understood

  16. version=1.0.0

  17. pens-data=

  18. 4. LMS collects package from Author's URL

584

  1. 5. LMS sends RECEIPT command to Author to say that the pack-

  2. age has successfully been collected

  3. http://author.com/pens.cgi?command=receipt&pens-

  4. version=1.0.0&package-type=scorm-pif&package-type-

  5. version=1.2&package-format=zip&package-id=

  6. http%3A%2F%2Fwww.author.com%3A994646572378864600-

  7. 1085069139609&package-

  8. url=http%3A%2F%2Fauthor.com%2Fpackages%2F1085069139609.zip&pac

  9. kage-url-expiry=2005-05-20T16%3A05%3A39Z&client=LMS

  10. &error=0&error-text=package%20sucessfully%20collected

595

  1. 6. Author returns RESPONSE to acknowledge that it understood

  2. the RECEIPT command

  3. error=0

  4. error-text=receipt command received and understood

  5. version=1.0.0

  6. pens-data=

  7. 7. LMS opens package

603

  1. 8. LMS sends ALERT command to Author to say that the package

  2. has been opened

  3. http://author.com/pens.cgi?command=alert&pens-

  4. version=1.0.0&package-type=scorm-pif&package-type-

  5. version=1.2&package-format=zip&package-id=

  6. http%3A%2F%2Fwww.author.com%3A994646572378864600-

  7. 1085069139609&package-

  8. url=http%3A%2F%2Fauthor.com%2Fpackages%2F1085069139609.zip&pac

  9. kage-url-expiry=2005-05-20T16%3A05%3A39Z&client=LMS

  10. &error=0&error-text=package%20sucessfully%20opened

  11. 9. Author returns RESPONSE to acknowledge that it understood

  12. the ALERT command

  13. error=0

  14. error-text=alert command received and understood

  15. version=1.0.0

  16. pens-data=

  17. 10. LMS deploys package

621

  1. 11. LMS sends ALERT command to Author to say that the package

  2. has been deployed

  3. http://author.com/pens.cgi?command=alert&pens-

  4. version=1.0.0&package-type=scorm-pif&package-type-

  5. version=1.2&package-format=zip&package-id=

  6. http%3A%2F%2Fwww.author.com%3A994646572378864600-

  7. 1085069139609&package-

  8. url=http%3A%2F%2Fauthor.com%2Fpackages%2F1085069139609.zip&pac

  9. kage-url-expiry=2005-05-20T16%3A05%3A39Z&client=LMS

  10. &error=0&error-text=package%20sucessfully%20deployed

  11. 12. Author returns RESPONSE to acknowledge that it understood

  12. the ALERT command

  13. error=0

  14. error-text=alert command received and understood

  15. version=1.0.0

  16. pens-data=

  17. Bibliography


639

[A1]

AICC CMI001, CMI Guidelines For Interoperability, Version 3.4, April 2001.

640

[A2]

SCORM – http://www.adlnet.org/index.cfm?fuseaction=scormabt

641

[A3]

AICC CRS002, Glossary of Terms Related to Computer Based Training (CBT)

642