As 2018 is coming to a close many people are planning their projects next year and an upgrade might be part of it.  The good news with the latest SDL Tridion Release, named ‘Tridion Sites 9’, is that the word ‘Tridion’ is back in the name!  OK, all kidding aside, the other good news is that little has changed in the product since Web 8 and Web 8.5.  Meaning, if you’re thinking to upgrade from 8.1 or 8.5, expect few hidden bumps or issues.  However, the bad news is also that little has changed since Web 8.1 or Web 8.5.  So, if you were expecting to see some of the suggestions on the SDL Ideas Site, then you’ll have to wait a bit longer.  One long-standing request that is implemented (I’m aware of it since at least 2007) is image cropping and re-sizing within the backend GUI.  Yay!  And if you’re curious what’s coming out in 2019 and beyond, watch the Tridion Developer Presentation by the SDL team about the GUI vNext here.  For a complete list of the new features in SDL Tridion Sites 9, check out the release notes.  Despite the good and bad news, the fact is that it is important we keep our software current, as it both gives us the latest and greatest version, happier users, a larger version number (just kidding!), and also longer support.  In this article I will give a list of some of the things to consider when upgrading.

Upgrade Process

The upgrade process is usually somewhat confusing, as the architecture of Tridion in an enterprise setup can be complex and a bit overwhelming.

I tend to think of it from a bird’s eye perspective, and divide the architecture into 3 large pieces:  Content Management, Publishing, and Content Delivery.  These pieces all affect various parts of the organization and the ways they work – and this is something we should consider as part of our plan when we upgrade various mission-critical pieces to the new version.

Before we begin, if you’re using a web framework such as DXA, then you need to check if the version of DXA is compatible with the version of the Tridion upgrade.

First, I always suggest to start with a ‘sandbox’ server, which can be a copy of the Development environment.  This is a place where if we make any mistakes, we won’t do any harm.  We try to get as close to production as possible, but sometimes we might not have various components such as load balancing configurations or other third-party systems.  Regardless, we try our best to have a fairly decent environment here that resembles production.  We should also have all of our latest Templates, Event System Code and other Tridion extensions in this environment.  This is where most of our risk lies, and where we will want to have time and a safe place to try the old code in the new version – to fix any potential issues that pop up.  Once we analyze and try out our customizations in the Tridion environment and prove they don’t break the newly upgraded system, then we can relax that most of the risk of the upgrade is handled.

In the sandbox environment, most of the customizations and extensions in the Tridion system are in the CMS or the Publishing side, although many people also extend and use the Content Delivery APIs as well (using Java or .Net).

I suggest we start with the Content Manager server upgrade, as it is fairly quick and fairly painless, and the CME / DB usually upgrades without any major issues.  This then allows us to test our Templates and backend customizations.  Next up would be the Publisher upgrade, and again it is fairly painless.  Finally, we would upgrade Content Delivery, and the Micro Services.  This is a bit more time consuming and also can be trickier, given the number of moving pieces and numerous configuration files.  However, if you’re upgrading from 8.1 or 8.5, your experience should be fairly smooth, since as I mentioned above, little has changed…  Please refer to the SDL Docs Upgrade documentation for more details.

The first thing we want to try after we upgrade is to Publish.  This tests that all the layers of the architecture are working together and we can deploy content changes.  If the publishing doesn’t work, common issues are a configuration issue in the Deployer_conf file (check the Database settings, etc) or that the items hang in the Publishing queue and might need a Publisher restart.  Once items are publishing you can move onto testing Publishing other pages, and page types.  We usually suggest to try to re-publish an entire site, or sites, if it is possible within your environment.  If not, then select a subset of pages which represent the main page types and publish them to be sure the mechanism works for these as well.

Next we would want to look at any advanced extensions or customizations.  I would suggest that someone who has been a member of the Dev team for a while make a list of the customizations, the locations of the files, what the customization does, and how to test it.  This is very helpful not only during the upgrade, but in the future for testing as well.

