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.

What’s a Tridion Circular Reference and why worry about it? As it’s name suggests, it’s a link that results in a circle of endless self-referencing. This normally isn’t a problem…unless you have a template that does a loop through all the fields, and all the fields it contains, and the ones that the linked one contains, etc. You get the point…it’s possible to have a never-ending loop of links to ourselves. This happened recently on a project where we had a Multimedia Schema, with a Metadata field allowing the same Mutlimedia Schema (relatively sane, right?) for a mobile variant of the image. Then someone linked to itself (I guess they didn’t have a special Mobile version, and felt they must put something in the field) and then our looping template did its best to find all the linked items, and well, it died every time we published a page with this special scenario.

The error message we got was:
Faulting application name: TcmPublisher.exe, version: 7.1.0.1290, time stamp: 0x527d103f
Faulting module name: System.Xml.ni.dll, version: 4.0.30319.18033, time stamp: 0x50b5aabe
Exception code: 0xc00000fd
Fault offset: 0x0000000000178ab2
Faulting process id: 0x8d4
Faulting application start time: 0x01cfc009cc4fea09
Faulting application path: D:\Tridion\bin\TcmPublisher.exe
Faulting module path: C:\Windows\assembly\NativeImages_v4.0.30319_64\System.Xml\4334f45efbe62a6415f2cb7393c59f74\System.Xml.ni.dll
Report Id: d1521031-2c31-11e4-9507-0a7ec577d18d
Faulting package full name: 
Faulting package-relative application ID:

The fix I am using involves creating an Event System solution to detect OnComponentSave, in the initiated phase, if the Multimedia Component’s MobileImage field links to itself.

And if so, throws an exception, not allowing the content to be saved. And in the process, we save the Publishing Renderer from exhausting itself with endless links.

Code:

Publishing is at the heart of every Tridion implementation – and when it breaks, I feel a bit sad inside.  Recently I had a strange content scenario breaking the Publisher service (and the TcmServiceHost.exe in Preview).  This happens about 1 time every 2 weeks or so, but when it does, it’s painful.  A seemingly normal Multimedia Component could cause this to happen, and we had no way to predict it.

Scenario:

1.  Publishing a Multimedia Component (linked to Page) gets stuck at the ‘Rendering’ phase and will not continue or fail.
2.  All other pages after this remain waiting in the Publish Queue.

To fix it:

1.  Remove item from Publish Queue
2.  Re-start Publisher

Troubleshooting the problem:
1.  Remove the Multimedia Components 1 by 1 until the problem one is found.
2.  Create a new Multimedia Component, using the same image, and replace the old broken Multimedia Component
3.  Re-Publish

We are still looking for the root cause.

In the meantime, we need a way to make sure the Publish Queue does not get stuck.

The Solution

Create a Windows Service that scans the Publish Queue at a regular interval (ie. 5 minutes) and if an item is in Queue for 2 intervals at the same phase, it’s stuck.  Remove the stuck item from the Queue, restart the Publisher service, and email an Admin.

Source Code

The Source Code is on GitHub at https://github.com/rcurlette/TridionPubQMonitor

Main class:  https://github.com/rcurlette/TridionPubQMonitor/blob/master/TridionPubQMonitoringService/TridionPubQService.cs

To Run:
1.  Download Source Code
2.  Add the Tridion Core Service DLL and Config to dependencies folder
3.  Update the app.config with your username / password for the Core Service
4.  Add mailtrap.io settings for sample email
5.  Compile
6.  Open Command Prompt (Run As Admin)
7.  Run ‘InstallUtil.exe TridionPubQMonitoringService.exe’
You can run this on the .exe file built from your Visual Studio in the bin/Debug folder
8.  Start the Service in the Services Control Panel.  Look at the Tridion Event Log for messages about starting, stopping, etc
9.  To recompile, stop the service, uninstall it ‘InstallUtil.exe /u TridionPubQMonitoringService.exe’ and then compile and install

Tips:

