Scenarios where you need to generate custom XML seedlist (instead of the out of box ATOM search feed) for the third party search engines. Following is one way we can generate custom XML seedlist for all the contents in WCM repository.

Note:
a). If you want expose the component for directly producing the XML seedlist , include following additional information in above menu design

Header Design Component

<?xml version="1.0" encoding="UTF-8"?>

Use the following link to access your component that produces the seedlist
http://localhost:10041/wps/wcm/myconnect/Library/site/sitearea/?srv=cmpnt&source=library&cmpntname=libraryName/Menu-Search-XML&WCM_Page.ResetAll=TRUE&CACHE=NONE&CONTENTCACHE=NONE&CONNECTORCACHE=NONE

b). Make sure that your JSP (if you write JSP to produce XML seedlist) will return response MIME type as "text/XML" instead of "text/HTML". Place following line in JSP at top to return MIME type as XML.

If you specify the name as above then it find out the contentItem within the library but you can't use this if you have mulitple content items in library with same name(use below in this case).

b). name="library/site/sitearea/sitearea/contentItem"

If a content item with the same name is used in more than one site, then you must specify name value as above to select the appropriate content item.

c). name="./contentItem"

To use the library specified in the URL of the current page , use name value as above. If you specify name="./contentItem", the library name will not appear in your presentation template or element design. The actual path will not be resolved until the item is rendered

Following features are added or updated for Web Content Integrator in 6.1.0.5

1. Added tags to allow inheritance to be enabled or disabled for an item in a feed
2. Reference Elements using their Name and Library instead of GUID (using GUID still supports)
3. Added supportl for handling the content with missing publish Date(empty , invalid)
4. Added support for creating Link Elements (earlier version supported only the upate)
5. Corrected the handling of missing Workflows content (earlier it simply thrown Null pointer but Handled to throw proper exception as this is anyhow a error scenario).

1. Following new tags will enable to allow inheritance to be enabled or disabled for an item in a feed.

1. Here CSS files are rendering from WCM, Can't take the advantage of browser caching
2. Response size and time may increase as Styles are coming from the JCR.

Approach 3: Storing CSS and Javascript as Content Item under some SiteArea

Steps to implementing CSS as a content item -
a). Create a authoring template with a single Body HTML element,
b). Create a presentation template that just refer Body element (you may not use Ephox RTE element because it includes <P> tags , causing CSS Styles failed )
c). Name ContentItem as *.css ("test.css").
d). You can add the above contentItem from other presentation templates as CSS or Javascript . Make sure to append "?subtype=css" to path of content item while referring in other Presentation templates to force WCM content to be rendered with text/css as MIME type instead of text/html (default MIME type for WCM content is text/html or text/plain).
Ex:
<link rel="StyleSheet" href="/wps/wcm/myconnect/library/Site/SiteArea/test.css?subtype=css" type="text/css"/>

Following are the advantages if you naming the ContentItem as *.css
a) When site is pre rendered for delivering content, content items stored as *.css will generate files valid CSS file to pre render
b) Even when content served through the WCM servlet , this allows the browser to cache the CSS file

Cons
1. Make sure this content item (css) doesn't pick up by some navigators or menu components as it is content item

Note:
a). In Second and Third approach approach , your CSS styles or javascript can refer File Resource Components(like for background images) that stored in WCM repository as components by simply using the Component Tag as below

b). "subtype" query string parameter only applies to the default content renderer and will not work on URLs which is used to invoke the component renderer (i.e. which contain srv=cmpnt in the query string parameter).

c). You may need to add an extension mapping for CSS to WcmConfigService.properties in older versions. Following are steps to do this.

Search for the line "#mapping of mimetypes to extensions" in wcmconfigservices.properties file located under <Portal_root>\wcm\shared\app\config\wcmservices\ directory.

There is an attribute named "mimetype.list=extensiontype.gif". Add ",extensiontype.css" (no spaces, include the dot ( . ) character at the front of the string) at the end of the line.

Add a new line "extensiontype.css=text/css" (no spaces) after the "extensiontype.lzh=application/octet-stream"

Generally Portal search collections may gets corrupted in following scenarios

Scenario 1.
This happens after applying fixpack or ifix.

Scenario 2.
This happens after the abnormal shoutdown of the remote search server or the local search server, depending on how you have configured the search service.

