In the past, publishing content to an LMS meant going through a multi-step process of importing content. With Engine, you can publish content directly from an authoring tool in a single click, thanks to its support of PENS (Package Exchange Notification Services).
Enabling PENS
If you're taking advantage of our Managed Hosting services, you'll need to reach out to us at support@rusticisoftware.com, and we'll enable PENS on your environment(s) so you can get started.
If you're self-hosting, you'll need enable Engine to process PENS requests yourself. To do this, configure the AllowedRequests setting to include "Pens_COLLECT". The updated setting value should look like this:
LAUNCH_PAGE, DELIVER_PAGE, RECORD_AICC_RESULTS_PAGE, RECORD_SCORM_RESULTS_PAGE, SUPPORT_PAGES, Pens_COLLECT
Allowing Authoring Tools Access
Authoring tools need two things to be able to connect to Engine and send PENS requests: the URL of Engine's PENS endpoint, and credentials to authenticate access to that endpoint.
PENS Endpoint URL
Engine's default PENS endpoint URL looks something like this:
https://<yourdomain>/RusticiEngine/PENS.jsp?configuration=<yourtenant>
Please note the inclusion of the tenant ID as a query parameter, as it is necessary for Engine to be able to properly import courses.
API Credentials
You'll need to create an API credential which includes the "pens:collect" scope. This scope signifies that any incoming requests using this credential are allowed to access the PENS service. For security purposes, you should ensure that this is the only scope assigned to credentials given to authoring tools.
Here's what a payload to create such a credential might look like:
POST /appManagement/credentials
{
"name": "Test PENS Credential",
"permissions": {
"scopes": ["pens:collect"],
"tenantName": "<your tenant>"
}
}
A successful request to this endpoint will result in a response containing "id" and "secret" fields, which you can then provide the authoring tool to use as credentials.
Dealing with Imported Courses
Since courses imported via PENS are automatically downloaded and imported to Engine without any manual intervention from your system, Engine will generate a course ID in the format "PENS_<guid>"; Your system would need to be able to accommodate using a course id of this format.
Further, due to its hands-free nature, it can sometimes be hard to keep track of when courses are imported via PENS. Thankfully, Engine is able to send postbacks automatically once a course import has completed:
If you're using Engine 22.x or above, you can set up a webhook subscription for the CourseImport topic.
For Engine 21.1.x and below, you'll need to configure your ApiImportResultsPostBackUrl setting point to the URL you'd like to receive postbacks at.
Please note that in both cases, you'll receive postbacks to the specified endpoint for all course imports to Engine, not just those initiated via PENS