– Change the Phase to a phase that items stay in for more than 5 minutes while testing.  I had a lot of pages going to ‘Failed’ on my local Dev box, so I set it to that phase.  But if your Dev server is in better shape than mine, maybe you would want to change that to ‘Success’.

– You should see the items disappear from the Publish Queue at some moment (after 2 time intervals have passed) and also a message written to the Tridion Event Log.

 

Site labels and other resource strings are something we can manage in Tridion and the SDL Tridion Reference Implementation (STRI) also allows us to manage these key/value pairs in 2 ways.  The sample website uses a dedicated Schema for the resources and hardcodes fieldname / fieldvalue in the Schema.  The other way is to create a classic config Schema with a multi-value embedded key/value pair Schema.

Updating the existing labels

In the CMS you can find the example resource strings in the Component located at ‘\100 Master\Building Blocks\Settings\Core\Site Manager’. To add a new resouce string, we should edit the Schema and add an additional field to the Schema.

How do we use the existing resource strings in the MVC app?

The Place HTML View has a good example: ‘…\tri-master\web-application\Site\Areas\Core\Views\Entity\Place.cshtml’

@Html.Resource("core.teleponeCaptionText")

Publishing the Resource Strings

And after we change the value of a setting or resource string we need to publish the Page ‘\400 Exmaple Site\Home\_System\Publish Settings’.

The Resource string Component is linked to our ‘Core’ settings Component here: ‘\100 Master\Building Blocks\Modules\Core\Admin\Core’

Creating a new Label set

Creating a new label set is quite easy and also already documented here:
However, for me I wanted to add this to the existing STRI demo site, and that was not 100% clear. Here is how I did it:

  1. Create a Folder ‘Building Blocks/Settings/MySite/Site Manager’
  2. Create a Component using the ‘General Configuration’ Schema. The ‘Configuration Name’ field is not used.
  3. Link the new Labels Component from the step above to ‘\100 Master\Building Blocks\Modules\Core\Admin\Core’ in the Resources field.
  4. Publish the ‘Publish Settings’ page here ‘\100 Master\Home\_System’
  5. Display the label in a View, for example the Article view here ‘…\tri-master\web-application\site\areas\core\views\entity\article.cshtml’
    @Html.Resource("core.contactUs")

The ‘core’ here refers to the ‘Module name’ of the ‘Module Configuration’ Component at ‘\100 Master\Building Blocks\Modules\Core\Admin’ and the Module name is taken from the Path of the Component. It is also the Module in the Publish Settings Page.

The ‘contactUs’ is the Key of our label.

6. Refresh the Web app going to the ‘http://localhost:59860/admin/refresh’ and see the new Label

Uploading images and PDF files into Tridion is easy, but sometimes we want to restrict the size allowed for these uploads. For example, it’s not cool to upload a 5MB image to the homepage of our website. In this article I will present an approach using the Event System to give a warning message to users when the filesize is too big. The filesize is configured in the Publication Metadata and also a default one is set in the code.

Solution Overview

1. Capture the Save Event for a Component
2. If it is a Multimedia Component and an ‘Interesting Mime Type’ then continue
3. Try to get the Allowed Filesize for the items from the Publication Metadata. If not found, then use the defaults defined in the MaxFilesizeDef.cs file
4. If the file is too big, then throw a new WrongFileSizeException. For example, “Sorry, file exceeds the allowed size for PDF files. The allowed size is 10MB.”

The Code: https://github.com/rcurlette/MMFileSizeValidator#tridionimagesizechecker

Setting up the Publication Metadata Configuration

Create a new Metadata Schema or add the following fields to your existing Metadata Schema. This is not mandatory, but if you want to change the default filesize values, then it is recommended to do this. It also allows you to set very high values (or low values) for 1 Publication.

1. Create a new Schema, Configuration.
Fields:
– maxImageSize, Text
– maxPdfSize, Text
– maxMovieSize, Text
*These fields must be named like this

2. Create a Metadata Schema with 1 ComponentLink field, ‘Configuration’, linking to the Configuration Schema we created above in step 1

