There are some overridable components in eXo Collaboration so that you can control how these components work by implementing or extending default implementations and then reconfigure these new components in the _configuration.xml_ file.

h1. ContentDAO {anchor:id=CSref.ExtensionPoints.ContentDAO}

_ContentDAO_ is an overridable component used in the Content application (or called RSS reader) of eXo Collaboration.

You can find the configuration file at _WEB-INF/cs-extension/cs/content/content-service-configuration.xml_ with the declaration as below:

{code:xml}
<component>
  <key>org.exoplatform.content.service.ContentDAO</key>
  <type>org.exoplatform.content.service.impl.ContentDAOImpl</type>
</component>
{code}
The example below is an example of plugin configuration:

{code:xml}
<external-component-plugins>
  <target-component>org.exoplatform.content.service.ContentDAO</target-component>
  <component-plugin>
    <name>rssreader.listener</name>
    <set-method>addPlugin</set-method>
    <type>org.exoplatform.content.service.RSSContentPlugin</type>
    <description>rss reader plugin</description>
  </component-plugin>

  <component-plugin>
    <name>description.listener</name>
    <set-method>addPlugin</set-method>
    <type>org.exoplatform.content.service.DescriptionPlugin</type>
    <description>Description plugin</description>
  </component-plugin>
</external-component-plugins> 
{code}


h1. ContactLifeCycle {anchor:id=CSref.ExtensionPoints.ContactLifeCycle}

_ContactLifeCycle_ is an interface to extend the capabilities of eXo Platform. The _ContactLifeCycle_ lets you be notified during the lifecycle of an address book's contact when a contact is added or modified.

An example of _ContactLifeCycle_ has been implemented to integrate the Address Book application in the eXo Social's Spaces. See the following configuration at: _ext/social-integration/src/main/resources/conf/portal/configuration.xml._

See the following example:

{code:xml}
<external-component-plugins>
  <target-component>org.exoplatform.contact.service.ContactService</target-component>
  <component-plugin>
    <name>ContactEventListener</name>
    <set-method>addListenerPlugin</set-method>
    <type>org.exoplatform.cs.ext.impl.ContactSpaceActivityPublisher</type>
  </component-plugin>
</external-component-plugins> 
{code}

Details:
{{ContactSpaceActivityPublisher}} implements {{ContactLifeCycle}}. This implementation publishes activities in the space activity stream to notify of new and updated contacts in the space address book.


h1. Transport {anchor:id=CSref.ExtensionPoints.Transport}

_Transport_ is an overridable component used in the Chat application of eXo Collaboration.

This overridable component is used to help users add the protocol to the Chat application, such as: ICQ, YAHOO, MSN, XMPP, AIM, GTALk.

The Chat application of eXo Collaboration only uses the XMPP protocol that is implemented in the _XMPPTransport_ object.


h1. EventLifeCycle {anchor:id=CSref.ExtensionPoints.EventLifeCycle}

_EventLifeCycle_ is an extension point used in the Calendar application of eXo Collaboration.
You can find the configuration file of this component at: _ext/social-integration/src/main/resources/conf/portal/configuration.xml_.

See the following example:
{code:xml}
<external-component-plugins>
  <target-component>org.exoplatform.calendar.service.CalendarService</target-component>
  <component-plugin>
    <name>CalendarEventListener</name>
    <set-method>addEventListenerPlugin</set-method>
    <type>org.exoplatform.cs.ext.impl.CalendarSpaceActivityPublisher</type>
  </component-plugin>
</external-component-plugins>
{code}

Details:
{{CalendarSpaceActivityPublisher}} implements {{EventLifeCycle}}. It writes activities in the space activity stream when events or tasks are added/modified.