This table shows some main components that take init-param in the applications of eXo Collaboration:

Applications Components Description
Calendar CalendarServiceImpl It is a service that manages calendars in the Calendar application of eXo Collaboration
Chat

HistoryImpl

XMPPMessenger

DefaultPresenceStatus

It is a service that saves the chat history of users

It is a service that processes messages of chat users, basing on the XMPP Protocol

It is a component that controls the presence status of chat users.

Contact ContactServiceImpl It is a service that supplies functions to manage contacts in the Address Book application of eXo Collaboration
Webservice AddActionsPlugin It is used to register a listener for the actions on the nodes
Applications Components Description
Calendar NewUserListener It is a plug-in used to create default personal calendars
NewGroupListener It is a plug-in used to create default group calendars
NewMembershipListener It is plug-in used to share calendars to members of a specific group
ReminderPeriodJob It is a plug-in used to execute sending reminder emails to users
PopupReminderPeriodJob It is a plug-in used to open a pop-up reminder on the browser of users
AddActionsPlugin It is a plug-in that helps the systems automatically update the updated date of events / tasks in a calendar when the content of these events / tasks are changed
Chat HistoryPeriodJob It is a plug-in used to save the chat history of users
RequestFilterComponentPlugin It is used to delete the session of a user when he suddenly closes the browser or changes the session
AuthenticationLoginListener It is used to start the session and log in the chat server
AuthenticationLogoutListener It is used to end the session and log out the chat server
Contact NewUserListener It is used to create personal contact data for users
NewMembershipListener It is used to create address book for a specific group
UpdateUserProfileListener It is used to update the personal profile of a user when he changes it on the portal
Content RSSContentPlugin It is a formatter used to analyze the data from a RSS rsource
DescriptionPlugin It is a plug-in to represent the data from a RSS source
Mail AuthenticationLogoutListener It is a plug-in used to stop checking mails of a user when he logs out
Social Intergration CalendarDataInitialize It is a plug-in used to create a calendar for a group in a specific space
ContactDataInitialize It is a plug-in used to create an address book for a group in a specific space
ContactSpaceActivityPublisher It is a plug-in used to customize the activity status of a specific space when an event happens on a address book
CalendarSpaceActivityPublisher It is a plug-in used to customize the activity status of a specific space when an event happens on a calendar
PortletPreferenceRequiredPlugin It is a plug-in used to declare the application that will automatically create database

Each user can have a default personal calendar created. Use the NewUserListener to configure that. To use the plug-in in the component configuration, you must use the target-component:

The configuration is applied mainly in extension /webapp/src/main/webapp/WEB-INF/cs-extension/cs/calendar/calendar-service-configuration.xml

 
	  <component-plugin>
	    <name>calendar.new.user.event.listener</name>
	    <set-method>addListenerPlugin</set-method>
	    <type>org.exoplatform.calendar.service.impl.NewUserListener</type>
	    <description>description</description>
	    <init-params>
        <value-param>
        	<name>defaultEventCategories</name>
        	<value>Meeting,Calls,Clients,Holiday,Anniversary</value>
        </value-param>
        <value-param>
        	<name>defaultCalendarCategory</name>
        	<value>My group</value><!-- Single value-->
        </value-param>
        <value-param>
        	<name>defaultCalendar</name>
        	<value>Default</value>
        </value-param>
        <!--Params for default calendar setting-->
        <value-param>
         <name>viewType</name>
         <value>1</value>
        </value-param>
        
        <value-param>
         <name>timeInterval</name>
         <value>15</value><!-- in minutes -->
        </value-param>
        
        <value-param>
         <name>weekStartOn</name>
         <value>2</value>
        </value-param>
        
        <value-param>
         <name>dateFormat</name>
         <value>MM/dd/yyyy</value>
        </value-param>
        
        <value-param>
         <name>timeFormat</name>
         <value>HH:mm</value> <!-- HH:mm/hh:mm a -->
        </value-param>
        
        <value-param>
         <name>localeId</name>
         <value>BEL</value>
        </value-param>
        
         <value-param>
         <name>timezoneId</name>
         <value>Europe/Brussels</value>
        </value-param>
        
         <value-param>
         <name>baseUrlForRss</name>
         <value/>
        </value-param>
        
         <value-param>
         <name>isShowWorkingTime</name>
         <value>false</value><!-- boolean true/false -->
        </value-param>
        
         <value-param>
         <name>workingTimeBegin</name>
         <value>08:00</value><!--  -->
        </value-param>
        
         <value-param>
	         <name>workingTimeEnd</name>
	         <value>18:00</value><!--  -->
        </value-param>
        
        <values-param>
	        <name>ignoredUsers</name>
	        <description>Definition users to ignore create default calendar</description>
	        <!-- 
	        <value>demo</value> 
	        <value>marry</value>
	         -->
        </values-param>
          </init-params>    
	  </component-plugin>	  