3. Add Configuration Schema to Publication and fill in values.

Configuring the Default Filesizes

The valdiation is enabled for all Publications. If the Metadata is set, it uses those values. However, if no Metadata configuration setting is found on the Publication then the defaults from the code are used. Here are the defaults:

  • Image: long _maxImageSize = 4194304; (4 MB)
  • PDF: long _maxPdfSize = 20971520; (20 MB)
  • Movie: long _maxMovieSize = 41943040; (40 MB)

Configuring the Cache Settings and Configuration Manager

The Configuration Manager class from Mihai comes with a nice XML configuration. See below for it. The filename I have is EventSystemComponentSave.dll.config. This must be the same as your Event System DLL.

<configuration>
  <appSettings>
    <!-- Amount of minutes to keep a loaded Configuration dictionary in the cache -->
    <add key="SystemComponentCacheMinutes" value="1"/>

    <!-- Where to read the System Component from (Publication, Current, TcmUri or WebDavUrl). Multiple values are comma separated -->
    <add key="SystemComponentLocation" value="Publication"/>

    <!-- Which metadata field contains a Component Link to the SystemComponent. Multiple fields separated by commas -->
    <add key="SystemComponentField" value="Configuration"/>

    <!-- Search for System Component recursively (going up into the parent Folder/SG)? -->
    <add key="SystemComponentRecursive" value="false"/>

    <!-- When merging several System Components, should it override values for the same key? -->
    <add key="SystemComponentOverride" value="false"/>
  </appSettings>
</configuration>

Installing

This is the same to install any Event System DLL on your Tridion 2009 / 2011 instance.
1. Compile the assembly (Add References to the Tridion\bin\client\Tridion.ContentManager.dll and Tridion\bin\client\Tridion.Common.dll )
2. Copy EventSystemComponentSave.dll to the Tridion\bin folder (or another folder of your choice).
3.  Copy the  EventSystemComponentSave.dll.config to the Tridion\bin folder (or another folder of your choice).

4. Register it in the Tridion.ContentManager.config

<add assemblyFileName="C:\Program Files (x86)\Tridion\bin\EventSystemComponentSave.dll" />

5. Open the Services.msc and restart the ‘Tridion Content Manager Service Host’ service.
6. Test by trying to upload a large Multimedia file

Credits and Thanks

I used Dominic Cronin’s excellent ‘Image Size Checker’ (height/width) Event System code for a starting point. https://code.google.com/p/tridion-practice/source/browse/#git%2FImageSizeChecker

I used Mihai’s great ConfigurationManager code to store and retrieve the Publication Metadata settings. https://code.google.com/p/yet-another-tridion-blog/source/browse/trunk/Yet+Another+Event+System/

Summary

Adding content validation rules to the Event System is easy and also provides a better QA for the quality of content being uploaded to our website. In this example we saw how we can easily restrict the filesizes of Multimedia items being uploaded into Tridion. We also saw how easy it is to use a Configuration schema in our code and use the Configuration Manager to cache these settings. I hope this article gives you some new ideas and helps you keep the file sizes under reasonable limits in your Tridion system.

Upgrading Tridion 2013 to 2013 sp1 is a fairly simple process.  However, an issue exists in the installer and if you don’t take the following step, the upgrade installer will fail with a mysterious message.

This tip is thanks to Pankaj Guar

Rename the C:\Program Files (x86)\Tridion\config\Tridion.ContentManager.config to  \Tridion.ContentManager.config2013GA

Run the upgrade script Tridion 2013 SP1\Content Manager\SDLTridion2013SP1CM.exe

And…it works!

Then after the upgrade merge any custom settings in the file, such as Event System config, GUI Extensions, or Razor Meditator.

This is much faster and better than uninstalling 2013 GA and installing 2013 sp1.

 

Are you manually setting up a Tridion Deployer and using a guide such as Nuno’s excellent post titled Manually configuring a Tridion 2011 .NET Content Deployer Instance? Is it working? If so, move on, this article is not for you. If not, or you would like to learn how to troubleshoot a Deployer to publish to the Broker Database – read on.