If you’re using the excellent Alchemy Framework, make sure to check if the plugins continue to work with the new GUI, and also check to see if a new version of Alchemy is out and you could upgrade to take advantage of new features and compatibility.  Other common things to check are ‘Custom Pages’, Event System code, GUI Extensions, Core Service apps and templates that call external services.

Assuming everything still works, then we would want to update the Event System, GUI Extension, and Core Service apps to reference the latest Tridion Sites 9.0 DLLs instead of the 8.1 or 8.5 ones.

And, again, test everything to make sure that nothing breaks, and celebrate that this step in the upgrade has gone well.

Next up would be to look at any Publisher / Deployer customizations, as it is common to publish content to various search engines or databases.  Usually this code is written in Java, and with a bit of luck you will have a Java developer handy that is familiar with the code and Tridion, and can update the app to use the latest Tridion JARs, and test it on his local development machine.  This sometimes can be a but tricky if the developer doesn’t know Java, or doesn’t know Tridion.  So, if you have one of these types of extensions, then before the upgrade begins you might want to confirm the availability of the Java developer to support your team.  He or she will not need to help out in the above steps.  Also, the upgrade can be done on a local development machine and tested with Deployment Packages, and in that way the Java dev can use their local IDE such as Eclipse or NetBeans to debug the code.

Finally, if we are using any Content Delivery APIs, we would want to upgrade our WebApps to take advantage of the latest features.  This includes both .Net and Java environments.  The Tridion installation media includes the latest DLLs or JAR files, and we would then need to update our WebApps and re-compile them to take advantage of the latest version.  If you have some automated tests of the live website and it’s possible to run them here, that would be great and very helpful.  Also, it’s a good time to check some basic performance numbers, if possible.

If you’re using a Web Framework such as DXA, then you might need to also upgrade that to the latest version to be compatible with the latest Tridion version.  This would be part of the ‘upgrade WebApp’ step.

At this point most of the article and attention has been on customizations and the ‘risky’ part of the upgrade.  I haven’t discussed TopologyManager or MicroServices in detail, as they already exist in Web 8.1 and 8.5 and should continue to operate in more or less the same way, without any major changes.  If you’re upgrading from Tridion 2013 then you would need to plan a but more time to handle the MicroServices and TopologyManager sides of the upgrade.

So, we come back to our original question:  Why Upgrade?  It’s a good one and it’s sometimes hard to answer.  With large software packages that rely on many external systems (Database, Server, etc) it is good that we maintain them and keep them all in alignment – so they can all operate efficiently and also as expected.  We also stay on a same version as other customers, and with that, we benefit from any hotfixes or service packs that solve open issues.  Finally, we help provide our end users with the best that Tridion Sites has to offer at this point in time.  I’m a big believer that we can always do better, and if you’re using an older version of Tridion, probably the business and users would be happier and more efficient using the latest version of the product.

If you need support or help for an upgrade please feel free to contact me at robert.curlette@gmail.com

 

 

 

 

 

 

During a recent DXA project we experienced strange errors when publishing some content.  We are moving to DXA and the new DXA templates try to render every field of the Component and linked-to Components.  This is usually great, but if your content is a bit stale or outdated, or possibly contains an invalid value (like mine did) then the following script might be helpful.  (You should create a normal Core Service app, mine is a Console App, and reference all the usual Tridion Assemblies).

It was complaining that a Category did not contain the Keyword.  The error message was ‘Keyword with title ‘Long Lost Keyword’ does not exist in Category ‘Amazing Category’ [tcm:7-12345-512].’ After some digging we found a Multimedia Component with invalid Metadata.   To view the invalid Metadata we used the excellent Tridion Alchemy Plugin Show Item XML from the team at Content Bloom.  If you haven’t yet tried Alchemy yet, now is the perfect time, and this plugin alone makes it worth the (free) install.  You can even just install it on your Dev server if you want.

The simple solution for our invalid metadata problem would be to change it in the GUI, but the GUI didn’t show the value, and we were stuck.  So, we decided to write a small Core Service script that updates the Metadata field or Removes it.  Hope this helps.

 