Resolving the problemScenario 1.
The index structure of Portal search is not backward compatible between the different product versions. For this reason you need to preserve your search collections before you upgrade your Portal server. To preserve search collections, export the collections prior to upgrade and then import them back using the "Manage Search" admin portlet. Scenario 2.
If, the crawler is running and the remote search server or the local search server(depending on how you have configured the search service) terminates unexpectedly then it is normal to see the search collections disappear or get corrupted. The only way to prevent this is to make sure the servers are shutdown gracefully. For a quick recovery, keep backup copies of all the collections, by exporting them using the "Manage Search" admin portlet. This way you can restore the collections after the failure by importing them back into a new collection.
You should also delete the faulty collections before creating a new one.

You will see a link at the bottom "Manage Faulty Collections" onlyif there are any faulty/corrupted collections

NOTE: In some cases you may require to delete the collections physically from the hard disk first and then use the faulty collection portlet/functionality to completely remove them from the machine. This may require portal restart

By default Ephox editor will insert insert an empty paragraph tag with non-breaking space (&nbsp; or &#160;) in code view when you first load EditLive! without any content in its body or when you pressing "Enter" key in the design view of EditLive!

Reasons for above default behavior is

EditLive assumes user will start typing after the initial load and prepares the editor by placing an empty paragraph at the start of the empty document. This provides a place in the document to actually position the caret and allow the user to start entering text. If the user chooses to insert a heading tag instead of a normal paragraph, EditLive! simply replaces the paragraph with the relevant heading.

Most browsers ignore empty paragraph tags, so to ensure the page displays as the user intended, a non-breaking space is inserted into empty paragraphs.

Note: Recent versions of EditLive have significantly reduced the number of situations when an empty <p> tag will be inserted - including the "empty document case" which now returns the empty string (This is Fixed from EditLive! for LWCM 6+ 3.4.0.9 October 13th, 2009 Includes EditLive! version 7.0.0.270 onwards).

You can change the default behavior of inserting paragraphs when you press the Enter key , following are the instructions

brOnEnter flag is boolean attribute defines whether a <br> or <p> tag is inserted when the Enter key is pressed. When set to true a <br> is inserted when Enter is pressed, when the Shift + Enter key combination is used a <p> tag is inserted. When set to false this behavior is reversed.Pressing enter when in table fields will always yield a <br> tag, regardless of the value set to brOnEnter.

The default behavior for EditLive! is to insert a <p> on Enter and a <br> on Shift + Enter. This is the same behavior as when this setting is set to false.(Default Value: false)

We can create the part of content loaded by Editlive instance as readonly. EditLive! for Java uses the contenteditable HTML attribute to indicate whether an element and its children are editable within EditLive! for Java. If contenteditable is set to false then the content of that element and its child elements becomes read-only.

The following example demonstrates how to create a read-only section within a document. The paragraph with the text <p>This is <b>read only</b>content.</p> will be read-only.

<html>
<body>
<p>
This content can be edited
</p>
<p contenteditable="false">
This is <b>read only</b> content.
</p>
<p>
This content is also able to be edited.
</p>
</body>
</html>

Inheritance for Read-Only Content

When an element is marked as read-only all its child elements are also created as read-only sections. However, the read-only property can be overwritten for specific child elements. This is achieved by explicitly setting the contenteditable attribute to true for that element. The following example demonstrates how to create a read-only parent element (a paragraph) with an editable child element (a span element).

<html>
<body>
<p>
This content can be edited
</p>
<p contenteditable="false">
This content is not editable.
<span>
This content is contained within
an editable child element
</span>
This content is not editable.
</p>
<p>
This content is also able to be edited.
</p>
</body>
</html>

Creating non editable Editlive Instance

Above section describes to how make the pieces of content inside the editlive as readonly. But if you want to open the whole editlive as read-only (When you don't have controller over the content or when just want to disable all editing options of editlive ) , set the ready only property on the editlive instance as follows

customEditliveInstance.setReadOnly("true");

once you set instance as read only , applet get initializes when you click on editable section but most of menu items will be in disable mode and you can delete or edit content inside editlive.

This function adds the necessary script tag into the end of the head or body section of the page for you. All that you then need to do from your Javascript in order to add another external javascript into the page is to call that function passing it the name of the file that contains the extra code that you want to include and whether to add it to the end of the head or the end of the body.

Lotus Web Content Management Summary

This cache stores summaries of Lotus Web Content Management Items. The summaries are used to display in lists in the authoring portlet or used internally in the Lotus Web Content Management API to calculate Lotus Web Content Management Item Document IDs used for Iterators. The cache entry will be cleared when a Lotus Web Content Management Item is updated that will affect this summary.

Lotus Web Content Management Basic Caching

This cache is used for Lotus Web Content Management Basic caching. Refer to the Information Center for instructions on setting up Basic caching. The Basic cache stores the entire response. The key is based only on the URL so all users will see the same response.

Advanced and Resources

This cache stores the binary MIME for file and image resources in Lotus Web Content Management. The maximum size of resources to store is set in the Lotus Web Content ManagementConfigService.properties file as the property resourceserver.maxCacheObjectSize (in kb). Resources over this size are not cached and are streamed directly to the response. The expiry is set in the same file as: resourceserver.cacheExpiryDate. The cache entry will be cleared when that resource is updated.

This cache also stores page data if Lotus Web Content Management Advanced caching is enabled. Refer to the Information Center for instructions on enabling Lotus Web Content Management Advanced caching. The processing cache stores advanced caches for the following types:

Site: Similar to “Basic” Caching except that “Connect Tags” are processed each time.

User: Stores a copy of an item in the cache for each user.

Secured: Users that belong to the same groups will access the same cached items.

Personalized: Users who have selected the same personalization categories and keywords, and who belong to the same Group, will access the same cached items.

Note: The session option for Advanced caching is not stored in the processing cache, but in the session cache.

Menu

This cache stores Lotus Web Content Management Menu entries. An entry comprises of the Content IDs associated with a particular menu. The entries are retrieved and cached without applying security. Whenever a user needs that menu’s results, their specific security will then be applied to the cached results. A dynamic menu, which is one that is affected by the current user’s context (e.g. based on categories in a users profile) will store a separate cache entry for each different context. The cache entry will be cleared when a Lotus Web Content Management Item is updated that will affect this menu.

Navigator

This cache stores parent to child relationships that comprise a Lotus Web Content Management navigator. A complex navigator might have multiple parent to child relationships (e.g. if siblings are included). The navigator entry is made up of the IDs of the parent and children. This cache will be cleared upon any Lotus Web Content Management Item update in the system.

Missed Items

This cache stores JCR paths that does not exist. This is used primarily for multi locale solutions to determine if items of other locales exist or not. The cache entry will be cleared when a Lotus Web Content Management Item is updated that will affect it.

Draft Summary

This cache stores the identity of the draft summary to the identity of the draft Lotus Web Content Management Item.

User Cache

User cache
Size is fixed to 2000. default is disabled.

This cache operates using a Least Recently Used algorithm. It is not shared across nodes in the cluster and it does not use dynacache. It does not update when LDAP changes. User cache is disabled by default but you can enable it with the following setting: user.cache.enabled=true in Lotus Web Content ManagementConfigService.properties. When you enable user cache, you must to run a module called MemberCacheManager or restart the server. To enable the module, add the following to Lotus Web Content ManagementConfigService.properties:connect.businesslogic.module.template.class=com.presence.connect.wmmcomms< /code>connect.businesslogic.module.template.remoteaccess=trueconnect.businesslogic.module.template.autoload=false

Resolving the problem In order to resolve this issue , call API method "workspace.useUserAccess(true)" just before calling the workspace.getById() method . Otherwise , the default access context is "Contributor" and hence method workspace.getById() fails for content or library component even though the user is given "User" access.

Custom caching can be applied to Web Content Management Components by using connect tags to cache individual components referenced within presentation templates. This is done by replacing a component reference in a presentation template with a connect tag. This enables you to apply custom caching strategies to Web Content Management components to override your server's default caching strategy. You can also use this method to disable the Caching of Web Content Management components.

When first time presentation template is rendered, the component will be added to the cache. The next time the presentation template is rendered, the component will be displayed from the cache instead of being rendered afresh by the Web Content Management application. Not until it is expired from the cache will the component be rendered again by the Web Content Management application. For this reason, only components that do not require to be freshly rendered every time a page is accessed should be cached.

Connect tags are used to reference Web content components and apply customized caching to the components.

Step 2: Connect tags must be selected in presentation template form for connect tags to be processed.

The first time the presentation template is rendered, the element will be added to the cache. The next time the presentation template is rendered, the element will be displayed from the cache instead of being rendered afresh by the Web Content Management application.

Only elements that do not require to be freshly rendered every time a page is accessed should be cached.

This sets the context for the element.
The "sitepath" and "name" placeholders can be used instead of "PATH=" when caching menus or navigators:

<placeholder tag="sitepath"/>/<placeholder tag="name"/>

SOURCE="library"

Source is either "content", "site", "sitearea"
or "library". In this example it is "library" because the element
we are caching comes from a component.

CMPNTNAME="TestNav"

This is the name of the element to be cached.

CONTENTCACHE="site"

This is either "site or "session".

EXPIRES="REL 9000s"

The time the component will expire from the
cache is set here.

Note:We can also use this method to disable caching. In this example the property CONTENTCACHE="none" is used to disable caching of this element.<connect MOD="ComponentRenderer" SRV="cmpnt" PATH="/Site/SiteArea/Content" SOURCE ="library" CMPNTNAME="TestNav" CONTENTCACHE="none" > </connect>

Best Practices:
a). If you are caching a component that is used in more than one presentation template, it is best practice to save the connect tag as a HTML component and then reference that component in each presentation template.

b). If you have a set of cached components that use the same "Expires" setting, then it is best practice to save the "Expires=" parameter as a HTML component and then reference that component in each connect tag used to cache components.