Explanation:

See the details about the init-params of the component in the following table:

Value-params Description Possible value Default Value
defaultEventCategories Default event categories for users String (Comma separated list of category names) Meeting,Calls,Clients,Holiday,Anniversary
defaultCalendarCategory Name of the calendar group String Default
viewType Default view after user logins and goes to Calendar portlet 0-6 (see below) 1
timeInterval The time unit interval when you drag and move the event (in Day view and Week view only) integer in minutes 15
weekStartOn Day to use as the beginning of the week. only affect on Week view 1-7 (see below) 2
dateFormat The display format for dates valid Java Date format MM/dd/yyyy
timeFormat The display format for time valid Java Date format HH:mm
localeId ID of the geographic locale valid locale ID BEL
timezoneIds User time zone valid TimeZone id Europe
baseUrlForRss The url to publish the RSS content none none
isShowWorkingTime Indicate if the working time should be hilighted in day view true/false false
workingTimeBegin The start time in working time time in timeFormat 08:00
workingTimeEnd The end time in working time time in timeFormat 18:00
ignoredUsers Definition users to ignore create default calendar user id, use multiple by each line demo/marry

viewType parameter is encoded by a number as follow:

0 : Day view

1 : Week view

2 : Month view

3 : Year view

4 : List view

5 : Schedule view

6 : Working days view

weekStartOn parameter is encoded as follow:

1 : Sunday

2 : Monday

3 : Tuesday

4 : Wednesday

5 : Thursday

6 : Friday

7 : Saturday

To use the plug-in in the component configuration, you must use the target-component:

The configuration is applied mainly in extension/webapp/src/main/webapp/WEB-INF/cs-extension/cs/calendar/calendar-service-configuration.xml

Explanation:

See the details about the init-params of the component in the following table:

Value-params Description Possible values Default values
defaultEditPermission The default permission assigned to membership in a specific group to edit calendars and events /tasks of calendar User id (Multi value membership, use coma (,) to split values) . means that all members in that group can modify and add, remove a calendar, events/tasks of the calendar
defaultViewPermission The default permission assigned to membership in a specific group to view a calendar and events /tasks of the calendar. User id (Multi value membership, use coma (,) to split values) . means that all members in that group can view this calendar and all the events/tasks of this calendar.
defaultLocale The default locale of the calendar Valid locade id BEL (see more locale ids http://userpage.chemie.fu-berlin.de/diverse/doc/ISO_3166.html )
defaultTimeZone The default time zone of calendar Valid timezone id Europe/Brussels (see more for timeZone ids http://www.unicode.org/cldr/data/docs/design/formatting/zone_log.html#windows_ids)
ignoredGroups Definition group to ignore create default calendar Group id (use line to define multiple value) /platform/guests

The Calendar application of eXo Collaboration can send event reminders by email by using the email reminder plug-in configuration. You will probably need to adjust this configuration to your own need. The feature is based on a periodic poll of the stored reminders.

You must use the following target component to use the plug-in in this configuration:

The configuration is applied in extension/webapp/src/main/webapp/WEB-INF/cs-extension/cs/cs-configuration.xml

Explanation:

See the details about the init-params of the component in the following table:

Properties-param Description Property names Description Possible values Default values
job.info save the monitor data periodically jobName The name of job String ReminderJob
groupName The name of group job String CollaborationSuite
job The name of actual job class Class path org.exoplatform.calendar.service.ReminderJob
repeatCount How many times to run this job Long 0, ( use '0' which means 'run forever)
period The time interval (millisecond) between job executions Long 180000
startTime The time the job starts to run Integer +0
endTime The time the job ends to run Integer none

You must use the following target component to use the plug-in in this configuration:

The configuration is applied in extension/webapp/src/main/webapp/WEB-INF/cs-extension/cs/cs-configuration.xml

Explanation:

See the details about the init-params of the component in the following table:

Properties-param Description Property names Description Possible values Default values  
job.info Save the monitor data periodically jobName The name of job String PopupReminderJob  
groupName The name of group job String CollaborationSuite  
job The name of actual job class Class path org.exoplatform.calendar.service.PopupReminderJob  
repeatCount How many times to run this job Long 0, ( use '0' which means 'run forever)  
period The time interval (millisecond) between job executions Long 6000  
startTime The time the job starts to run Long +0  
endTime The time the job ends to run Integer None  
popupreminder.info save the monitor data periodically portalName The name of the portal String portal ‎‏

The configuration of the AddActionsPlugin is found in WEB-INF/cs-extension/cs/webservice/webservice-configuration.xml It is used to register the listener named org.exoplatform.webservice.cs.LastUpdateAction and it is executed basing on eventTypes.

Field name Description String
eventTypes The type of the event addNode,changeProperty
nodeTypes The type of the node exo:calendarEvent
actionClassName The registration class to execute the actions that the plug-in requires org.exoplatform.webservice.cs.LastUpdateAction

The Chat congiguration is applied in /extension/webapp/src/main/webapp/WEB-INF/cs-extension/cs/chat/chat-service-configuration.xml

Explanation:

See the details about the init-params of the component in the following table:

Properties-param Description Property names Description Possible values Default values
job.info Save the monitor data periodically jobName The name of job String messageToHistoricalMessageJob
groupName The name of group name String CollaborationSuite
job The name of actual job class Class path org.exoplatform.services.xmpp.connection.impl.HistoryJob
repeatCount How many times to run this job integer 0 ( use '0' which means 'run forever)
period The time interval (millisecond) between job executions Long 3000
startTime The time the job starts running. Long +0
endTime The time the job ends running. Long none
history.info Save the monitor data periodically logBatchSize The maximum number of messages in the cache are saved once the job runs. Integer 50

Two functions: login and logout of XMPPRestService is responsible for creating a new XMPPSessionImpl and destroying an existed XMPPSessionImpl. They can be called by listeners: AuthenticationLoginListener, AuthenticationLogoutListener or from client(browser) through Rest protocol (jabberLogin, jabberLogout in UIMainChatWindow.js). You must use the same target component for two external component plug-ins:

The Contact Application is configured by three external component plug-ins: NewUserListener, NewMembershipListener and UpdateUserProfileListener. They use the same target component:

The Contact configuration is found in extension/webapp/src/main/webapp/WEB-INF/cs-extension/cs/contact/contact-service-configuration.xml

The Content application such as RSS reader of eXo Collaboration is configured by two external component plug-ins: RSSContentPlugin and DescriptionPlugin Both the external components plug-ins use the same target component:

This content configuration is applied in extension/webapp/src/main/webapp/WEB-INF/cs-extension/cs/content/content-service-configuration.xml

In the Mail application of eXo Collaboration, when a user check messages for one account, the remote mailbox fetch is performed as a background job. Before CS 1.2, the job was continuing until all messages had been retrieved or when the user stopped the check through the UI. Hence, even when a user was not logged in, the background job was continuing. This can be resource intensive for the server if many users have large mailboxes.

Since CS 1.2, we added the capability to halt the background job when the user session terminates (logout or time out). It makes CS more friendly with server resources. If you want to activate this feature, you need to add a bunch of xml congifuration in /extension/webapp/src/main/webapp/WEB-INF/cs-extension/cs/mail/mail-service-configuration.xml:

Explanation:

The Social Integration Configuration is applied in /extension/webapp/src/main/webapp/WEB-INF/cs-extension/cs/social-integration/social-integration-configuration.xml

eXo Collaboration chat services is a Jabber engine powered by Openfire . eXo will delegate the actual Jabber protocol communication to Openfire.

You have full latitude to configure Openfire. There are two possible ways do it :

the admin console : http://localhost:9090/ the openfire.xml file, in $openfirehome/conf/

eXo Collaboration bundle comes with a pre-configured openfire server. It is bundled with some eXo plugins and configurations that allow connectivity with eXo. The key properties for integration are :

eXo provides implementations for these 3 interfaces with ExoAuthProvider, ExoUserProvider, ExoGroupProvider. These implementations are based on eXo REST framework and let you configure the endpoints within the openfire.xml file with additional properties :

Property Description Default value
eXo.env.serverBaseURL It is the base URL of the server. http://localhost:8080/##
eXo.env.restContextName It is the context name of REST Web application . rest
provider.authorizedUser.name username to authenticate to access the HTTP REST service root
provider.authorizedUser.password password matching with provider.authorizeduser.name gtn
exoAuthProvider.authenticationURL URL to authenticate users /organization/authenticate/
exoAuthProvider.authenticationMethod HTTP method used for authentication method POST
exoUserProvider.findUsersURL URL to find all users /organization/xml/user/find-all/
exoUserProvider.findUsersMethod HTTP method used to find all users in the system GET
exoUserProvider.getUsersURL URL to retrieve a range of users /organization/xml/user/view-range/
exoUserProvider.getUsersMethod HTTP method used for user/view-range GET
exoUserProvider.usersCountURL URL to count the number of users /organization/xml/user/count
exoUserProvider.usersCountMethod HTTP method used to count the number of users GET
exoUserProvider.userInfoURL URL to get the information of users /organization/xml/user/info/
exoUserProvider.userInfoMethod HTTP method used to get the information of users GET
exoGroupProvider.groupInfoURL URL to get the information of a user group /organization/xml/group/info/
exoGroupProvider.groupInfoMethod HTTP method used to get the information of a user group GET
exoGroupProvider.getGroupsAllURL URL to view a list of all user groups /organization/xml/group/view-all/
exoGroupProvider.getGroupsAllMethod HTTP method used to view a list of all user groups GET
exoGroupProvider.getGroupsRangeURL URL to list groups in a specific range /organization/xml/group/view-from-to/
exoGroupProvider.getGroupsRangeMethod HTTP method used to list groups in a specific range GET
exoGroupProvider.getGroupsForUserURL URL to list groups to which a user belongs /organization/xml/group/groups-for-user/
exoGroupProvider.getGroupsForUserMethod HTTP method used to list groups to which a user belongs GET
exoGroupProvider.groupsCountURL URL to count the number of groups /organization/xml/group/count
exoGroupProvider.groupsCountMethod HTTP method used to count the number of groups GET

As you can see, the default settings will only work if eXo is deployed on the same host as openfire, on port 8080.

Openfire makes use of several ports for communication.

Interface Port Type Description
All addresses 5222 Client to Server The standard port for clients is to connect to the server. Connection may or may not be encrypted. You can update the security settings for this port.
All addresses 9090 & 9091 Admin Console The port used for respectively the unsecured and secured Openfire Admin Console access.
All addresses 7777 File Transfer Proxy The port used for the proxy service that allows file transfers to occur between two entities on the XMPP network.
All addresses 3478 & 3479 STUN Service The port used for the service that ensures connectivity between entities when behind a NAT.

You can view the table above in http://hostname:9090/index.jsp_ after you are logged in to openfire's web console and also customize those ports by yourself.