Currently as part of the Publish process, in a post-build event I am sending JSON to an external search engine.  As part of that process, I wait for a response from the search engine that the content arrived successfully.

However, when it doesn’t arrive, I wold like to notify authors via the PublishQueue status that it didn’t get there.  One solution is to update the Publish Status on the published item, setting it to Warning or Failed, and also update the text in the Publish Transaction.  The code below shows how we can do this.  I implemented it as a WebService, so it is possible to be called from any external system, including the event system.

 public void Get(string transactionUri)
 {
      string uri = "tcm:" + transactionUri;
      string binding = "netTcp_201501";
      SessionAwareCoreServiceClient client = new SessionAwareCoreServiceClient(binding);
      PublishTransactionData trans = client.Read(uri, new ReadOptions()) as PublishTransactionData;
      string title = trans.Title;
      trans.State = PublishTransactionState.Warning;
      trans.Information = "Didn't make it to Search Index - please publish again";
      client.Update(trans, new ReadOptions());
 }

 

While creating some JSON for the Metadata on a Structure Group in C# I came across an interesting challenge to display the URI and Title of the Embedded Schema. Initially I was using a FieldDefinition instead of an EmbeddedFieldDefinition and then the ID and Title properties were not available of the Embedded Field. Casting the variable to an EmbeddedSchemaFieldDefinition was the proper way to access the EmbeddedField definition info.

 

EmbeddedSchemaField right1Field = pageMetaFields[fieldName] as EmbeddedSchemaField;
EmbeddedSchemaFieldDefinition def = right1Field.Definition as EmbeddedSchemaFieldDefinition;

embeddedSchemaFieldDef.RootElementName = def.EmbeddedSchema.RootElementName; //"Content";
embeddedSchemaFieldDef.Id = def.EmbeddedSchema.Id; // "tcm:11-123-8";
embeddedSchemaFieldDef.Title = def.EmbeddedSchema.Title; // "Metadata fieldname";

2016 has been a crazy year – let’s just agree on this and not get into the details!  But, 2016 also did have some positive moments, especially in the Tridion community. Here I hope to highlight some of the positive contributions the community has made this year and hope that next year we will see continued support for these amazing initiatives!

DXA

This year has been the year the DXA framework (formerly known as the SDL Tridion Reference Implementation) has made made some traction and we’ve seen increased usage in projects.   The DXA team recently released version 1.7 and if you’re curious to find out what has been added, fixed and improved in this version then please see the release notes here.