If you then need to change the cached component tags, you only need to change it in the HTML component rather than in multiple presentation templates

SQL Exception , 'The conglomerate (15,424) requested does not exist' message ( When it tries to access the PROT_RES table in JCR schema and WPS_TASK scheduler table in RELEASE database)

Trouble Shooting Steps we followed

1. Stop the Portal server if it's still running.
2. Delete the two lock files, db.lck and dbex.lck, in <wp_profile>/PortalServer/derby/wpsdb.
3. Delete the "tranlog" for WebSphere_Portal, under <wp_profile>/tranlog/<cell>/<node>/WebSphere_Portal.
4. Restart the Portal server.
5. If the Portal server startup still has problems, remove all the files in <wp_profile>/PortalServer/derby/wpsdb/log and then restart the Portal server.
6. If all of the above fails and you have a backup of the "wpsdb" database, you may attempt to archive the current database in another location outside of the WebSphere directory structure and put the backup in place.
NOTE: Because of the potential database corruptions documented Its recommend periodic backup of your Derby databases

But the above steps didn't Solve our problem, Raised PMR but that didn't help .

We tried to check the above tables (PROT_RES and WPS_TASKSCH) manually by connecting Derby DB but we got the same error like above when we fire Select queries . Realized that both tables corrupt(crashed).

