Thursday, September 11, 2008

WCM Syndication may fail if ifixes on the subscriber and syndicator are not at the same level

Assume you ran into some WCM related issues and you were lucky enough to identify a iFix which might fix the problem, The general thought is to apply the iFix on the QA/Stage (Syndicator) and then do the testing and verification, once the testign is passsed apply it on production (Subscriber). This might work well for most of the ifixes which are not related to WCM, but in case of WCM ifixes it might break the syndication between the "Authoring" and the "Rendering" server if the synidcation happens between the time you test in syndicator and before applying to the subscriber. You might see the java.io.InvalidClassException in the logs as shown below during syndication and syndicator status will show a failure.


on Aug 1 17:11:26 EDT 2007 Failed to transform: {7c0007a717ed72a1, com.aptrix.pluto.cmpnt.HTMLCmpnt, 1187030230711, 63}, Url: http://SomeHost:9081/wps/wcm/connect/?MOD=ItemDispatcher&syndicatorId=e28f92771cc acce&subscriberId=79aeb89771ce1991&subscriptionId=e28f92771ccacce&itemName=7c0 007a717ed72a1:com.aptrix.pluto.cmpnt.HTMLCmpnt:1187030230711:63,Error: com.aptrix.deployment.subscriber.TransformationException: Code #100, phrase: Generic internal responder error, detail: Exception occurred while trying to retrieve document from item.(Cause: java.io.InvalidClassException: com.aptrix.pluto.cmpnt.ProfileCmpnt; local class incompatible: stream classdesc serialVersionUID = -7211000162118777127, local class serialVersionUID = 611017038877300726


The failure reason being is during syndication, WCM objects are serialized and transferred across the network to the subscriber where is get deserialized and stored. So in order for the serialization and deserialization to work properly the Class serialVersionUID of the object should match, so if the ifixes installed are not at the same level then Class serialVersionUID will mismatch which will further result in syndication failure.

So make sure you plan well so that your testing and verification cycle is shorter than your syndication cycle to avoid unnecesary problems. There are also some other reasons that you might encounter this same error , check this technote How to troubleshoot "InvalidClassException" errors during Web Content Management (WCM) syndication to identify and resolve them.

Sunday, September 7, 2008

First, move the PDM libraries from one server to another before syndicating WCM Document Manager Components

Using the process of moving PDM libraries from one server to another, although the documents are exported and imported correctly, the exact path within the PDM Library can change. Since WCM stores the path in the WCM PDM Components, that will cause the WCM PDM Component to have an incorrect path.

WCM stores the path to the object within the PDM library when a Document Manager component is created. For example, we may store "/contentRoot/icm:libraries[x]/folder/path/to/document.doc". The value for 'x' in the path can change for document libraries that are imported from another library. So, When syndicating WCM Document Manager Components, the path to the object within PDM can change when the object is exported from the syndicator and imported on the subscriber. This means that on the subscriber, the WCM PDM Component will have the incorrect path stored.


WCM was changed to correct the path when the WCM PDM Component is saved on the subscriber using ifix PK49150 . There are a couple of things to note in this ifix about syndication of PDM components:

1) In order to fix existing PDM components that have the incorrect path stored on the subscriber, the PDM Components need to be resyndicated.
2) When syndicating the WCM PDM Components, if the PDM Document Library has not yet been imported on to the subscriber, the path to the object in the Document Library cannot be updated, because the document does not yet exist in PDM on the subscriber. The WCM object will still be written to the subscriber, but the path will not have been updated correctly. Once the PDM Document Library has been imported to the subscriber, the WCM components will have to be resyndicated.
3) The same holds true if you delete the document library on the subscriber, and reimport the library in. The path to the document library will change, which means that the WCM PDM Components will have to be resyndicated to update the path again.