We can see that DXA has been very active from a number of areas, such as their github repository with 1465 commits (https://github.com/sdl/dxa-web-application-dotnet/commits/master) and 360 questions on the Tridion StackExchange forum (http://tridion.stackexchange.com/questions/tagged/dxa?sort=newest&pageSize=50)

One of the nice things about using DXA is the modules that play nicely with other SDL products, such as Experience Manager, Audience Manager, Media Manager and Context Expressions. If you’d like to download them for free, then the latest versions can be found here, https://github.com/sdl/dxa-modules/releases

The official documentation has some good content and can be used as a reference, https://docs.sdl.com/LiveContent/content/en-US/SDL%20DXA-v7/GUID-8173623D-D605-4962-AFBD-25D5F6DC6D93

And if you prefer online or classroom training, it’s now available from SDL for DXA too, http://training.sdl.com/services/education-certification/training-product/web-content-management/index-tab4.html

If you would like to build a small microsite with your team in a workshop setting, then you may be interested in the DXA Microsite workshop that I teach. It is a 4 day course where we go over all the basics and walk the team through building a microsite based on your requirements. It is taught both online and remote. If you’re interested, please contact me at robert.curlette@gmail.com and mention the DXA microsite workshop.

Alchemy

Alchemy is the framework that makes your editors and authors happy, and saves time for everyone using the Tridion CMS Editor interface. A full plugin GUI framework created by Alex Klock and supported by Content Bloom, this is the framework you’ll install in 2017 to impress your content authoring team. The only requirement is that you use Tridion 2013 or SDL Web 8.

Installing the framework takes minutes, thanks to the nice MSI install, and it’s a 1 time install on the CMS server. The installer can be downloaded from here, just need to register first,  https://www.alchemywebstore.com/ See how easy it is with this video from John Winter, http://www.tridiondeveloper.com/how-to-install-and-uninstall-alchemy-for-tridion-web

Alex Klock and Tanner Brine  presented Alchemy at the Tridion Developer Summit 2015 and the video can be seen here, http://2015.tridiondevelopersummit.com/2015/home/transmute-tridion-into-the-lean-green-content-management-machine-of-your-dreams-with-alchemy4tridion/

This year the Alchemy Webstore  saw a lot of nice improvements and is a really easy to use one-stop-shop for finding all your Alchemy community plugins. As of now, all plugins are free, and can be used in your project without worries. Several new plugins arrived this year, including ‘CommonKeyboardShortcuts’ (https://www.alchemywebstore.com/plugins/CommonKeyboardShortcuts), Save Close Publish Page, (https://www.alchemywebstore.com/plugins/Save-Close-Publish-Page), and Peek (https://www.alchemywebstore.com/plugins/Peek).

Another reason to use Alchemy is the excellent packaging model, with .A4T files, and easy drag-n-drop deployment of the plugins you write. So, if you haven’t given it a spin, please do so now.

And, if you’d like to watch some video tutorials to help get you started, check out the amazing Alchemy Code Dojo presented by John Winter here, where he builds an Alchemy plugin from scratch in front of a live audience, https://vimeo.com/170368377

In case you can’t get enough of John or videos, check out the excellent series below on creating an Alchemy plugin:

Creating an Alchemy Plugin: Step 1 – The tools, http://www.tridiondeveloper.com/creating-an-alchemy-plugin-step-1-the-tools

Creating an Alchemy Plugin 2: Sample project overview and refactoring, http://www.tridiondeveloper.com/creating-an-alchemy-video-2-sample-project-overview-and-refactoring

Creating an Alchemy Plugin 3: Ribbon Toolbar and Context Menu, http://www.tridiondeveloper.com/creating-an-alchemy-plugin-2-ribbon-toolbar-and-context-menu

Alchemy Training Video 4: Creating a Popup Window, http://www.tridiondeveloper.com/alchemy-training-video-4-creating-a-popup-window

Alchemy Training Video 5: Adding CSS and JavaScript to our Tridion Popup Window, http://www.tridiondeveloper.com/alchemy-training-video-5-adding-css-and-javascript-to-our-tridion-popup-window

If you would like a hands-on workshop or course on Alchemy, I am teaching a 2 day course online or onsite, and if interested please contact me at robert.curlette@gmail.com

Conferences

Finally, this year we saw 3 technical Tridion conference events, recognizing the appreciation of sharing knowledge in the Tridion (SDL Web) community and that meeting and discussing technical solutions in person is priceless.

The Tridion Developer Summit saw more than 140 Tridion developers and consultants get together in Amsterdam for another 2 days and over 20 great sessions and sharing. If you missed it, or would like to see a talk again, all videos are available online here, http://2016a.tridiondevelopersummit.com/2016/videos-tds/

The next TDS is taking place on 11-12 May 2017 in Amsterdam and promises to be filled with technical Tridion content and lots of sharing opportunities.  Registration will open in early January.  If you would like to attend or present, please contact me at robert.curlette@gmail.com

This year we saw the first India Tridion Developer Summit, and I was honored to present about the Alchemy Framework. It was very well organized and had more than 60 enthusiastic Tridion developers from across India attending. I really enjoyed meeting so many active Tridion implementors and discussing implementations with them over delicious Indian food. I wrote about my experience here, http://www.curlette.com/?p=1492 Great job for the organizers and a nice writeup by Pankaj Gaur here, https://pankajgaur83.wordpress.com/2016/02/11/highlights-sdl-web-8-dev-summit-at-india/

Just last month we had the SDL Connect event in San Francisco and it was filled with an amazing energy and spirit. Days 1 and Day 2 were mostly for the business and marketing professionals.   It was great connecting with former colleagues and meeting new people.  Highlights from day 1 are here, https://www.youtube.com/watch?v=SeRe95Q8nAM.  The best was saved for last, and on day 3 we had a day of technical Tridion sessions in the same flavor as TDS, including a great Product Roadmap presentation by Alvin Reyes, DXA session by Bart Koopman, Cache invalidation talk by Mihai, Alchemy talk by Tanner Brine, and I presented a talk about upgrading to Web 8. Overall the event was a lot of fun and I look forward to the next one.

DD4T

This year the DD4T framework continued to mature and we saw a 2.1 version released.  But, most importantly, a decision was made to merge DD4T and DXA into 1 version, and to be named ‘DXA 2.0’.  We expect to see a release of the love child of DXA and DD4T sometime in 2017.   You can read more about it from Nuno and Quirijn here, and from Pankaj about why it’s merging here.

Summary

2016 was a year that we saw the DXA and Alchemy frameworks mature and gain wider acceptance. This should be a bright spot for anyone working with Tridion and investing in improving their implementations. I hope next year will bring more opportunities for sharing, more conferences, more events, and most of all, more fun!

Tridion VBScript Mediator*

April 1st, 2015 | Posted by Robert Curlette in Tridion - (2 Comments)

One of the many things I miss in Tridion 2013 SP1 is the ability to write VBScript code combined with Compound Templates.  Tridion was kind enough to provide the legacy pack for us ‘hardcore hackers’ who have our 10,000 line VBScript functions library perfected over the years in VBScript.  However, when we want to move to Compound Template programming, we’re left out in the cold with our VBScript skills and have to suffer with DWT, Razor, XSLT or C# coding.  Who wants to do that?  If we want to use the OOTB TBBs provided by Tridion to enable XPM or publish to FredHopper (for SmartTarget) the best way is to do this with a Compound Template.  But, Compound Templating and VBScript templates are not compatible – until now.

Using the VBScript Mediator we’ll have the best of both worlds – the fluency of the VBScript language and TOM API with the power of Compound Template modules.

First, if you don’t have it already, you’ll want to download the great VbsEdit program.  They have a really nice walkthrough on their homepage of all the features.

Next, you might want to download the VBScript Reference guide in case you’ve forgotten some of the commands in VBScript, such as setting an array to nothing.

Finally, go grab the code for the VBScript Mediator and start to have fun again with programming templates!

* This is an April Fools Joke!  VBScript in 2015….really?!

File, New Template

February 27th, 2015 | Posted by Robert Curlette in Tridion - (0 Comments)

Going back in time, year 2000, Active Server Pages was all the rage, performing server-side magic and integrating with databases with ADO. Tridion had just released version 4.0 and adopted the MS Scripting Host, supporting VBScript and JScript as the de-facto standard scripting languages. We had DTD Schemas, XML, Blueprinting, and re-usable content. Content Delivery was 1 ISAPI filter to render the dynamic links. Life was good.

Today the landscape is very different and complex, with lots of the magic happening on the front-end Content Delivery tier, Context aware web applications serving mobile and desktop devices, running the latest SDL Content Delivery stack.

Today the standard supported template languages from the CMS is almost the same as it was in 2000 – we publish content – .aspx or .jsp files, from the CMS to the Content Delivery tier. We can still use the good old deprectated VBScript language, or the SDL-created DWT scripting tags, or the recent XSLT mediator, if XSLT is your thing. So, you want to stay within the ‘supported SDL technologies and products’ arena – this is it. Not cool.

But, look around and see what the SDL community has been up to, and hang on to your hat! It’s been a very busy last few years in the SDL community and today this is where all the cool kids hang out. .NET MVC – got it, with DD4T, created by Quirijn Slings – with great Forum support (185 questions answered) on StackExchange, classroom training from Trivident, and even a ‘Reference Implementation‘ built BY SDL on top of DD4T, called DXA (as of Feb 2015). Yes, the Reference Implementation is built on top of open-source SDL community software, by SDL, and yet DD4T is community software and not officially licensed or supported by SDL.

Maybe DD4T and a dynamic MVC runtime is not your thing. Your content or design is not changing too often, and your development team is happy with the static publishing model from years past.

If this is the case then the best option today is the Razor Mediator, created by Alexander Klock – again an open-source project, and again the most cool and often used technology on new SDL Tridion projects requiring static template programming, and again not officially supported by SDL. It also has good forum support (50 answers), great documentation with plenty of examples, and is widely used. With this mediator you might publish to a .NET Web Forms site or JSP files to a Web Application.

The good news is both of these solutions play well with the _really_ cool technology SDL has been creating and supporting in the Content Delivery tier. Yes, I’m referring to the pieces that make up SDL Mobile, including the Ambient Data Framework, Context Engine and Contextual Image Delivery. In addition, all of these open source frameworks also play well with other SDL supported software including SmartTarget, FredHopper, and Media Manager.

The community has grown by leaps and bounds in the past 15 years, and today this is where all the cool stuff is happening. It’s great to see so many active members in the community. If you have written your own framework, or built on top of the existing great frameworks out there, please share your solutions so we can together build the great frameworks of tomorrow.  If you’re thinking about using one of the frameworks above, go ahead and embrace these open source frameworks and be part of the community that created them.

These frameworks and solutions would not be where they are today without the time and support of developers at these organizations:  Trivident, Indivirtual, HintTech, Building Blocks, Cap Gemini, SDL and Yabolka.  Also, a big thanks to Nuno Linhares for his continued support of the SDL Community and organizing of the SDL Tridion MVP program.

After my first entry to the Tridion Bookmarklet Challenge, to count items in the Dashboard, here is my second entry: View the Schema ID and Title for a selected Component. Drag the below box to your Bookmarks toolbar. Warning: The first time you use it the Schema Title will not load. However, from the 2nd time it will show. This has to do with the .load() argument and my lack of callbacks. It could probably be improved.

Frank Taylor implemented the same idea as an Alchemy Plugin:  What’s the Schema? It works from the Context Menu, so we can use it in more places than the Bookmarklet, and in his blog post he also explains how he made it.  Excellent!

View Schema Info

Big thanks to Peter Kjaer’s StackExchange answer about getting the $models object.

Have you ever wondered how many items are in this folder or Structure Group and wanted an easy way to count them? In the good bad old days of IE6 and Tridion 5.x we could see the amount of items selected in the status bar at the bottom of our browser. Today I don’t know if they removed that feature or it’s disabled, but in Chrome and Firefox I don’t have a way to see how many items are in a Folder or Structure Group. I often want to know because I am writing Core Service scripts to process all items in a folder and it is helpful knowing how big it is. Otherwise, it is sometimes interesting to see how many images, templates, schemas, etc are located in the system and having a simple ‘count’ of the items would be helpful.
Tridion Item Count
Install: Drag the box above to your Bookmarks Toolbar. When the Tridion GUI is open, select the bookmark to see the item count.

So this is my official entry into Dominic Cronin’s ‘Bookmarklet Challenge’. Although my Bookmarklet is simple, I believe it contains the essence of a Bookmarklet, something small and provide a useful value to those who use it.

Bookmarklet

Special thanks to Alexander Orlov, aka UI Beardcore, for the much needed help in getting access to the Dashboard in a nice, clean way without hardcoding the array position of it.

Before developing the Bookmarklet I had to consider what kind of feature to build with a Bookmarklet. The first thing to consider is the ‘context’ in which the Bookmarklet will be run. For example, when I have the Tridion GUI loaded, the context is what I can see in my view: Publications, dashboard items, and the ribbon menu bar. Another example could be the selected item, and this would then be our context and we could call WhereUsed, get Blueprint children, or access other private details of the selected item that are useful for our users. Finally, we can also perform actions with the Anguilla GUI, so if our context is a selected item, we could then do something to it.

A previous Bookmarklet created by Dominic Cronin, with code from Alex Klock, and inspired by my Stack Overflow question, allowed us to clear the MessageCenter warnings and notices in the Dashboard. Recently Roel van Rozendaal wrapped up this functionality into a pretty Chrome Extension, added it to the Chrome Webstore, and made a nice blog post of how he did it.

Only a few days left in Dom’s Bookmarklet Challenge. Good luck and may the browser be with you!

DD4T Training

December 15th, 2014 | Posted by Robert Curlette in Tridion - (1 Comments)

Want to have a DD4T Application running within 1 hour? Not possible? Today I did that at the first Tridion DD4T training taught by Quirijn Slings and hosted at the Trivident office in Amsterdam. In this course we start at the very beginning and throughout 2 days go very deep inside DD4T and learn not only how to do many things, but why they were created that way in the first place!

The atmosphere of the course is similar to other SDL Tridion courses I have attended or taught, informal and focussed on the participant. Quirijn was kind enough to entertain all of our questions and comments, providing real-time coding examples or on several occassions diving deep into the DD4T Source code to show us how it was built and why it behaves in a certain way. This is priceless and the information is not found anyplace else.

On the first morning Quirijn gave us an overview of the DD4T concepts and why the framework was created. Shortly after this he led to us create a DD4T project from scratch, and it felt effortless. I’ve spent a lot of time previously creating DD4T projects from scratch, and nothing compares to how easy it was in the class. Small tips from Quirijn saved us many hours if we were to do this alone.

Later in the day we created Page views and Component views and the exercises were very easy to get into and the environment supported us very well. The exercise content of the course is really nice, with animals imported from a BBC website, making it feel like a nice training environment. Our new views looked great on the screen with the nice content. We used Visual Studio 2013 and MVC 5 to create our solutions.

Day 2 was more in depth than day 1 and we looked into the link level logic and were given some best practices and real-life examples of when to use what link level and the implications of it. We also went over publishing sitemaps, resource files (resx), and also hints about what is coming up in DD4T 2.0. We had a long discussion on caching with DD4T and the different approaches to be used for caching.  Finally we learned how easy it is to make Preview work in DD4T (it really is easy) and see this article from Quirijn on the Trivident blog.  He also showed us how to read a configuration file from a Compound Template and wrote another nice post here.

We were also given many tips that will save us hours of time during real projects. Below I will outline some of the tips he shared, but for the full experience I highly recommend to attend this training.

Minimize XML in DD4T

– Removes Publication, Folders (saves 30%)
– JSON publishing coming in DD4T 2.0, using compressed JSON

Template Builder Popup- to select Folder or Structure Group

– Using Template Builder, when creating Template Metadata fields, starting the XML fieldname with ‘sg_’ or ‘folder_’ allows us to select the items from the Template Builder!

RenderedContent in DD4T

– RenderedContent property contains the output if it is not DD4T XMl. The DD4T TBB examines the output of the Component Presentation, if not DD4T XML, puts in RenderedContent

Resources

– Resx is published to DB
– In web.config, tell it to use the DD4T Resources provider
– Resource page path defined in the web.config
– Need to create our own TBB to publish the resx file. Reason is that DD4T does not want to imply the structure of the Key/Value Schema you need to use in Tridion. There are many different aproaches to store key/value fields.

Index Pages with DD4T

Index pages with DD4T using custom controller and action method. This allows us to easily query the Broker directly or another external system and the Component on the page is a ‘placeholder’ that says directs the Page to output the results of the Query where the Author places it.

– On the CT Metadata, add 2 fields for the name of controller and name of action. XML Names are:
– controller
– action

Summary

This training will help those without DD4T knowledge get up and running very quickly. It also will provide information and tips for seasoned DD4T experts including in-depth caching explanations, using Broker queries with DD4T, link-level philosophy, and ideas where DD4T will improve in the future. Finally, SDL is showing increased support of the DD4T framework, with the inclusion of it in the Tridion Reference Implementation, using it on SDL.com, and also recommending it for current and future customers. It’s here to stay and now we have a great place to learn more about it in person.