Automatic Linking is Great When Making Links Automatically

When I explain Tridion dynamic linking, I sometimes get the "but I want to link to a specific page" response. See my post on how to understand dynamic linking from a manually-curated authoring view; otherwise read on to see how dynamic linking really shines when the links are created or otherwise generated automatically.

Here's a hypothetical scenario that I've worked through at an actual client with the team. In the end, we didn't need to implement this use case, but keep it in mind as an approach and example for dynamic linking.
  • The website has content that will be "tagged" with various topics (e.g. industries or interests)
  • These tags may apply to content on pages in different sections of the website
  • We want to display dynamically or generate a list of these topics such that each topic links to the content that matches in that section (let's assume one piece of content per topic, but this could be applied to many items)
How would you do this with Tridion?

The simple case of one dynamic display and a single set of content could be:
  • A Tridion Category called "Topic" lets CMS editors tag Components
  • Developers generate dynamic component links for the keywords so CMS editors don't have to do anything to get the list automatically aside from maybe placing a "widget" on a page (a Component Presentation that adds the server-side code for this functionality)
  • The widget would either generate the links on publish (template them) or pass the tag or control and parameters to the Web application (e.g. <somenamespace:tagorcontrolname topic="sometopic">)
  • Default delivery-side dynamic linking rules will resolve the links so that each Component + Component Template combination becomes a hyperlink on request
Now, what happens when you have another section in the website that uses the same topics, but with different destinations?

Options include:
  • Assume categories won't work. Manage these manually instead.
  • Use different Component Templates, so that one section resolves links to pages with its template. You might optionally use template priorities.
  • Leverage dynamic linking, by generating the Tridion Content Delivery Library (tcdl) tags or controls and letting dynamic linking proximity rules resolve these to the correct location.
With dynamic linking, you might have section-specific links for things like:
  • Help (with this topic, product, or section)
  • Support (for this department)
  • Map (for this region, as organized in structure groups)
Then using the proximity rules, if you don't have Structure Group specific pages for help, support, or the map, you would get the closest version. All you have to do is organize your pages from general at the higher levels to more detailed as you go into the Structure Groups. Based on what's published, when a visitor clicks on "Help," they'll the page for Help for that section (Structure Group), but if not available, they'll get a more general Help page. Based on parameters, the dynamic link could also disable the link and even hide the text if no pages are available with that content.

If making a manual link, from an editorial perspective you have to think in terms of "adding a link to my section's set of special pages." Just make sure these references are on your target pages as Component Presentations and maybe place them in a special "references" folder. But again, it's much better when it's automatic.

Anyways, knowing the proximity rules earned me a beer in Paris--use this knowledge to demonstrate your Tridion resolve at understanding Tridion resolving behavior (in delivery).

Oh and by the way, the dynamic linking proximity rules explain why Tridion cannot cache a dynamic link with an invalid page id. If you don't know where to start, how can you cache the destination for the next request?

Tridion Permissions Quick Check

As 2014 winds down, I'm revisiting the odd draft post left in my blogging queue. This one was a quick email answer to a colleague on how to troubleshoot not being able to read or see a folder in Tridion.

The first "gotcha" is we have two “inheritances” with folder permissions:
  • The settings from the item’s (BluePrint) parent, if any. These will match the shared, parent item if the item is not localized (i.e. shared from above).
  • The settings from the item’s in-context (same Publication) organizational parent. The "Inherit Security Settings from Parent"* checkbox in the folder’s permissions in properties control this. Removing this lets us change the permissions within that branch for the given Publication, which is then inherited down.

*Peter Kjaer explained the "Inherit Security Settings from Parent" is stored as "IsInheritanceRoot=false" and Dominic Cronin points out that you're responsible for managing the difference when you create such Inheritance Roots (good stuff, thanks guys). I'd say this is akin to localization where the flexibility's great, but has overhead costs in terms of maintenance for the variations.

Also when reviewing permissions, to double check:
  • Are the folders localized in any of the Publications?
  • Is the Inherit Security Settings from Parent setting set?
  • Click on Show Exceptions to see if anything else is explicitly restricted
  • Does the user or its groups have rights in the Publication?
The Show Exceptions feature is somewhat hidden (and probably for good reason--it's hard enough giving permissions and managing the results without also considering exceptions). 

Finally hiding folders users don't have access to is controlled by a server setting (in Tridion's MMC Snap In on the Content Manager server). Whether you choose this depends on what you value. Personally, I prefer hiding folders users don’t have access to—it makes it easier to choose and navigation from the given options. But I understand there’s a (possibly slight) performance impact because the system can’t simply show you all the folders at a given level. It must check each folder to know what to show.

My professional recommendation is to start with one approach or the other and adjust if one aspect hurts more (finding items, versus waiting for folders to appear). When in doubt, at least start with something.

SDL Tridion Reference Implementation Auto Documented

I've been working towards "automated" documentation for awhile and it's challenging to really show how the existing Tridion community tools work. The code and examples are easy enough to share, but it's hard to create full, working examples to run these tools against.

But since the Tridion Reference Implementation (TRI) is open source, here are two TRI "auto-documented" pieces and a bonus.

1. TRI Authorization

TRI's Organization and Authorization generated with my Tridion BA Toolkit core service program.

2. TRI Schemas

TRI's Schemas Exported with the Tridion Powertools 2013 (credit to colleague "Double-Oh" Stan with Contributions from Team PowerTools).

Note: I haven't run these against TRI, but Tridion Community MVP Pankaj Guar, just shared a Schema report generator.

3. Bonus: Cleaner Schema Designs

When I hear agile in a CMS project, I envision:
  • Content- and business-driven website design and development
  • Content Always, where content structure and meaning (dare I say semantics) drive the visitor experience
  • Rapid application prototyping (RAD is back!) in the back office (i.e. let's build Tridion Schemas, together!)
Instead what I see is:
  • Design-led requirements sometimes based on user stories, requirements, or user journeys (great to see in my more recent projects)
  • The back-office keeps up with changing front-end or application-side requirements, meaning:
    • BluePrint changes, sometimes involving scripts
    • Schema changes, sometimes involving scripts
    • Additional care with editor training and expectations
I also see customers know they don't or actually can't know the final solution. Proof-of-concepts, scoped builds, (and working closely with your vendor) are great ways to work out what actually works, especially if CMS is new for an organization.

So it's not so RAD and I don't always get to interactively design Schemas with the client. Instead, I've come up with a Spreadsheet for designing Tridion Web Schemas.

Now I just need a catchy meme that connects the New Year with this auto-documenting goodness... Creative laziness for the win? BAToolkit4Tridion--BAT4T? Functionally fit in 2015?

Three Tridion Years

It's been three years since I joined SDL (seven since my first Tridion project). Here are some of the highlights since my start in SDL.

Tridion Technical Community

The community is so active I can't even keep up with everything. I had to automate much of my Tridion-in-30 Seconds video (and double it to 60 seconds!).


I also joined the Tridion MVP selection panel awhile back when we lost someone in PS (and gained a Product Manager).
With great verbosity comes great responsibility. Remember, I don't choose nominees. Someone else nominates you for sharing, and I put in a yes or no vote if it was enough for the past year. If you'd like, I could vote if you shared as much as I did. :-P
I recently became a pro tem Tridion Stack Exchange moderator.


I've also had some great experiences beyond the community.

Industry

presented at SDL Innovate this year! I blew up the event's Twitter feed as part of the selfie contest, which was kind of scary for some reason. The typo on the website was awesome.
Promotion to Training Manager? Nah, I just filled in for the real deal.

I also improved my SEO skills and connected with the bigger picture and SDL's larger audience. As of today, I show up high for non-personal Google search results for "Creepy CXM." The blog also broke 200,000 page views (though Yet Another Tridionaut beat me to 100k first).
I connected with, or otherwise engaged, honest-to-goodness Content Strategists on Twitter and in blog posts such as Tridion Can Poop or Training Your Tridion CMS.
Despite fun and growth in the community and industry, I've had a blast in the main thing.

Career as "Just a Functional"

Knowledge Shared. Helping our internal knowledge sharing days was also awesome, having the chance to make ice breaker games to explain Customer Experience Management and getting to design this (it's even Carbon 2.0 complaint).


Don't tell anyone, but we had just enough publicity to get a jealous remark ("hey, what's that? Who gets to go?").

Travel Everywhere. I still had travel across the US but also more international trips including Bucharest, Amsterdam (again), Gothenburg (Sweden), and Lyon (France). I fly for Paris next week.

Learning languages and about cultures in school didn't help me with work and business directly, it's helped me connect with the people at work and business.

Customers Everywhere. Related to the travel for clients, I also see our customers' products in banking, insurance, retail, and entertainment everywhere and not just because the Web knows I'm visiting their websites. I have to double check if an email is from my bank or work for my bank or if the special is for the local amusement park or the one I have to travel to work for. ;-) 

Here are some images that may or may not remind you of projects we may or may not have done together.

Images aren't just images when they're licensed IP (intellectual property). Picture: Barcroft Media via The Telegraph.
Dimmer or dimer? I can't pronounce certain types of light switches anymore.
3-D flowers were cutting edge... in 2012. The hardest thing to do in a consultancy of Tridion Professionals? Taking them off projects to update content. :-) 

Forget Tridionaut Consultants, Furbysultants FTW!
Not project related, but some of my former colleagues and I get excited over Minions. We'll share pics from Minion knitted caps to "look what I bought" moments.

The best part of it all isn't Tridion, but (new) friends and (new) family. Since I've started this latest career, we've moved three times, we saw Allana grow up into a First Grader, and were joined by Caden. I've said Allana looks like me, but pretty like her mom. Allana's also quite sharp, but Caden worries me with that brain and smile of his. There's something about a baby/now Toddler, that can make the guys go, "hey what's up little guy?"

The family's also joined me on two out-of-town trips (San Antonio and Orlando) and we'll have other opportunities for us to travel together. As one of my colleagues might say about these first three years: "it was awesome."

I'm looking forward to the next three.

Here's a recap of previous recaps::

Training your SDL Tridion CMS

First read Eileen Webb's post, "Training the CMS" for background (thanks Paceaux, for the great recommended reading).

Done?

Awesome. She describes exactly what I'm hoping, encouraging, or looking for in my SDL Tridion functional designs and setups, but in a technology-agnostic way for any CMS. As a thank you and contribution to the discussion, here's how to accomplish her points but with Tridion per her prompt in the comments (see the great comments as well):
"Everyone, please feel free to share any tools, modules, plugins, or tutorials you’ve come across for your favorite CMS that can help improve the authoring experience!"

Content Type Overviews

Tridion's Content Manager Explore, the "back office" interface, is much like any other business system (folders and forms following desktop software expectations). Its in-context GUI (Experience Manager), however, lets editors preview and update a "Staging" version of a website.

System admins can create sets of content types based on example prototyped content (Components in Tridion). It's all configurable through check-boxes and selections, the real challenge is making sure the business and technical teams work together to set these up.

Documenting SDL Experience Manager and Smart Target Specifications

The idea of "regions" are important to:
  • Experience Manager (XPM), SDL Tridion's in-context editing interface, where XPM regions allow content placement
  • Smart Target, the connection between SDL Tridion and Fredhopper, where ST regions show certain content based on things like search terms or visitor or session-based triggers (and show fallback content when nothing triggers)
  • Content Management System (CMS) Functional Designs for (SDL Tridion), where "regions" identify where content types are allowed and in what quantities
Although technical users or developers will implement these pieces, XPM and ST requirements are business-driven. Here as some example formats I've been using on recent projects. Although I hint at some of the process, this isn't a comprehensive guide as there is more that you'll want to consider in a SmartTarget or Experience Manager setup!

As an overview, consider the following details in your next Functional Design:

You Should Share More

As of now, I have 47 blog posts on this blog, 3 posts on TridionDeveloper, 3 videos, 1772 points on Tridion Stack Exchange from 27 questions and 44 answers for 2014.

When I first started sharing about Tridion, it was on a private forum with no blog posts. I doubted I had anything worth sharing.

After helping customers these past three years, seeing what others struggle with, and re-learning much of what I thought I knew, I realize a few things:
  1. I have more to share, more to contribute, and maybe more chances to inspire others to share than my official role or title.
  2. The more I explain, the easier it is to explain. Practice makes permanent.
  3. No one will read it all, I'm not that special, and "few people that need my posts actually read them. But the ones that need them when they find them appreciate it."
But enough about me and my blah blah blogging.

You should share.
You are or can be a thought leader.
If you answer the same questions and keep getting the same questions, it's a sign. It means your answer isn't out there. Give it away. Or a small taste of it.

At least save yourself time and write it down... so you can reference yourself when you're next asked. Wait. If you answered it already, copy, paste, and revise it instead. If not answers, then share code, ask questions, make a podcast, or record a demo.

Educate. Share. Leave a legacy.

Don't wait for perfection. Share so small, you can't get it wrong.
Or aim so big that you can't possibly achieve your goal, but you'll make something epic anyway.

Recycle. Re-use. Good ideas need to be expressed, vetted, and revised. Bad ideas need to be expressed, vetted, and revised. Bad ideas transform into good ideas by being expressed, vetted, and revised.

Share what didn't work. Share the mistakes. The community doesn't want perfection. Parts of it want to know you and what you've done. Parts want to know what works and doesn't. Much of it just wants to get its job done.

Choice words at the right time make a difference. Encourage someone. Mentor someone. Mentor everyone or be a student of the World.

I'll say it again, as a past/current/future thought leader in your industry, you should share (more).

Edit: why do I care if you share? Because others shared when I needed help and sharing shaped my own career. Especially with my corner of the Web--Content Management Systems--I find knowing and engaging the Web is important to being a "Web" professional.

SDL Tridion XSLT Variables for Linked (Multimedia) Component

While Cleaning My Desktop... Tidbit #1

I share a lot, but surprisingly, I still have too many tidbits and side projects that I'd like to get out to the community. Here's another long-overview due (and marginally relavant) post on XSLT. Dominic Cronin might call these types of blog posts "notes to self" and I've posted about this kind of Secondary Memory.

So here's some starter XSLT variables I've used when transforming source Tridion Component XML and referencing a linked Component. With modular templating you'd normally use something like the Get Extension (DGX) to be able to reference related Components. Otherwise you would add these Components to the package.

But with the older style XSLT templates, or anytime you had access to the content model while using XSLT, we used the document() function against the other component's namespace. This is one of the places where you'd be glad you always gave a Schema a good namespace.

XSLT referencing another Component

<xsl:for-each select="//namespace:link_to_multimediacomponent">
<xsl:variable name="COMP" select="document(@xlink:href)/tcm:Component"/>
<xsl:variable name="DATA" select="$COMP/tcm:Data"/>
<xsl:variable name="CONTENT" select="$DATA/tcm:Content"/>
<xsl:variable name="META" select="$DATA/tcm:Metadata"/>
<xsl:for-each>


You could also use the same approach when referencing the Component that's being rendered by the XSLT template. You can see an example in my "Inspect Component Details" post:

<xsl:variable name="Content" select="/tcm:Component/tcm:Data/tcm:Content" />

You could then reference Xpaths starting from $Content.

<xsl:apply-templates select="$Content/*" />

With a few variables, you've made selecting something as easy as remembering its path based on the source XML. But then this isn't Tridion per se, but just XSLT's variables.

Thanks for letting me reminisce. XSLT + Tridion brings me back to the "old days" on the forum, where I feared the likes of power forum users like +Dominic Cronin or +Jeremy Grand-Scrutton. Maybe Dom will forgive me for referencing W3School. :-P

Min, Max, and Everything in between

You can better understand a content model using two numbers for quantity: minimum and maximum. Data modeling might refer to the cardinal relationships between data tables, but in terms of an enterprise CMS we're mostly interested in how many elements can exist (this content type or text in this location, on this page, etc):

Let's look at:
  • Min
  • Max
I have these in the example "mobile-first" page type breakdown from my last post. But it could also apply to any managed elements such as fields, images, regions, selectable options, or websites (think Tridion BluePrinting).

Modeling Split-Style Labels and Headings

I'm working on a CMS design with text labels that look like:

SPECIAL
DEALS

BUY
NOW

ON-SITE
SPECIALS

PRODUCTS &
SERVICES

Pretty simple, right? How would you model this in Tridion?

Does Experience Manager work with Responsive Web Design?

This question was posed to my team recently: "Do you get a responsive view scaled to your screen in [SDL] Experience Manager?"

My response had three points:

  1. This has more to do with the HTML and styles than Experience Manager (XPM).
  2. XPM only adds borders on the wrapping container element (tag) for the Component Presentation and fields.
  3. As the borders resize and move, the XPM borders should move.
Of course "should" wasn't enough. So let me further qualify the answer to "does XPM work with Responsive Web Design?" with "yes, to the extent that your mark-up keeps the borders and the XPM field comments intact."

Luckily I had an environment to "prove" my point.

My colleagues had already set up this environment, a relative to Electridion Training (not to be confused with the Reference Implementation), based on a Bootstrap responsive template.

Power Authors Part 3: Troubleshooting Tridion Pages

In my last post, we looked at authoring rights and responsibilities.

I just spent a few weeks working with authors, making content updates, and helping when things didn't seem to work out just right. So let me end this three-part series with some practical Tridion publishing troubleshooting tips that are fresh in my mind.

First, the basics:

  1. First basic check is to confirm your CMS environment and publication target (website).
  2. Ask yourself, "which publication am I in?"
  3. Then start backwards or forwards, comparing to known working examples.

  • Forwards is useful when troubleshooting functionality, fixing specific content, or reviewing an author's experience. Use this when you know how the content model works.
  • Backwards is useful when investigating why something is showing (or not showing) on the website as expected. Use these steps when the wrong language shows up on a site, links don't work or appear, or content doesn't display correctly. I'm forced to use this when there isn't documentation or the system has been updated since the original functional design.

Backwards Page Troubleshooting Checklist

For example, let's start at the end. Backwards page review:
  • Does the page show your latest changes?
  • Is it the right page and content?
  • Is the page checked in (no lock icon)?
  • Is the page published at all? Look for the icon.
  • Is it published to your specific Publication Target (Target Type for authors)?
  • Did the page have changes since it was published?
  • As a shortcut for the above, you could Save & Close the items in the Content Manager and publish.
  • Open the page, editing its parent if prompted.
  • Is it actually the right page based on its path and filename? 
  • Is the page template and metadata correct?
  • If functionality is controlled by a "Navigation" page, has it been published for your target?
If the page seems okay, look into the content. Especially for translation, be sure you're looking at the correct Component for that Publication.

The Multilingual Surprise

If content related, open the page in shared mode, especially for translated content and pages. Otherwise you may miss child translated content as you look at parent versions of components. This will happen in most multilingual setups where shared master pages point to global shared content, but content is localized in a translation layer as seen below:

  • 020 Global Content (us-EN)
  • 030 Translated Language (ca-EN) (translated from 020)
  • 040 Master Site (acme) (content from 020)
  • 050 Site (acme.com) (content from 020 and pages from 040)
  • 050 Site (acme.ca) (content from 030 with pages from 040 or ".com")

When you edit a Page in 050 using "Edit Parent," you get access to 040 Pages with Components coming from 020. To really see translated content from within the page, you need to open the local version the page (in read only mode), so that the Component Presentations are using already-translated Components.

Tip: if you're ever not promoted to edit parent, you're editing a local or localized item.

Component Troubleshooting Checklist

  • Is the correct Component Presentation on the page?
  • Is it the right Component Template?
  • Correct Component?
  • Is it checked in?
  • Are the fields right? 
  • Less likely, but is the schema right?
As a shortcut for the above, use Where Used and BluePrint viewer (hierarchy).
The BP viewer is like GPS for an item. But most of my recent authors don't use it. Why? It's the Parking Garage scenario, but for an office. Once you know where the bathroom is, you don't need directions or someone to point it out. You just walk the floors (BluePrint and folder tree) on your own.

Template-Placed Content?

Finally, does the presented content you're troubleshooting really belong to a given Tridion Page and/or its Components? Global settings, code, and "labels" may come from other Tridion items such as Structure Groups or Publications or even from other systems.

If you know how the content model works, this should be quick and relatively painless. Unfortunately for Tridion consultants new to a setup, it can take some time to understand a given content model. Familiar patterns, common practices, and the backwards approach above can help get you up to speed.

Quick Checklist (for Tridion Consultants)

For those familiar with Tridion the quick check becomes:
  1. Check environments.
  2. Check-in and Publish to be sure.
  3. Check page and components for details, missing Component Presentations, and correct fields.
  4. Check content using Where Used.
  5. Check metadata for functionality.
Have any practical advice for troubleshooting or favorite "gotcha" stories? Please share in the comments.

Power Authors Part 2: Rights and Responsibilities

In my last post, I described how to avoid the Parking Garage problem.

Now that you're sure where you are, let's consider authoring rights and responsibilities. If you're entrusted, or stuck with the job of teaching others how to use new CMS functionality, content, or pages, then use the following to add some practical accountability to your projects.

Suggested Authoring Rights

I often see "bill of rights" for certain types of customers. For example, New York's taxi passengers have a Taxicab Passenger Bill of Rights. Here are some for new Tridion content authors:


  • Authors should know where to work and have the right authorization.
    • You should have all the Urls and logins to do your work.
    • You should have the appropriate authorization to do your work and ideally even restrictions to prevent you from things you shouldn't. For example, if you can't make or change templates, you'll never be responsible for fixing them or when they go wrong.
  • Authors should have a working system and way to report issue.
    • Publishing and unpublishing should work.
    • You should know where to report issues with the website and CMS.
  • Authors are not responsible for everything.
    • Though you may care they work properly or make sense, you are not be responsible for template code or front-end design.
    • Over time, your stakeholders should learn what parts are under your control so they can ask for appropriate changes from the right people.
  • Authors should be aware of content constraints. This includes communication on deadlines, amount of content, any special restrictions on content, if not already built into the system.
  • Authors shouldn't be afraid of the system and should have a system to test on! Content Manager Preview may or may not be exactly what you see on the website, but you should have a Preview or Staging site to test changes against. Dress rehearsals are important.

Rights also come with responsibilities. I might have the right to free speech, but must use it responsibly (by apparently not yelling "fire" in a crowded theater).

Some Authoring Responsibilities

I suggest your first responsibility as an author is to create and even break any page types your team delivers. This is especially important for "Power" Authors or editorial content "administrators." If you've followed instructions and document any issues, this helps everyone on the team.

You're not in charge of completely testing a setup, but considering adding the following to your responsibilities for new page types.

  • New. Make the page using the new components and templates.
  • Old. Add existing component presentations. The old content types should still work.
  • Test outliers. Create a few varieties. Use different sized images. Have a set of "labeled" images.
  • Confirm field behavior. Make a page where you enter the field description in the field. Translate or localize everything. The documented behavior should be mostly correct, but you might interact with a content model after revisions to the design, with future options visible,
  • Test layout. Make a page with as few fields filled out as possible. Try different templates. Pick the "wrong" templates. Confirm the template names make sense.
  • Get your feedback to development.

If you can, ask to be considered for "hallway tests" early on before coding starts (this is where you can check how usable the content forms are before the templates are built on these schemas). Authors don't always get to be part of the CMS design process, but agile setups imply collaboration and iterative development.
Be quick, decisive, and vocal if needed. Development will move to the next assignment and if you don't speak up and/or confirm something was delivered as expected, you may miss an opportunity to get fixes. Developers deliver content management functionality, not the final presentation created from content. That's your responsibility.
But if you can get on the mind if developers by appreciative but honest and practical feedback, your authoring experience will be that much better. Be cordial with your team and have realistic expectations, but as an author that has to live with and support the results of a significant investment, it's worth being practical while maintaining high standards.

So we considered how to manage user's context within the Content Manager and now Power User rights and responsibilities. That covered where to find an environment and how to treat new CMS functionality.

Though checklists can apparently save lives, the best I can offer in the next post are some checklists to troubleshoot Tridion Pages.

Power Users Part 1: The Parking Garage Problem

Today's enterprise CMS users are more like Content Directors or Conductors rather than just authors or editors. These Power Users orchestrate content from multiple stakeholders and systems. After about a month of helping a customer's Power Users actually use Tridion, I have another multi-part post, this time covering:
  • Confusing Contexts and the Parking Garage Problem (this post)
  • Authoring Rights and Responsibilities
  • Troubleshooting Tridion Pages

Today's Editor is really a Conductor. Source: GinaR on Free Images.

Let's explore the problem with Confusing Contexts, which isn't unique to Tridion, but happens anytime you have a familiar, near-duplicate environments.
The parking garage (loft) problem happens when you go to a parking garage floor or hotel floor, and swear you had the right parking spot or room, only to find you're on the wrong floor. You may have experienced even in a parking lot without multiple floors if you visit it frequently enough.

Parking Garage Problem

Is this your floor?

"Is this your floor?" Source: vierdrie on Free Images.

You will occasionally (often) have the same problem in similar-looking systems.
Off-topic, but here's an oversimplified idea from gender psychology: apparently men and women have differences in how they navigate. Studies and experiments show men tend to rely on turns and distances (more often) whereas women use landmarks (more often). I wouldn't completely redesign systems on this observation--if you read the brief on a Netherlands parking lot experiment, you'll see they were careful to say "women reported more landmarks in their route descriptions than men, whereas men used metric terms more often than women." Before assuming men are better at navigating than women, read a more holistic perspective that hints we need both and another point that the difference might not even be because of evolution.
So let's expand the Parking Garage metaphor to software with development environments. First imagine a parking lot that changes over time. Your team is responsible for designing, building, and updating this parking lot in near real time. First add multiple floors then replicate it so you also have a "development" parking structure, a test version to make sure your design changes work, and a near-duplicate dress rehearsal parking lot where you accept changes.

In Tridion terms, take 3 or 4 CMS environments times 2 or 3 target types to get 6 to 12 combinations. Add BluePrinting (floors in our metaphor) and you can easily get lost without the right tools and practices. This is ignoring scenarios where a new cloud instance is just a right-click away.

Here are some practices to avoid or reduce the Parking Lot problem with Tridion setups.

Don't Lose Your Car

Visual Hints

Ask your team to skin your CMS environments. It doesn't have to be a big front-end effort, but make the environments different. At the minimum replace the landing page set in the default Custom Page.

Examples:
  • Tridionaut Mihai went dark a few holidays back
  • I "branded" or skinned the Content Manager Explorer with a different logo and set the CMS name
  • Find non-Tridion examples in the real world anywhere you see a themed parking lot, floor-specific decorations, and/or colors.
At my last trip, the hotel kindly added floor-specific art work to let hotel guests know what floor they were on. 

XPM Button

Use Experience Manager (XPM). In addition to letting you start XPM, the Tridion button basically says "this is not Live."


Naming Conventions and Structural Differences

Ask IT Operations to replace IP addresses with domain names when possible. Use a naming convention to easily identify or switch between URLs. For example you might have subdomain a such as dev, test, qa, or accept. Production might just be "cms." For example, the SDL Web Professional Services training environment has:
  • CMS.Electridion.com for the CMS
  • Staging.Electridion.com as the Staging US English site
  • www.Electridion.com as the "Live" US English site
Though you might localize folder names (if following this advice to not rely on naming conventions from Ant P), which is similar to re-arranging the furniture on a floor, this might impact templates that rely on paths and make porting content harder.

Use Tridion's GPS and Browser Search

Within a given CMS environment, use Tridion's version of GPS: the BluePrint Viewer. This pop-up lets you quickly see where an item is created (which Publication) as well as how its been shared or localized in child Publications.

Interestingly enough, I don't see Power Users actually using the viewer much. In terms of the Parking Garage and multi-floor building analogy, I think it's because you eventually become familiar with an environment and its organization, including Publications, Folders, and Structure Groups.
When you first arrive somewhere you might ask, "where's the bathroom." But once you're familiar with a place you don't have to ask anymore.
In my next post we'll take a look at author rights and responsibilities.

Fields and Folders are about the How not the What

Imagine being a Tridion consultant, helping content authors with setup you're not quite familiar with yet. You're asked:

"What does this field do?"

That can be the most embarrassing and challenging question I get from content authors when looking at an unfamiliar SDL Tridion setup simply because the entry forms are templates are configurable, programmable, and extensible.

Related to this is, "Where should we put these items?"

This one is slightly easier because the answer depends on the update process in terms of:
  • Who updates them
  • What types of items are they
  • Where are they used?
  • How frequently are they updated?
The answer to both these "what" and "where" questions should be a "how."

Swapping Parent-Child Publications in SDL Tridion

Tridion BluePrint changes can be difficult simply because of dependencies. Creating a BluePrint and some changes like inserting layers, adding branches, and changing priority are trivial.

You could even "copy" certain items up a BluePrint by changing releationships, making a copy, and rewiring the original setup. Again, the biggest catch is not having the right dependencies higher in the BluePrint (e.g. no templates to make pages in a content Publication)

Don't let anyone tell you BluePrint changes are impossible or extremely hard unless they understand BluePrinting and how your BluePrint is designed.

Here's an example where I swapped a Parent and Child relationship. Don't try this at home without a backup and a strong understanding of the Tridion Object Model (I'm not taking about the API).

You most likely have this in your BluePrint:

New Publication

Inserting a new Publication is simple:

  1. Create a new Publication (250 in the example), adding the same 200 parent Publication before saving
  2. Add the new 250 Publication as a parent to the 300 Publication
It's like cutting in line.



Swap

To perform a "swap" make the changes in reverse:
  1. In 300 swap parents.
  2. In 250 swap parents. 
  3. Fix names.



What can go wrong?

For most issues, Tridion will prevent you from saving a Publication change that breaks a dependency, thing includes things like:

  • Naming conflicts
  • Links to items local to a parent Publication that would break
  • Localized items in child Publications as seen below



But with clever timing or dumb luck you might be able to trick Tridion into saving an invalid reference. So always make a backup before making these types of changes and possibly validate relationships manually or with the Content Manager APIs (Core Service for the developers).

BluePrint Change in Under Five Minutes


After SDL Innovate 2014, I'm feeling bold enough to add audio and my smiling, drowsy, face. But notice the "Context Collapse" David Wesch describes. Without an audience, it's easy to draw inward.

Maybe I'll present to an SDL Buddy or when I'm more awake to liven up the presentation next time.




SDL Innovate: The Consultant in a Hat

SDL Innovate featured a #selfie contest, which I'm not sure I was even eligible for. But as a social media contest of sorts, I thought it'd be fun to well, join the fun.

Like back when I used to dance, I've gotten more stage fright around friends and peers than in front of large, anonymous crowds. I was nervous before taking some of these. :-)

Laptop selfie. I wasn't as self-conscious since most didn't notice the Web camera. 


Dynamic range would have helped with the contrast... maybe.

If you're wondering, "why the hat?" it's because it was the nicest-looking one at Target and for practical reasons: my hair was not long enough to stay in a ponytail yet. The real question then is, "why the long hair?" You'll have to catch me on a project or another event to get that answer.

It's a sign. Literally. On the ceiling!

I was nervous before getting this selfie. The singer was great and didn't seem to mind, though.
I've performed in front of audiences before, but I doubt I could have walked on stage for a better selfie.

This was easy since I was hiding in plain sight.



Cheesy Smile meets the Tridionator.

Mae I take this pic?

My favorite. I'm a fan of books like The Art of Explanation. I loved watching Secret City when I was little. Much thanks and props to +ImageThink for drawing my personal, brand-fanatic CXM story

My colleagues dared me to grab this selfie with my future self.

See the screen? That's the little guy below...
"I don't always do software demos, but when I do, it's for Tridion."

You might not recognize this guy without seeing the shoes.

Personally, I think SDL Buddy should have won the #selfie contest.

The funny thing is the anticipation of either taking a pic or what people might think after posting it felt scarier than it really was. My younger friends and family on Facebook and they seem quite comfortable sharing (fairly) personal details, but I don't see many sharing about work except the odd complaint.

I wonder if it's always harder sharing with or for your peers and colleagues? It's kind of sad because my 5-year old loves sharing what she did, learned, or made at school. I don't want her to lose the belief that she's creative or that her "work" is worthy.

If I've told you to (blah blah) blog, it's because you have a wit, charm, or some expertise the World could use. It doesn't even have to be this particular industry. Share, engage, or leave a legacy. It doesn't have to be blog posts, you could perform, code, practice the Art of Explanation (draw), Enchant others, or otherwise Show Your Work. Be a Linchpin.

If you were at Innovate, keynote speakers Josh Linkner and Ted Rubin told you variations of the same theme.

And if you've noticed, smart and creative people are making a living encouraging others to be creative. After reading those books or hearing presentations, you'll realize it's not about being good enough, it's about passionately doing whatever it is you're good at. Today's most rewarding and effective work involves creativity, passion, and connection. These thought leaders are actually not much smarter and creative than us. They're consistently creating something new and helping break down old expectations of what work really is about.

We can have jobs, careers, or better yet, vocations. It's not play to work vs. work to play, but work to have fun. Work to make a difference.

This might be the first time in history where anyone's contributions could be recorded and saved for "eternity." Welcome to immortality. If it sounds like too much pressure, don't worry, the whole World won't read everything you post. Find a way to share more by caring less and my hat's off to you.

SDL Innovate 2014: When Copying Makes Sense with Tridion

I posted how Context was part of my SDL Innovate 2014 presentation. Let me explain the ideas behind prototypes and what "templates" mean to typical knowledge workers.

You've probably read before it's impossible to copy items across publications in SDL Tridion or that re-use is a good idea. I'm sharing ways to cheat this supposed restriction and when to break this guideline.

When Re-use Doesn't Apply

Though sharing and re-use are good CMS principles to apply, they don't always apply.

A classic "gotcha" is re-using a banner, image, or component across many, but not all, pages in a website. The temptation is to re-use these by placing them on many pages as component presentations (often statically).



As I've explained before, publishing will update items that use your item. So if you statically re-use a component in several pages, publishing it will publish it across those pages. In this case, moving this re-used element from a component presentation to something more dynamic, possibly referenced by templates will:
  • Reduce authoring steps (maybe set a banner in Structure Group or otherwise configure them)
  • Reduce publishing and isolate publishing to content changes
  • Increase consistency on the site (fewer images)

Retail's View of Versioning

Some of my customers intentionally make copies of managed items (components or pages).

Retail customers prepare weeks to months in advance of a page and related assets. To manage these in Experience Manager and publish and test well-ahead of schedule I've seen a few work on separate Content Manager items that will eventually become the "active" version on a given date.

You might cringe, thinking "but that's not managed!" and you're absolutely correct.

But again, start by naming the content types. Look for "product," "seasonal," or "promo" and you have plenty of non-managed Real-world counter parts to such an un-managed scenario:
  • Product Brochure (versions and variations)
  • Holiday Specials Flyer (each new one is copy and pasted)
  • Promotional Advertisement (submitted as an image or included in another pamphlet, event agenda, or brochure)

Saved As...

How often do you have a single physical or digital copy of these? Do these look familiar?
  • ProductBrochure_v0.1.docx
  • ProductBrochure_v1.0.docx
  • ProductBrochure_reviewed-by-CEO_v1.1.docx
  • ProductBrochure_variation_v1.1.docx
  • ProductBrochure_merged_final_v1.2.docx
  • ProductBrochure_final_final_v1.3.docx
On the Web and especially with Tridion, though you can re-use content definitions, templates, and site structure across seasonal campaign- or micro-sites, the the approval, authoring, and page placement are all fairly different which means though pages could be localized, the content is separate.

Item description variations seen for multinational customers might have very similar content that you would typically localize across translated/country-specific publications, but with enough differences that separate "versions" of the content are needed.

Prototypes Again

We're talking about the space between well-structured content and templating. This is the variations seen in prototypes, which is what everyone else call templates.
  • That Word template for proposals? Prototype.
  • Creating a new Blog post with some default rich text? Prototype.
  • Marketings PowerPoint template? Prototype (and a theme).
How do these apply to Tridion?
  • Copy & Paste
  • Page Types
  • Content Types
But you need good definitions up front. You can define them before-hand or create them, but without prototypes, authors lack examples and context.

Large setups with very different (internal) cliens on the same BluePrint might even copy templates. This wouldn't make sense except for cases where the chosen design and functionality is decentralized. So the central IT team can instead "release" sets of functionality. They can announce a new schema or component template and then dozens to hundreds of independent groups will slowly adopt or ignore "new" CMS functionality.

To make authoring faster, more consistent, and easier, you need to start with good default, or sets of defaults. So let's start with something everyone should be familiar with, document "templates" in the form of Tridion Page Types and Content Types.

SDL Innovate 2014: Web Points and Questions

There were plenty of great questions and points that came up at SDL Innovate related to Tridion. Here are three that came up with my perspective as a consultant in Professional Services.
Disclaimer: mentions of future releases and functionality are public to the extent they were mentioned at an industry conference, but nothing is official until it's released on official channels (i.e. SDL.com or TridionWorld).

Tridion Upgrades?

What will the upgrade impact be of the site factory features, reference implementation, delivery-side content model, and the cloud options?

We'll have to wait for the official details, but moving from on-premise to cloud would likely use a mix of database migration, the Content Porter, and/or the Core Service if needed. Though an in-place upgrade doesn't make sense, consider how a cloud solution will change future upgrades.

I suggested the hardest parts aren't the upgrade, but understanding how companies will use the features. Do you have ideas for a "templated" site, are you using the latest Web approaches to take advantage of the reference implementation, and do you prefer fields over component presentations and pages in delivery?

One-Stop CXM Shop?

The Forrester session that there isn't a single vendor who can provide Customer Experience Management.

Well, that's part of the point of SDL Innovate, to demonstrate how and where it can help businesses manage their customer experience. Insights, orchestration, and contextual experiences aren't necessarily technological, but SDL provides software to analyze website behavior as well as social sentiment (commitment), detect context, translate content in multiple ways (people, machines, or both, and now over the cloud), manage Web content, manage documentation, manage campaigns, serve matched or targeted information, and more.

An important point is that companies have much of the tools they need to manage their customer's experiences and any one vendor shouldn't attempt to replace existing solutions. SDL doesn't sell call center software (workforce management/optimization), but can use call center data or otherwise provide content, documentation, or translation to or for customer service.

If you look at the Ambient Data Framework, the common integration piece between SDL's offerings, you'll see the opportunity to integrate with nearly anything.

What About QA?

How can you test these multiple, contextual experiences?

Tridion's in-context editing interface, Experience Manager, has three features to help here:

  • Device preview, which changes the header sent to your Staging or Preview (non-Live) website
  • Personas, which show the site according to a given persona's segments as set up in Audience Manager
  • Footprint sets, which let you customize session information such as content language, search term, referrer URL, or even custom settings
Did you ask or answer other interesting questions at SDL Innovate? Engage and leave a comment!

Not Quite Contextual Screens... Everywhere

In the last week or so, with SDL Innovate 2014 approaching, I took pictures of screens that had some sense of "context," but it seemed most presented typical magazine- or broadcast-like experiences.

Could a faucet display in Las Vegas show something related to the context of going to the bathroom? Does the faucet know your gender?




Could a taxi screen know location or time  of day? Airplanes and mobile phones show location and time to destination, but this seems like a TV broadcast.


Not that I'd want devices to recognize me, per se, but this vending machine could know it's outside a certain store. Could it offer a mobile coupon or another way to interact with it? If I buy something, could the point of sale know enough to give me rewards points?



The Starbucks App recognized my location and reminded me about my gift card. This is probably old news to you but I remember when this type of capability was prefixed with, "in the future you might get geo-aware coupons."


I've written about Creepy CXM and personally don't want my devices tracking everything and assuming they know me. But a screen that helps me out  in the right context could make for a good experience. Saving time, offering helpful information, and reminding me about things I'm genuinely interested in can be positive contextual experiences.

Maybe things like:

  • "By the way, the next show starts in 10 minutes and it's not far from this bathroom."
  • "You're 15 minutes from the airport."
  • "Hello, it's cold today. Sodas are on sale!"
Translating this to the Web,, a contextual experience is what a user is doing or trying to achieve as he or she interacts with your company on whatever devices and scenarios. This could include:

  • Navigation and interaction optimized to devices (fingers are less precise than mice, but you can't "pinch" with a mouse)
  • An action a customer may take across devices (e.g. check into a flight, purchase a ticket, research a product)
  • Time or event-based scenarios where "matched" events are presented to a customer related to what they're doing on the site
If you're leaving the SDL Innovate conference, see what contextual experiences help you along the way.
  • When you check-in from email, did you get the right screen? Was your name or other details passed to the website?
  • Did you get alerts related to your flight? Did you get real-time traffic?
  • Do your apps show you the local weather or time? What about websites?
  • Was the content in your preferred language?
  • Are there power plugs where you expect them?