Deployer debugging overview

The Deployer can run as a Windows service or a Website. In this article I discuss the option to run it as a website. I prefer this option as it allows me to run multiple Deployers on 1 machine and I also feel I have more control over it. Read Nuno’s post above for details about how to setup a manual Deployer. I’m going to highlight a way to debug the Deployer and describe one tiny issue that costs me hours of frustration.

I’m using IIS and in the end of the article I have my file setup. Notice I have a logs folder in there. The location of this folder is configured in the logback.xml file. Snippet from logback.xml:

  <property name="log.pattern" value="%date %-5level %logger{0} - %message%n"/>
    <property name="log.history" value="7"/>
    <property name="log.folder" value="c:/tridion/deployer-Broker/log"/>
    <property name="log.level" value="Info"/>
    <property name="log.encoding" value="UTF-8"/>

This tells my Deployer to put the logs for it (and not for anything else) in the log folder. This is not the default setting and I do suggest you change it to a specific folder per Deployer. After changing any config file we need to restart the Deployer. This can be done by recycling the App Pool or simply doing an ‘iisreset’ if you’re on your own local dev machine.

The other thing to notice is my license file is in the config folder. And here was my fatal mistake – my license file was called ‘cd_license.xml’ and Tridion assumes it is called ‘cd_licenses.xml’ or I can manually put the name in on the bottom of the cd_storage_conf.xml config file. Big thanks to Mihai Cădariu for Yet Another Tridion answer that saved me time and my sanity.

The solution

Tridion uses Filesystem bindings (and not the DB ones in the config file you specified) as a fallback and default when it cannot find or load the cd_licenses.xml file. It logs this in the cd_core.log file and not the cd_deployer.log file. In fact, the cd_deployer.log file looks normal and doesn’t give us any clues it’s using the fallback Filesystem Deployer due to a license issue.

Summary

Tridion deployment is at the heart of every Tridion implementation. Setting up and configuring a Deployer is a task often done by Developers on a new system, such as my Azure Tridion 2013 SP1 instance (Medium instance, SQL Server 2012 instance type, runs great!). Following Nuno’s guide we can quickly get one setup. However, debugging it and finding small problems is sometimes not so easy. I hope this small tip helps show some insight into one potential issue and how to solve it.

Directory: C:\tridion\deployer-Broker

Mode                LastWriteTime     Length Name
----                -------------     ------ ----
d----         3/17/2014   3:12 PM            bin
d----         3/17/2014  10:20 AM            log
-a---         3/17/2014   3:13 PM          0 dir.txt
-a---        11/10/2013   9:29 PM        121 HTTPUpload.aspx                                                           

    Directory: C:\tridion\deployer-Broker\bin

Mode                LastWriteTime     Length Name
----                -------------     ------ ----
d----         3/17/2014   8:55 AM            config
d----         3/17/2014   3:12 PM            lib
-a---        11/10/2013   9:29 PM     172032 netrtsn.dll
-a---        11/10/2013   9:29 PM      22528 Tridion.ContentDelivery.Configuration.dll
-a---        11/10/2013   9:29 PM     114688 Tridion.ContentDelivery.dll
-a---        11/10/2013   9:29 PM    1323008 Tridion.ContentDelivery.Interop.dll
-a---        11/10/2013   9:29 PM    1149952 xmogrt.dll                                                                

    Directory: C:\tridion\deployer-Broker\bin\config

Mode                LastWriteTime     Length Name
----                -------------     ------ ----
-a---        11/10/2013   9:29 PM       8057 cd_deployer_conf.xml
-a---          3/6/2014   4:57 PM       3896 cd_license.xml
-a---         3/17/2014   3:00 PM      18233 cd_storage_conf.xml
-a---         3/17/2014   8:58 AM       4552 logback.xml                                                               

    Directory: C:\tridion\deployer-Broker\bin\lib

