Chris Summers coined the term
The Fifth SDL Tridion Environment which is the implementer's sandbox, playground, or simply
personal Tridion virtual machine. Getting the license for such an environment
has its own challenges.
I want to describe the ultimate, elusive, and harder-than-you-would-assume
Sixth SDL Tridion Environment, or the (custom)
Training Environment (or simply
Train). Often asked for, and seemingly innocent, this environment is harder-to-maintain than production.
Let's highlight typical business, functional, and technical requirements, then navigate the many implementation and project decisions.
Business Requirements
- For training content authors, developers, and partners working with SDL Tridion and/or a specific implementation
- Business users should be able to freely create, edit, delete, and publish content to learn Tridion
- Developers should be able to understand Tridion concepts and see how content manager (CM) and content delivery (CD) work together
- Architects, infrastructure consultants, and server administrators should see how the system works together
Because the people with the expertise to build such an environment have other pressing duties such as client-facing work for consultants or regular maintenance and builds for developers, there's typically a time and resource constraint.
You probably want to train people before going live, so your custom training environment might even need to be ready before Production, without insight from practical experience in a given organization.
Functional requirements
- Whatever needed to support the business requirement!
- I've seen this include the Content Manager Explorer, Experience Manager, a few page/content types, translation, and "Hello World" developer examples
- Ideally the environment has a "reset" option so the next set of trainees get the same environment.
Technical Requirement and Questions
If the above doesn't make you uneasy, this part should.
In hopefully most Tridion setups, you have some version of the aforementioned DTAP setup, which means Development, Test, Acceptance, and Production.
A training environment, though non-customer facing, is harder than production in many ways.
In production, you typically have mix of in-progress
and published content. Items will have history, may be intentionally locked, and will be appropriately localized in certain publications.
In Train, your content must be frozen in time. Though you could aim or a "clean" setup where no items have history or are locked, you might want exercises that look at history, explain check in/out, or see localization. This means we approach
Heisenberg uncertainty here, especially with testing. Testing your exercises means your environment no longer matches the start of your exercises.
So before you add "custom training" to your project plan, consider and answer some questions.
Where will you split the Training materials off of your live systems?
- In Production CMS. Do you use production to use the latest and greatest definitions? Or another environment to minimize impact on your live sites? Where will you create your split in the BluePrint if using an existing environment? The higher the level, the easier it may be on trainees, but it may make maintenance more challenging. If you wanted to unpublish or delete something, you will have to account for how it's used in the Training publication.
- In a Separate environment. Will you create a completely separate environment? This of course requires functional, technical, and infrastructure support.
- Separate pages and/or components? This is an "easy" approach with less setup. But you may need separate users and also need to confirm if you're going to share items. For example, you can't simply copy the home page for ten trainees. You need to redo sets of component presentations including separate components.
- Folders? Do each user get their own set of folders or do you add subfolders to the existing tree? Tip: the earlier the branch the easier it is for users--they'd only have to remember their user and location once. Even better if you use permissions to limit access.
Which items? Do you use the actual schemas or copies of your schemas? If making a separate set, should you simplify the content model with less fields or keep it practical and "real world?" Are you using dummy content and pages?
How will you handle changes? Regardless of approach how will you handle changes? Should Train
automatically get production changes? Does this mean would every release potentially require updates to the training exercises and are you ready to include this in every build?
Who will create the exercises? Will you need materials such as slides, documents, or videos? Can you automate anything?
After you've created everything, what happens when schemas change? If you change the components? Will you update screen shots? What happens when browsers, IDE, or your site changes? Does an update to IE mean your materials need an update? How about when Visual Studio changes?
Real-world recommendation: custom training should not be the first time one of your authors hears about or uses Tridion. You spend time researching, testing, and measuring your customer-facing applications.
Project Decisions
If the above are easy, then answer these six final project-related questions and you have my full support in making a custom training environment.
- Who will users be? How will they get access? Who owns the environment? Who will make updates?
- What is the scope for this environment? What is its relation to production in terms of maintenance and devlopent?
- Where will you maintain or host this environment? Where will you document the details?
- When will Train be updated?
- How will you manage Train? Will you use source control?
- Why are you doing this?
Final Recommendations
Consider a back up strategy, making your approach modular, and getting professional help.
If you're making something that needs to be tracked, must meet specific requirements, and will need to evolve with the rest of your technology stack, guess what? You probably want the same project approach and a similar source code approach.
Consider some type of back up, even if it's just a periodic copy or instance on the cloud.
Ideally, your training modules are well, modular. To make independent exercises you'll need to repeat parts and "pre-bake" steps like celebrity chefs do on cooking shows.
Consider making training modules separate, but understand this will increase your development and testing time. For example consider a Hello World setup:
- Create schemas.
- Create components based on schemas.
- Create templates based on schemas (and components).
- Create pages and use above components and templates.
- Publish pages.
Five parts, easy, right? If you separated these so trainees could start at any step, then you'd also have:
- A "backup" schema for 2 and on.
- Example components based on this backup schema.
- A working template in case someone's template doesn't work.
- Example pages based on these separate schemas, components, and templates.
- Separate folders and structure groups for the above.
You'll also want to be sure the backups don't confuse the regular exercises.
After you've figured all that out, time to get a trainer. Even your most experienced consultants don't know your content model without a tour. I can tell you how SDL Tridion functions, but really won't know what that one field in your component does unless you explain your setup.
There's Hope
Luckily, the groups that I've done custom training with gave me access to the system implementers, a direction and focus for training, and were flexible in evolving the approach together. We typically do well together and I've only had one person accuse me of not being a
real trainer. :O)
If you are looking for a guide on your custom training journey, definitely reach out to
SDL tridion education.
[shameless plug]You typically don't choose resources with working with any professional services organization, but if I'm on your project, know that I have some five years of explaining Tridion to anyone who'd listen to help and I've been tutoring or teaching in some form since junior high. Helping people learn this system is definitely a highlight of being part of this group.[/shameless plug]
If you're confident in your custom training project, consider some nice touches such as the following (which have been well-received at customers that really considered their staff's needs):
- Office hours to help anyone that needs more time with the system or has specific questions
- Trial runs to see if the format, material, and content fit the intended audience
- Videos and online learning materials to focus on specific scenarios
- Not always possible, but a "clone" option to create sandboxes for approved teams
Cautionary Warning on Sandboxes. You might be tempted to ask your trainer for a copy their environment. I know because I've asked and have been asked. You can always ask, but understand it's not up to the trainer. Have your manager ask your trainer's manager and understand that any Tridion environment has at least weeks worth of development or consulting time along with intellectual property and years of expertise built into it not to mention licenses you may not have access to (the operating system, IDEs, software, etc) and sensitive information.
But if you find creating a complete custom training environment is a bit more than you expected, by all means create a few sandbox scenarios for your team.
In the end, it's tough getting a perfect run--everything from cloning to connectivity issues can cause technical difficulties--but unlike production your setup just needs to get the point across. It's okay to play with, learn from, and break the monster environment known as Train. It's meant to survive long enough to get you comfortable with the system.
In this sense, Train, the Sixth environment, can be as fun as your The Fifth Environment Unit, more challenging than Production, but just as useful as any of them.