Thursday, January 30, 2014

Tips for Troubleshooting the SDL Tridion Transport Service

The SDL Tridion Transport Service is step two of the content distribution process.  This service is somewhat mystical for two reasons:  it resides on both the Content Manager and Content Delivery systems and it is more difficult to troubleshoot than other services.
Since I've been on a quest lately to shine the light on the unknown, let's take a look at it!

The Transport Service is a mechanism which gathers published items and their dependencies into a package.  It then submits this package from a Content Manager to a Content Delivery system by using sending and receiving modules enabled for different protocols.  These protocols are activated in the cd_transport_conf.xml file for the Content Manager and in the cd_deployer_conf.xml for Content Delivery.

* Local file
* HTTP
* HTTPS
* FTP
* SFTP
* SSHFTP

Under certain conditions, the Transport Service may not start, or start and stop immediately, or otherwise report an error message during the lifecycle of the publishing process.

What can you do to troubleshoot it?  Here is a quick list to walk you through a number of checks:
1. Windows event logs (Tridion.evtx and Application)
Look for messages such as the one below, which is a pretty clear indication that the java version the Transport Service was trying to use could not be loaded (the issue in step 2).

"The description for Event ID 100 from source TCDTransportService cannot be found. Either the component that raises this event is not installed on your local computer or the installation is corrupted. You can install or repair the component on the local computer. 
If the event originated on another computer, the display information had to be saved with the event. 
The following information was included with the event: 
Could not load Java runtime libraries at C:\Program Files (x86)\Java\jre7\bin\client\jvm.dll" 

2. Does the java version installed match the version required by the specific SDL Tridion version installed?
Some machines are configured to pop up a small notification icon to nudge you  forward to the next java update. It's easy to click on it and accidentally install an unsupported version.  Make sure you have the right version, use "java -version" from a command prompt.

3. Publisher Service will not start if the Transport Service does not start
There is a dependency between the Publisher Service and the Transport Service, hence if you notice the Publisher Service does not start, it may be an indication something is off with the Transport Service

4. The transport service log
This log is located on the Content Manager server.  When set in debug mode from the logback.xml file, it can provide more details around the processing involved in transporting items, and therefore potentially narrow down something more specific about an issue.

5. Is a custom transport used, if so, is it written, configured and used properly?
Occasionally, someone may want to use a protocol other than what is available by default.  This is possible by creating a class which implements the com.tridion.transport.connection.TransportConnector java interface, and creating the appropriate Sender and its protocol schema.
Validate all steps were followed accurately as described in the documentation (login required)
http://sdllivecontent.sdl.com/LiveContent/content/en-US/SDL_Tridion_2011_SPONE/task_E724DA16924F4CF4A3E00B160445F2DA

6.  HTTPS Uploads
Should HTTPS be chosen for transporting items, the only way this can take place if if there is a certificate added in the keystore, so that the transport mechanism is allowed to access its destination.  The certificate may be imported into the default CACERTS keystore or a custom one.
Look for an entry such as the one below to tell if there is a custom store in use:

<Sender Type="HTTPS" Class="com.tridion.transport.connection.connectors.HTTPSTransportConnector">
  <KeyStore Path="c:\mydir\myks.keystore" Secret="mypassword" />
</Sender>
  
An incorrect configuration in cd_transport_conf.xml such as a KeyStore node in cd_transport_conf.xml missing from the HTTPS Sender will cause the Transport Service to fail.
The step by step procedure to add a keystore is explained in the documentation (login required)
http://sdllivecontent.sdl.com/LiveContent/content/en-US/SDL_Tridion_2011_SPONE/concept_90BCCB544F8E46F4AF88EDCDAC17987F