Mode                LastWriteTime     Length Name
----                -------------     ------ ----
-a---        11/10/2013   9:29 PM      62983 activation.jar
-a---        11/10/2013   9:29 PM     445288 antlr.jar
-a---        11/10/2013   9:29 PM       4467 aopalliance.jar
-a---        11/10/2013   9:29 PM      68851 cd_ambient.jar
-a---        11/10/2013   9:29 PM     261870 cd_broker.jar
-a---        11/10/2013   9:29 PM      71286 cd_cache.jar
-a---        11/10/2013   9:29 PM     288893 cd_core.jar
-a---        11/10/2013   9:29 PM     577390 cd_datalayer.jar
-a---        11/10/2013   9:29 PM     153291 cd_deployer.jar
-a---        11/10/2013   9:29 PM     125330 cd_dynamic.jar
-a---        11/10/2013   9:29 PM      30301 cd_linking.jar
-a---        11/10/2013   9:29 PM     231515 cd_model.jar
-a---        11/10/2013   9:29 PM     115099 cd_tcdl.jar
-a---        11/10/2013   9:29 PM     154957 cd_undo.jar
-a---        11/10/2013   9:29 PM      82881 cd_wai.jar
-a---        11/10/2013   9:29 PM      16130 cd_wrapper.jar
-a---        11/10/2013   9:29 PM     575389 commons-collections.jar
-a---        11/10/2013   9:29 PM     160519 commons-dbcp.jar
-a---        11/10/2013   9:29 PM      96203 commons-pool.jar
-a---        11/10/2013   9:29 PM     313898 dom4j.jar
-a---        11/10/2013   9:29 PM      38643 easylicense.jar
-a---        11/10/2013   9:29 PM    2189117 guava.jar
-a---        11/10/2013   9:29 PM      81271 hibernate-commons-annotations.jar
-a---        11/10/2013   9:29 PM    4253629 hibernate-core.jar
-a---        11/10/2013   9:29 PM     475305 hibernate-entitymanager.jar
-a---        11/10/2013   9:29 PM     102661 hibernate-jpa-2.0-api.jar
-a---        11/10/2013   9:29 PM     648253 javassist.jar
-a---        11/10/2013   9:29 PM      89967 jaxb-api.jar
-a---        11/10/2013   9:29 PM     867801 jaxb-impl.jar
-a---        11/10/2013   9:29 PM      60768 jboss-logging.jar
-a---        11/10/2013   9:29 PM      11209 jboss-transaction-api_1.1_spec.jar
-a---        11/10/2013   9:29 PM      17308 jcl-over-slf4j.jar
-a---        11/10/2013   9:29 PM      19146 jdbcpool.jar
-a---        11/10/2013   9:29 PM      51484 json-smart.jar
-a---        11/10/2013   9:29 PM     246709 logback-classic.jar
-a---        11/10/2013   9:29 PM     327911 logback-core.jar
-a---        11/10/2013   9:29 PM     278281 serializer.jar
-a---        11/10/2013   9:29 PM      25962 slf4j-api.jar
-a---        11/10/2013   9:29 PM     331474 spring-aop.jar
-a---        11/10/2013   9:29 PM      53079 spring-asm.jar
-a---        11/10/2013   9:29 PM     589253 spring-beans.jar
-a---        11/10/2013   9:29 PM     106819 spring-context-support.jar
-a---        11/10/2013   9:29 PM     829601 spring-context.jar
-a---        11/10/2013   9:29 PM     442400 spring-core.jar
-a---        11/10/2013   9:29 PM     176283 spring-expression.jar
-a---        11/10/2013   9:29 PM     401762 spring-jdbc.jar
-a---        11/10/2013   9:29 PM     378235 spring-orm.jar
-a---        11/10/2013   9:29 PM     246036 spring-tx.jar
-a---         2/17/2012  11:45 AM     584207 sqljdbc4.jar
-a---        11/10/2013   9:29 PM      23346 stax-api.jar
-a---        11/10/2013   9:29 PM    3176148 xalan.jar                                                                 

    Directory: C:\tridion\deployer-Broker\log

