This is the functional manual for the LMS+ system, designed to be read by super-admin only.
Updated January 2020
This is the main dashboard for the administration where you are positioned upon logging in. On the left-hand side of a list of commonly accessible areas within the site. The last accessed companies are listed for easy reference (this is maintained on a per-user basis). Some high-level stats are presented here for easy reference.
The company is the entity for managing customers. This is the area to which you can interact and change the attributes with a company. The only thing that can't be changed is the company type. The company ID is a unique, non guessable, 22 character string.
The journal is an area to take notes on the company. Only super-admins can see the journal entries, which are dated and marked by each super-admin that makes them.
For internal use only, this area lets you capture information about the company including the address, email and phone number. The Account Manager is the primary contact from the list of super-admins who manages this account.
The notifications are set on a per-user basis. The section will show your personal notification settings.
As a super-admin you can go and look at an administrators notification levels, and set them accordingly on behalf of a user.
Various pre-canned reports that operate at the company level only. Each of these reports have specific filters and options associated with them, and each report can be downloaded as an Excel XLS, or setup as a scheduled event to be emailed on a periodic basis.
Lists all the courses that are currently in use by this company, complete with their usage statistics. Overview report.
Overview of all the Access Codes (and their child access codes), their associated library, expiration and the amount of allocations. Individual access codes are not available in this report.
List of all the users that have at least started a course, and their current stage. There is a wide range of filters to choose from to narrow down this report to the area of interest. Clcik on the user will take you to their support page where you can interact with the data in a more detailed manner.
All users registered for this company, irrespective if they have started a course or not. Very similiar in action to the 'Assessment' report.
These are free-form fields where you can store information on the client contact person.
Enter the invoice and order number as generated by other system (Salesforce, Quickbooks, Great Plains, etc.)
Lists all products associated with this sales order.
Click the + button on the left of the Product Table to open the New Product modal.
The modal that pops up has options for creating a new Access Code, top up an existing code, or add certificates to the current sales order
For creating a new access code you have to select the Library, Access Code (which students use to sign up), and Quantity.
The three optional fields lets you adjust the registration expiration date, days to complete, and date to complete, if you need to.
You can add more than one Access Code by clicking the "Add Access Code" button.
The bottom most part lets you apply discounts as per the discount table, adjust prices and perform calculations as you need. The value in "Total" is what will be applied to the Sales Order as a whole.
Use this option for adding / topping up an existing Access Code.
Select the Master Access Code to top up in the dropdown marked "Master Access Code" and set the Quantity. Use the bottom most section as above.
When adding certificates, you simply select the quantity.
Adjust the pricing on the bottom row as before, and click Apply when done.
These settings affect the Sales Order as a whole. It is where you set the Commission or Fee, any Royalty owed, the date of the Sales Order, and of course the Total.
The Combined View is a convenience tool for listing the Sales Order items, their quantities, selling price, and Total.
Clicking the blue "Update Royalty" button will fetch the Royalty information from the system, as set for the libraries.
You can also adjust the Royalty and Total from this view.
This is where you can view Access Codes as well as create Child Access Codes. The table shows all the Access Codes for the selected company
This table lists all the available Master Access Codes. A Master Access Code has no parent Access Code.
It also lists an overview of how many codes have been Allocated to Child Access Codes, how many have been Used by students, and how many there are in total.
If you click on an Access Code in the Master Access Code table, it will load into the bottom section with various details and functionality.
Here you can change the Expiration Date, Complete By, and Days to Complete for all users of the access code.
The right-hand panel shows a list of all the Child Access Codes this Master Access Code has allocated.
In the right-hand panel, click on the blue "Allocate" button to show the allocation options.
You can create new Access Codes in several flavors.
A Block is simply a single Access Code with a quantity over 1. This code can be used by several students and its use count will go down until it reaches zero and automatically no longer lets students sign up.
Auto-create is a fast way to generate a large number of individual Access Codes.
Quantity is the total number of Access Codes to generate, Length is the length of the generated part, Prefix is anything you want the access code to begin with, Suffix is anything you want it to end with, and type lets you decide if you want numeric or alphanumeric characters in the generated part.
Example:
Quantity: 3
Length: 6
Prefix: car
Suffix: {blank}
Type: Numeric
Result:
This option lets you specify the exact Access Codes you want to generate as Child Access Codes.
Simply type (or copy/paste) a list of the wanted Access Codes, one per line, and click on Apply.
If an Access Code in the list already exists, it will simply be ignored and will not affect the existing code.
A Dynamic Access Code has no quantity count of its own, instead it uses its parent quantity. Example: Parent code has total of 100, you generate a Dynamic Child code and use it once, now the parent used count is 1 and total available is 99.
You can upload a text or CSV file of Access Codes to generate. The file is read line by line. If it's a CSV the first column of each line will be used. If the code already exists it will be ignored and will not affect the existing code.
You can revoke Child Access Codes that have not been used. Either click the "Revoke All", or select one and click the "Revoke Child" button under the Child Access Code table.
You can download a CSV file containing all Child Access Codes by clicking on the blue "Download CSV" button under the Child Access Code table.
The bottom-most panels shows a list of all registered users of the Master Access Code and the Child Access Codes. Clicking on their LoginId will take you to the User Support Page for that user.
This is the User Support section. The table lists all users for the selected company, and clicking on a users LoginId takes you to the User Support Page for that user.
The User Support Page is the core support tool for SafetyServe administrators. It shows a lot of information about the user and lets the administrator change user data when needed.
Found in the right-hand panel, this section lets you see and change a users Login Id and Password.
In the Statistics panel you'll see data about when the user joined, their last login, how many times they've logged in, how much money has been billed to them, how much has been collected, and how many overall interactions they've had with LMS+ (This includes course interactions)
You can change a users name, until they have completed a course. This is a safety feature so that there's no way to generate certificates with differing names using the same account.
The Journal is only visible to Super Administrators (SafetyServe). You can place notes about the user here, and some administrator actions are automatically recorded here, such as setting a user as Passed or resetting their progress.
Under the Journal you'll find the users email address and all the data they entered in the Custom Fields when signing up. You as a Super Administrator can change this data.
At the bottom of this section are two red buttons. Suspend User and Delete User. Use with caution, as suspending a user will remove their ability to log in, and deleting a user results in data loss.
A user can not be deleted if they have active courses or have completed a course.
Each Access Code used by the student is shown on the left-hand side.
You can see the Access Code used, the course associated with the user, various interaction-statistics.
You can also see and reset a users progress in a course. Resetting them will remove the course interaction data, this is not reversible.
You can modify the users course access by changing the "Course Expiration" and "Finish By" dates, for example to extend access. There are quick-buttons to add "1 Week" and "1 Month" of access.
Lastly you can set a user as having Passed the test, which requires you to pick a score and set the date of them passing the course. Once a user has Passed the course test you can generate a Certificate for them if that has been set up.
The Inbox shows messages sent from the user to the Administrators and gives you the ability to respond to a particular message or send a notification. They'll see the notification the next time they log into MyCourses.
The Logs section shows records of when the user logged in, as well as their interactions with a course. You can see which course, the date, and if set up you can see what slide or section they accessed.
By clicking on the green eye to the right side of the record, you can see the raw course data sent from the course to the system, useful for debugging. It also allows you to reset a user to a particular state.
The Inbox shows messages sent by users, and lets you send a message to every active user in the currently selected company.
A user is considered Active if they've logged in within the last 6 months.
Shows all post-course survey results for the selected company.
Click on an entry to see the answers.
This is where you can override default Library settings for the selected company
On the left is a list of all the Libraries you have currently overridden, clicking on a table entry will show the library defaults as well as the override values.
Simply click on the "Add a library" selector above the table and search/select the one you want to override. Click its entry in the table.
This section lets you override the Certificate settings for Libraries used by the company.
The settings should be fairly self-explanatory
In this section you set the options for which certificate you want to use, and what fields to include on it.
Note that not all certificates have the same amount of room, some only have room for a few custom fields to be included while others have up 10.
Pick the Course in the left-hand labeled "Libraries/Courses".
On the righ-hand side you'll see the suggested Certificate and Certificate Delivery, but you can pick whichever one you want.
The custom fields can be dragged around to change the order, and don't forget to check the checkbox for the ones you want to include on the generated PDF.
This is where you control remote course access to libraries for a company.
Date of the latest remote student session, updates hourly.
Unique users since all time
Unique users since the 1st of January this year
Unique users since the 1st of this month
The table shows a list of all libraries for the company, with Unique user counts for each, and a button to turn on and off remote access to that particular library.
Remote access is updated hourly. It may take an hour before removing or allowing access goes into effect for remote users.
This is where you set up the company landing page.
This text is what shows up when using the {{companyName}} dropin on the Copy Blocks section. If you leave this blank, the system company name will be used.
If you want to call Access Codes for something else, enter it here to replace the word Access Code on the MyCourses website automatically.
The URI Folder is the last bit of the landing page url, you can see an example of the complete url to the right of the text input.
Only for advanced users
You can add custom css rules to be included on the page, in case you need to modify just some portion of the website but don't need
This is where you change the Landing Page and Registration Page texts, using the built-in rich text editor.
For convenience there are two buttons labeled "Add Default Text" which will, in fact, insert the default copy for either editor.
Using {{companyName}} in the copy will automatically insert the company name into the text, and using {{{licenseAgreement}}} will insert a clickable link which opens a modal with license agreement information.
If the company requires the student to accept a license agreement before they can create an account, flip the "Enabled" dropdown to "Yes", and enter the license agreement text in the rich text editor. It will automatically show up when the user goes to register.
Custom Signup Fields are used to collect data when the user signs up for an account.
Each company has their own set of fields, and can include the collected data on a certificate if wanted.
There are four prebuilt template fields for convenience. Clicking one will add that field or fields to your custom fields.
To add a new field, click the + button next to the template buttons in the panel that says "Custom Sign-up Fields"
The new field is automatically selected and you can start editing it.
Label on page is what the visible text will be on the signup form
Field name is used when building reports and output when generating a certificate. If this is a Reference # as included on some certificates, the field name must be "reference_number" or it will not show up in the correct location.
Field type lets you change the type of input. There are six available types, all with their own settings and options.
Must be filled in forces a student to fill in the field before they can submit their registration form
Visible on page can be turned on or off to disable a field but not delete it.
Contains sensitive data marks the data in the database as sensitive. No business decision has been made for how these should be handled.
Max length is the maximum number of characters the user is allowed to type enter in the input. Leave blank to not enforce a maximum.
Min length is the minimum number of characters required before the form can be submitted. Leave blank to not enforce a minimum.
Numbers only means what it says, check this box to only allow 0-9.
Alphanumeric limits characters to a-z and 0-9, disallowing special characters.
Add dropdown option lets you add an option for an input of the dropdown type. The option is only available when Type is set to Dropdown.
All default fields are required by a user when signing up for an account.
However, you can override the text that shows up on the signup website for the fields, for example: Company wants the text "Company Email" instead of "Email".
Each company's MyCourses can be customized with text and links
Click on "Add new link" and fill out the fields "Link Text" which is visible in the left-hand menu after logging in, and "URL" which is of course the URL where the link points.
Under the Copy Blocks tab you can change the copy on the main page after logging in, visible above the list of courses the student has access to.
You can import users by uploading a CSV file, delimited by comma, pipe, or semi-colon.
If this is a layout you'll be using often, you can save it by clicking the green Save Layout on the bottom right.
Email templates lets you control, globally and here at the company level, the copy sent through email to users and administrators for various things.
Each company can have their own override of the global settings. Simply click on a template name to edit the content, the override is automatically created when you click "Save".
Removing an override means that the global template is used.
The template table shows which ones are overridden, simply click the trashcan on the right-hand side to remove that particular override.
Company Administrators have access to various data about the business, including users and statistics. There are three levels of Administrator
As the name implies, a Read-only Administrator can see all data but cannot change any settings.
An Unrestricted Administrator has the ability to change settings for the company, with no restrictions beyond those imposed on all Company Administrators
An Access-Code Only Administrator can only see students who are registered under their Access Code.
When setting up an Access-Code Only Administrator, you are asked which Access Code (and thus students) they have access to view.
An Access-Code Only Administrator can not make changes to a companys settings.
Certificates are PDF files containing form fields. The form fields follow a specific pattern to allow automatic generation when a user or administrator requests one for a user.
You can change the internal name of a certificate, turn it on and off, change the description, and upload a new PDF file if needed.
Clicking on the Test button will trigger the generation and download of the PDF certificate with all the available fields and headers filled in by field-name.
To make a new certificate (or version) available for use, you need to add it to the system.
Click on the + button above the list of Certificates, and fill out the form. Set Enabled to True to make it available as soon as possible.
Use the file upload field in the Upload Template section to choose the template file for this certificate.
Template PDF files can be created in any program able to generate PDF files with form fields.
You can design the template in any way you see fit, but for it to work best we recommend the following.
Specialty fields can be named however you like. To use them the company must include a Custom Field with the same internal name as the field name of the PDF.
An example is the Reference # used on the newest certificate. The internal name is reference_number. It is special due to its placement in the top right corner.
For Custom Fields which should be available as a list (common format) you should follow this format for the PDF field names.
dropin1_title
dropin1_value
Simply repeat that for as many Custom Fields as you need to support on your PDF template.
To include the Anti-fraud hash identifier, you simply include a field with the name certificate_hash. No setup is needed beyond adding it to the PDF template
There are 5 main objects that are managed in the LMS+ system. This area gives an easy way to view, search and filter for these objects quickly. Each of the views are searchable and offer a rich array of data. Data can be exported in a CSV file in each finder.
A company is a client, of which there is four types, with slightly different attributes. A client that crosses across multiple types, create different entities. A student always interact with the course within the context of a company. A student is unique within a given company.
Creating a new company is done by clicking the [+] button that then pops up a window. The company name and URI Folder can be changed at a later date, but once the type of a company has been choosen it is fixed. The URI folder is the unique, short folder, that appears at the end of all web addresses to make it quick and easy to access a given a company.
Example: URI Folder: nscdemo
Reachable at: nscsafety.com/nscdemo
A user is someone that interacts with the course in the course portal. They access the portal via an access code or by purchasing a library in a retail environment. Users are always associated with a single company and may appear multiple times if they are associated with another company. The loginId is however unique across the universe.
An access code is the main currency that unlocks a library of courses. LMS+ at its heart, is an access code manager, that facilitates the management purchase of access codes. All access codes are available here, with a quick review of each one. Clicking on one will take you to the main access code administration area for the company.
The 'Sales Order' is the mechanism to which access codes are purchased by Corporate and Retail types. The checkout experience will create a 'Sales Order' automatically as part of the checkout experience - these have limited editable functionality. A new sales order is created by going to the main company Sales Order page. In summary, a 'Sales Order' tracks when money is taken by SafetyServe from either company or user (via the checkout). Royalties are therefore owed to NSC for these.
Like Sales Order, these manage the NSC orders. In summary, a 'Purchase Order' tracks when money is taken by NSC from either company or user (via their own checkout). Royalties are therefore owed to SafetyServe for these.
The system reports are pre-canned reports for across all the companies. Each of the reports can be run and interacted within the browser, or downloaded as an Excel XLS file. In addition, any customized report (specific filter settings) can be scheduled for periodic delivery, at a given time. These scheduled reports are emailed to the user logged in.
Lists all the tokens, active within a given date range, and their respective counts total/used/free. This gives a quick way to determine which clients are running out of tokens. You can filter on a percentage of the free to make it easier to target.
Sophiscated report to list out all the sales transactions, with a variety of filters. This will list every retail and sales-order transaction, along with the total price, commission, cost (credit-card processing fee). This report can be filtered by company, type, state, product, code and library.
For users that require a certificate to be printed and mailed to them, are presented in this report. The date of completion is stored in the database, and this allows for the daily reports to be run off to determine who needs a certificate printed. Setting up a schedule for 'Yesterday' will create a daily email of an XLS file for the back office to manage the printing and posting.
This report can be used to determine historical certificate batches by selected the necessary date.
A survey is a set of questions (of different types) that is presented to the user at the end of the course. While there can many different of survey's only one can be active (across all the clients) at once. The survey is popped up in-line on the page for the user to take. It is optional.
A survey is made up of one or more pages of questions. The order of the questions are determined by the administrator and can be changed. The page has a title and some optional introduction text. Any number of pages may be created.
A question can be either a Yes/No, Range (where the user can rate from 0 to 10) or a free-form-text. The answers for these questions are reviewed in the 'Survey' section of a company admin. You can test drive the survey as it is developed.
A library is a collection of one or more courses. A library is the unit to which users/companies purchase access to courses. The title and description assigned here are seen by the end-user (if not overriden by the company). The SKU is used for RETAIL companies and is the identifier for handling the basket/checkout process. These must be unique. The 'Product Code' is used for reporting purposes and is a way to group together like libraries.
Library is a vehicle for creating special bundles of different courses.
The 'Exp. Days' is the amount of days that the user has to complete the course when they first start it. This can be overriden when the course is purchased by the company. The 'Unit Price' is the recommended price for this library, and is used if the company does not override it. The 'Discount' is the lookup table that is used to calculate the recommended bulk quantity price in the 'Sales Order'.
The 'NSC Licensed' is a flag to determine if this library is eligible for a revenue split with NSC. If enabled, then there a number of options available depending on who originates the sale. The royalty can be determined on a fixed amount per unit, or a sliding percentage dependent on the quantity. This is for Retail and 'Sales Order' sales as a recommended royalty amount. This value can be overriden at the time of sale, but it is stored independent of the sales value, for easy analysis in reporting.
Courses are selected to be part of this library, by simply selecting them. A single purchase or token registration, unlocks all the courses for this user to see. They do not see libraries in their student console, but a list of courses. If there are multiple courses associated with this library, you can determine if the order of execution has to be in the order to which they appear in the library. This is particularly useful if the courses are actually modules and have to be passed before the student/user can start the next one.
If a user has purchased a library and then started it, they are now fixed to that set of courses, even if an administrator changes the courses in the library. The title of the courses will still persist though.
Courses are the individual micro-sites that deliver the experience to the user. These indepedent websites, support either the AICC or xAPI protocol to guide the user through the course, enabling them to come and go, continue where they left off. Courses are loaded to a special bucket in AWS S3 and delivered via the LMS+.
One of more courses are collected together into a library. A course before it is available in LMS+, must be first registered in LMS+ (using this area), and then associated with a library.
From the 'All Courses' screen, all the courses are listed, including a quick link to execute the course (the latest approved asset).
The profile is where you edit the main details of the course, including the title and description. The title is seen by the end user, if not overriden in the library, but the description is for internal use. The Certificate option determines who is responsibile for the payment of the certificate upon completion. This is a default value that can be overridden at the individual company level.
Disabling the course at this level will stop it from being used by anyone, even if the user is midway taking the course. It will disappear from all lists.
Certificate Option is where you decide what the default certificate option should be
A course can go through one or more revisions. A revision is a complete clean copy of the course website. At any one time, there is only one active revision, and this is the one that is assigned to a user when they first registered for it. If a user has started the course, then they are frozen at that given revision, even if another one is approved. This ensures a continuity of service for the user experience. A revision is marked 'Approved' once it's been tested and approved for use. A 'Rejected' revision indicates that it was tested and issues were found.
Revisions are uploaded, outside of LMS+, to a known location on AWS S3 bucket. These courses can be very large (due to video and image files). As a revision is registered, various properties are associated with it for internal tracking. Attributes such as slide count, exams, etc drive the functionality in the user support page. You can view the root files of the uploaded revision by pressing the 'Show File Info' button; this is a sanity check to ensure you have the right asset matched up. Creating a new asset, will create a new blank folder on S3 bucket, to which you can then upload the assets via CloudBerry or another S3 client utility.
There is a special set of attributes, 'Show Custom JS' that is there to override the default mechanisms for the LMS+ admin to interact with the course. getSlide(), setSlide(), getAnswer(), setAnswer(), getSlideCount() are the core methods that is used to get at the course data. If the course author has developed something a little off-protocol, then this gives a quick way of changing the interface without modifying the underlying code of LMS+. If the course has been authored to AICC standards then there should be no requirements to touch this.
Discount tables are groups of pricing discounts that can be applied when purchasing bundles of libraries. When entering in 'Sales Order' records, it is these tables that are used to suggest pricing depending on the quantity looking to be purchased. You can have multiple tables.
Place the minimum quantity of range in the field marked 'to' and the maximum quantity of range in the field marked 'from'. The price field will indicate the discount for that quantity range.
A super-admin is a user that has full access to the system, allowing them to do anything. Reserved for only SafetyServe team members. A super-admin has the power to create additional super-admins. Like all admins in the system, a record is noted against every operation to audit who created and modified a given data.
This is the main profile data for the user, including all their login/password information. You can reset a password here. If you need to disable a user, the 'Enabled' option, lets you lock out a user. This will keep their account alive, but will prevent them from logging in. If a user is still logged in, then the next time their session asks for a new token (every 30minutes) they will be refused and forcibly logged out.
Same as the API Logs, but restricts it only for this user so you can easily view and search for endpoint calls this user has made against the system.
This is all the scheduled reports that they have subscribed to. You can make preliminary edits to these.
This is an overview of all the notifications they have enabled for all their companies. This will generate an email upon the even that happens. Examples include when a user first registers a token, or when the token threshold is low. Token threshold levels are checked once an hour, and then sent out accordingly.
A network admin is someone that has access to 2 or more companies. They can administer multiple accounts and view reports across different accounts.
This is the main profile data for the user, including all their login/password information. You can reset a password here. If you need to disable a user, the 'Enabled' option, lets you lock out a user. This will keep their account alive, but will prevent them from logging in. If a user is still logged in, then the next time their session asks for a new token (every 30minutes) they will be refused and forcibly logged out.
This is an overview of all the notifications they have enabled for all their companies. This will generate an email upon the even that happens. Examples include when a user first registers a token, or when the token threshold is low. Token threshold levels are checked once an hour, and then sent out accordingly.
This lets you assign which companies this user has access to and the level of access they have (ReadOnly or Full). Changing this access will take effect the next time they login (or when their token refreshes which is done every 30minutes).
These are the core system templates that are used for various actions within the LMS. These templates are fixed in the system and cannot be deleted. They can be edited though, and as soon as they are edited, any new outgoing email will automatically use the new template. These are shared among all company accounts.
Drop-in's are used to fill in dynamic data. The template editor lists all the available templates.
Note, all outgoing emails are generated in plain-text. There is no support for rich formatting (bold, italics, images etc) and careful attention should be given to making sure lines are not unduly to long. Recommended to keep it to 80 characters.
Companies can override their own template within the Company administration area.
Lists all the schedules that have been created by each user, and a variety of summary data that is used for each run. A schedule runs on the top of every hour, and then runs the report, attaching it to the outgoing email.
You can click on the users name, to be taken to their profile page, where the 'Schedule' tab you can see each one and edit accordingly.
All outgoing emails generated from the system, to any user, is retained for later analysis. This includes the recipients email address, subject line and body. You can view this, by clicking on the recipient's name.
Every request made to the SafetyServe administration console is logged for security and forensic purposes. This log records the person who made the request, the date of the request, the IP address they came from and the data they submitted to the server.
You can page through the API calls and inspect each call, optionally searching (or filtering) on the user.
The method has only a finite number of values; GET (they read data), POST (they created data), PATCH (they updated data), PUT (they replaced data) and finally DELETE (they deleted data).
Sensitive data, such as passwords are masked.