The cmi5 Publisher ID
In section 9.6 of the cmi5 specification developers are instructed to include the publisher ID in the context extensions of all cmi5 defined statements. (Specifically see section 188.8.131.52 of the spec.) But if you look in the course structure, you won’t find a cmi5 publisher ID. So what is it?
The answer is that the Publisher ID is the original activity ID provided by the course developer in the course structure. This means that the cmi5 publisher ID is three things:
- When a statement references the course itself, the publisher ID is the “id” property found in the course metadata (see section 13.1.1).
- When a statement references a block, the publisher ID is the “id” property found in the block metadata (see section 13.1.2).
- When a statement references an AU, the publisher ID is the “id” property found in the AU metadata (see section 13.1.4).
LMS Generated Activity ID
In the “object” property of a cmi5 statement, you must never use the cmi5 publisher ID. You should only include the publisher’s ID in the grouping property of context activities. Every other place where the cmi5 spec calls for activityId you must use the LMS provided activityId. This means that the LMS must generate a unique id value for each of the three items listed above: course, block and AU. The generated ID must not match the cmi5 publisher ID. This is defined in the specification in sections 8.1 and 9.3.9.
If you would like to see how the publisher ID and LMS generated activity IDs are used, you can see samples on the cmi5 spec’s GitHub page. For more information on cmi5, be sure and checkout this blog’s xAPI and cmi5 category.