Mode                LastWriteTime     Length Name
----                -------------     ------ ----
-a---         3/17/2014   2:56 PM    1284686 cd_core.2014-03-17.log
-a---         3/17/2014   2:56 PM     394916 cd_deployer.2014-03-17.log
-a---         3/17/2014   2:56 PM       3442 cd_monitor.2014-03-17.log
-a---         3/17/2014  10:20 AM          0 cd_preview.2014-03-17.log
-a---         3/17/2014   2:56 PM      14790 cd_transport.2014-03-17.log

I changed the port # my Tridion CMS uses for the backend GUI then received the following error:

Unable to connect to remote server error

at System.Net.HttpWebRequest.GetRequestStream(TransportContext&amp; context) at System.Net.HttpWebRequest.GetRequestStream() at System.ServiceModel.Channels.HttpOutput.WebRequestHttpOutput.GetOutputStream()

&nbsp;

Tridion uses the WCF-based Core Service to retrieve items from the GUI. To solve the issue follow the steps in this post which describes how to change the WCF port number in the web.config

Today I installed Tridion 2013 SP1 using my MVP Tridion license with 1 named user.  The first time I loaded the UI I received this message:  “Can not continue due to license violation. The number of named users in your system (1) exceeds the limit specified in the license: 1.”

This is a known issue and to solve it you can download hotfix 87411 from this link after logging into TridionWorld  download  https://www.sdltridionworld.com/images/CM_2013.1.0.87500_tcm89-21270.zip   Special thanks to Raimond Kempees for the information about this hotfix.

I am using a Windows 2012 SQL Server server instance on Windows Azure.  The location where the Tridion.ContentManager.dll file needs to be copied is different than the readme.  The location is C:\Windows\Microsoft.NET\assembly\GAC_MSIL\Tridion.ContentManager\v4.0_7.1.0.1290__360aac4d3354074b

I removed the old DLL and put the new one in, started my Tridion services and CMS website up and was ready to rock and roll.

Now it’s time to get my Blueprint created, starting with my Empty Master!

 

Today the best and quickest way to get an answer to your Tridion question is at the Tridion StackExchange site. StackOverflow was created in 2008 and shortly after in 2009 they opened up the platform for other topics to have their own Q&A site.

In 2009 the only place for having Tridion questions answered was the password-protected Tridion forum. Created in 2001 the forum was a great place for asking and answering questions in the small but active Tridion community. However, over time it got a little slow and more difficult to find answers to questions. It was also only open to those who had a login from Tridion Customer Support.

Realizing the potential of StackExchange to help power the active Tridion community, Dave Houlker proposed the Tridion StackExchange forum in 2011 and info about it can be found here.  As of March, 2014 it boasts the following statistics:

  • 643 visits a day
  • 4.6 questions a day
  • 98% answered
  • 834 total users, 153 avid users

It’s possible to configure StackOverflow to send us an email when a new question arrives.  Some people keep the Tridion StackExchange site open in a tab (and the # of new questions shows immediately), however, I prefer to use the email method.  Over the Christmas holidays I disabled all my auto-emailing scripts and until now have not had it enabled.  I noticed I visited the site a lot less, and also answered a lot less questions.  Enabling the email trigger is not so straight forward and here I want to describe how to set it.

  1. Select edit, Advanced from the Favorite Tag menu
  2. Configure the tag subscription

I have the website send me an email 15 minutes with the new questions and this helps me to answer faster and also keep up to speed on topics related to Tridion.

I am a big fan of automation and the email filter was the best way to stay on top of the forum and also answer more questions (= more points).  However, recently it got disabled and as a result I stopped visiting so frequently and also my points started to lag.

I hope you enjoy this tip.  I also like to automate the opening of my timesheet (and other routine tasks) and previously wrote an article about automating Firefox to open at the same time every day to my timesheet site.

Good luck with automating these tasks to make them painless.