Written by: Warren Phillips
Enterprise level projects bring with them a unique set of challenges generally not seen in simpler implementations. The size of the project, number of users, amount of content, and number of integrations adds to the requirements, and therefore the complexity. Let’s look at some data issues associated with multiple organizations creating content in a single system.
To set the stage, imagine the following. You are tasked with implementing a Learning Management System (LMS). It is for a state government and will involve approximately 40 first responder (fire/police) training academies, and over 200 additional training organizations in the state. Supporting almost 150,000 first responders, the intent is to ensure that they will be trained and prepared to respond to a terrorist attack or other state emergency.
Content will come from a wide range of sources including Homeland Security, Red Cross, and locally developed materials. There will be Admins throughout the system managing their own users and their own content. As well, there will be common content shared across multiple agencies and in some cases shared across the entire enterprise. This was an actual project in which I was a program manager and a lead implementation consultant.
With all the entities involved, the existing data is stored in multiple naming conventions, and in some cases, objects owned by different groups had similar names and identification numbers.
Here is an example of what could happen if we turn everyone loose in the system and do not have a standard.
An Admin from Agency A creates a course with the ID number “12345.” Then an Admin in Agency B attempts to create a course with the same ID number. The result is the system gives a warning message that the number is already in use. On the same day, a Super Admin attempts to build an Enterprise level report and has challenges identifying the correct Locations to use within a group. It is also important to note that because of security roles, Admins cannot see objects in the other Agencies’ areas, so there is no way for them to know if an ID number has been used previously.
So, what would be the best practices and recommendations for allowing all the content to coexist in one system and be manageable?
First a couple of design considerations for Content Management Systems such as an LMS.
- Unique Identifier – Every object in the system must have a unique identifier to allow it to exist separate from all other such items. That typically is the key/identifier field. Note that with some vendors, some objects may have more than one field that must be unique. In some cases, a combination of fields is used to uniquely identify an item – such as a Course ID and its Version number.
- Unique Selection – As a user of the system, when viewing a list of items to select from, there must be a way to distinguish one item from another. For example – a system displays a list of Classroom Locations to select from. It is possible to load two locations with the same Name (though they are unique with different ID numbers). If the User Interface only displays the Location Name in a table, and those values contain duplicates, then it becomes difficult to know which Location to select from.
Establish a Standard Naming Convention – The project team should establish a Style Guide / Naming Convention / Standard Operating Procedures document to be used to govern object naming across all users of the system. In a Learning Management System, objects would include Certifications, Curriculums, Courses, Classes, Content, Documents, Facilities, Classrooms, Equipment, Inventory and more. And let’s not forget Locations, Organizations and of course the User Accounts themselves.
Review data requirements for all objects to be created. Identify what fields must be unique.
Solution 1- Auto-Generation
One solution would be to let the system auto-generate the unique number. The advantage is that it is convenient and will always be unique.
There are several downsides to a generated value.
- It will be random and not follow any pattern. You will not be able to identify who owns the object based on the ID. It does not resolve the issue of duplicate display names.
- If you are loading data for related objects, you will need to retrieve the system generated ID and map them to the new object. For example, you create a course with a system generated ID. To load the associated Class, you must first retrieve the Course ID. If you are dealing with many courses created with a course import file, then you must map all the Course IDs to the new Classes. In some cases, this can be very difficult. Recommendation would be to specify known IDs for the Courses, which allows for quick mapping to other objects.
You will need to disable auto-generation if you want to enter already established values, such as a Course Catalog ID from an existing catalog.
Solution 2 – Use a Prefix
So how do you allow different agencies to operate independently, meet the requirement for uniqueness and prevent competition for the same values? By adding intelligence to the naming/numbering schemas.
- Example Rule – First two letters of ID numbers for all objects must be the Agency identifier. For example, Agency A unique identifiers must begin with “AA-“, Agency B with “AB-“, Aurora Fire Department with “AFD-“. You get the idea. Then within that group they can further define requirements. The result is any group could use “12345” because their prefix would always make it unique.
Solution 3 – Some additional multi-agency best practices
- Every object is associated with a security domain. If the Domain structure lines up with the Agencies, it is recommended that you add Domain as a field to every table where applicable, and to search filters.
- When adding content (AICC/SCORM files, Tests, Documents), establish a top-level folder for each agency to contain their owned content. They can then manage the sub-folders.
- Before loading data, look for variation in values between agencies. Such as CA, CAL and CALIF for California. The ideal time to identify variations is during the system setup and early data migration processes. Determine actions to be taken to include clean up or just accepting the variations.
- Versioning is also a way to identify some content such as Courses or Curriculums. If you leave Version blank, the system interprets that as Version = null. It is better to start with a value so you can easily tell the relationship between the different copies.
- Where system allows configuration settings by agency – establish a common default baseline first and apply it to all. Only then create agency specific variances, and only based on true business need. Consistency is good for Customer Support.
- If you relabel fields – keep a list of the original value, the new value, and the associated header in data import files. The vendor issues documentation based on the original values and this will allow you to interpret updates as they apply to your customized instance.
HRchitect has expertly trained consultants who can assist you in all aspects of your system implementation to assure that your system will operate optimally from day one. We offer assistance in all areas of HR including Core HR systems, benefits administration, compensation, learning, recruiting, workforce management, and payroll. In addition, HRchitect can assist you with developing a Human Capital Management (HCM) technology strategy, assist with evaluating and selecting the right systems for your organization’s needs, change management, and more.
About Warren Phillips
Warren Phillips is a Senior HCM Consultant with the HRchitect Consulting team. With over 30 years of experience in the training industry, Warren has led the implementation of training initiatives and Talent Management Systems for a wide range of commercial and government projects. He is also an expert in the technical side of training. An experienced training developer with a solid understanding of adult learning theories, instructional systems design, and user interface design for instructor led, self-paced and blended learning solutions.