7. Transporting using a proxy
When sending content across servers, from an internal network out to an external public one, many organizations use proxies to protect the data.  It's possible to misconfigure this proxy and cause the transport to break down.  The proxy configuration differs based on type of protocol used, as well as the type of proxy, generic or application specific, and so the changes to watch for will be done in the Publication Target and/or the registry, full details available in the documentation (login required).
http://sdllivecontent.sdl.com/LiveContent/content/en-US/SDL_Tridion_2011_SPONE/concept_455C61B06FAB4502B5AF573332E6C33E

8. Is the cd_license missing?
It may be easy to forget about the cd_license.xml file on the Content Manager server, and this is definitely a requirement for the Transport Service to operate.  

9. Last but not least, simple as it may be, do not forget to restart the Transport Service after changes made to (re)configure it.

As Alfred Pennyworth (Batman Begins, 2005) best put it: "And why do we fall sir?  So that we can learn to pick ourselves up."
Should the Transport Service happen to behave unusually, grab your flashlight, follow my trail and see how quickly you can demystify the strange..

Sunday, January 12, 2014

7 Things I bet You Didn't Know about Experience Manager

In the past few weeks, I've had a chance to shine the flashlight a little closer on the SDL Tridion Experience Manager interface of the Content Management System, especially so for the new SDL Tridion 2013 SP1 version out since the first week of December.
Here is a list of things I uncovered and found worth noting:

1. The SDL Tridion Live Documentation for 2013 SP1 has a video on the entire Experience Manager install, configuration plus installation steps.  There are architecture illustrations as well, easy to follow if you look for the 1-2-3 steps marked on the diagrams. 
http://sdllivecontent.sdl.com/LiveContent/content/en-US/SDL%20Tridion%20full%20documentation-v1/GUID-3C70F892-69F4-4FEE-922D-39F1AFEBD539

2. The Content Manager Explorer Dashboard has been morphed into a slide-out navigation, therefore any extensions created for Experience Manager and previously visible on the Dashboard need to be re-coded for the slide-out navigation panel.  

3. You must remember to re-install Default Template Building Blocks from TemplateBuilder to ensure the newly updated TBBs are introduced in the Content Manager.

4. The Dreamweaver call RenderComponentField() is deprecated and replaced with the following new Dreamweaver calls.  The main reason for this is to allow multivalued embedded fields to be editable from Experience Manager, something many have been looking forward to.

@@FieldStartMarker(FIELDNAME)@@ and @@FieldEndMarker@@

@@FieldValueStartMarker()@@
      @@GetFieldValue(FIELDNAME, 0)@@
@@FieldValueEndMarker()@@

They also must be used in proper order or else will not output the equivalent tags which are recognizable by Experience Manager.

@@FieldStartMarker("fieldname")@@
     @@FieldValueStartMarker()@@
          @@GetFieldValue("fieldname")@@
     @@FieldValueEndMarker()@@
@@FieldEndMarker()@@

5. The SessionPreview token session length is configurable in cd_storage_conf.xml.  Update the <Timeout> element, measured in milliseconds, for example 60000 for 1 minute, 120000 for 2 minutes and so on.  

<Wrappers>
  <Wrapper Name="SessionWrapper">e
    <Timeout>60000</Timeout>
    <Storage Type="persistence" Id="db-session" dialect="MSSQL" Class="com.tridion.storage.persistence.JPADAOFactory">
      <Pool Type="jdbc" Size="5" MonitorInterval="60" IdleTimeout="120" CheckoutTimeout="120" />

The session length accounts for the little trip Experience Manager takes while a user clicks UpdatePreview to save new changes in the browser and the session database.

6. Enabling multiple targets for Session Preview (eg. Live and Staging) may cause ExperienceManager not to work. Experience Manager should only run on Staging type sites, not on Live.

7. There is a number of fixes provided exclusively for Experience Manager in 2013 SP1, and they vary from editorial to technical.  For instance, when clicking on "Finish Editing" the latest changes done on the page are shown during reloading of the page.

So if you plan on tackling the installation, configuration and implementation for Experience Manager keep the above pointers in mind when you do and you will definitely have a brighter go of it!