We restored to wpsDB (we had wpsDB backup and deleted the old one replaced it).

Excepted output
when we click on ChildSiteArea1, display "SubChildSiteArea1 and SubChildSiteArea2" (child siteareas)
when we click on ChildSiteArea2, display "ChildSiteArea1 ,ChildSiteArea2 and ChildSiteArea3" (Siblings)
when we click on SubChildSiteArea1, display "SubChildSiteArea1 and SubChildSiteArea2" (Siblings)

Start Type:Current Site Area
Selected Start Area:None
Include Start:true
Ancestor Level:None
Descendant Level:None
Preceding Siblings Level:All
Next Siblings Level:All
Show Site:false
Show Content:false
Expand current navigator branch one level:true
Expand navigator to display current site area:false
Results per page:10
Start page:1
Maximum pages to include:10
Pages to read ahead:10
Distinguish items with no children using the final navigator result design:true

If you select Joint Approval option ,everyone who has approve access to the document must approve the document to the next stage before the document is moved. Generally, only one approver needs to approve the document to the next stage. If, however, you have activated Joint Approval, then all users with approve access must approve it. The exception to this is, if a group is listed as having approve access, only one group member needs to approve the document before it is moved.

If you have a single person and a group both defined as having approve access to the document and if you have Joint Approval activated, the single person AND one member of the group must approve the document before it can move to the next stage

If you add the Group1, Group2 , individualApprover1 and individualApprover2 as Approvers and if you select the "Joint Approval" option. Then
anyone from Group1 (any one of grp1member1,grp1member2,grp1member3) and
anyone from Group2 (any one of grp2member1,grp2member2,grp2member3) , individualApprover1 and individualApprover2 has to approve to move document to next stage